Guest User

Untitled

a guest
Dec 29th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 19.55 KB | None | 0 0
  1. import ui
  2. import net
  3. import mouseModule
  4. import player
  5. import snd
  6. import localeInfo
  7. import item
  8. import grp
  9. import uiScriptLocale
  10. import uiToolTip
  11. import app
  12.  
  13. class CubeResultWindow(ui.ScriptWindow):
  14.     def __init__(self):
  15.         ui.ScriptWindow.__init__(self)
  16.  
  17.     def __del__(self):
  18.         ui.ScriptWindow.__del__(self)
  19.  
  20.     def LoadWindow(self):
  21.         try:
  22.             pyScrLoader = ui.PythonScriptLoader()
  23.             pyScrLoader.LoadScriptFile(self, "UIScript/CubeResultWindow.py")
  24.         except:
  25.             import exception
  26.             exception.Abort("CubeResultWindow.LoadDialog.LoadScript")
  27.  
  28.         try:
  29.             GetObject=self.GetChild
  30.             self.titleBar = GetObject("TitleBar")
  31.             self.btnClose = GetObject("CloseButton")
  32.             self.cubeSlot = GetObject("CubeSlot")
  33.  
  34.         except:
  35.             import exception
  36.             exception.Abort("CubeWindow.LoadDialog.BindObject")
  37.  
  38.         self.cubeSlot.SetOverInItemEvent(ui.__mem_func__(self.__OnOverInItem))
  39.         self.cubeSlot.SetOverOutItemEvent(ui.__mem_func__(self.__OnOverOutItem))
  40.         self.titleBar.SetCloseEvent(ui.__mem_func__(self.__OnCloseButtonClick))
  41.         self.btnClose.SetEvent(ui.__mem_func__(self.__OnCloseButtonClick))
  42.         self.itemVnum = 0
  43.  
  44.     def Destroy(self):
  45.         self.ClearDictionary()
  46.         self.titleBar = None
  47.         self.btnClose = None
  48.         self.cubeSlot = None
  49.         self.tooltipItem = None
  50.         self.itemVnum = 0
  51.  
  52.     def SetItemToolTip(self, tooltipItem):
  53.         self.tooltipItem = tooltipItem
  54.  
  55.     def SetCubeResultItem(self, itemVnum, count):
  56.         self.itemVnum = itemVnum
  57.  
  58.         if 0 == count:
  59.             count = 1
  60.  
  61.         self.cubeSlot.SetItemSlot(0, itemVnum, count)
  62.  
  63.     def Open(self):
  64.         self.Show()
  65.  
  66.     def Close(self):
  67.         self.Hide()
  68.  
  69.     def __OnCloseButtonClick(self):
  70.         self.Close()
  71.  
  72.     def __OnOverInItem(self, slotIndex):
  73.         if self.tooltipItem:
  74.             if 0 != self.itemVnum:
  75.                 self.tooltipItem.SetItemToolTip(self.itemVnum)
  76.  
  77.     def __OnOverOutItem(self):
  78.         if self.tooltipItem:
  79.             self.tooltipItem.HideToolTip()
  80.  
  81.     def OnPressEscapeKey(self):
  82.         if 0 != self.eventClose:
  83.             self.eventClose()
  84.         return TRUE
  85.  
  86.  
  87. class CubeWindow(ui.ScriptWindow):
  88.  
  89.     def __init__(self):
  90.         ui.ScriptWindow.__init__(self)
  91.         self.xShopStart = 0
  92.         self.yShopStart = 0
  93.         self.isUsable   = FALSE
  94.  
  95.     def __del__(self):
  96.         ui.ScriptWindow.__del__(self)
  97.  
  98.     def LoadWindow(self):
  99.         try:
  100.             pyScrLoader = ui.PythonScriptLoader()
  101.             pyScrLoader.LoadScriptFile(self, "UIScript/CubeWindow.py")
  102.            
  103.         except:
  104.             import exception
  105.             exception.Abort("CubeWindow.LoadDialog.LoadScript")
  106.  
  107.         try:
  108.             GetObject=self.GetChild
  109.             if localeInfo.IsARABIC():
  110.                 self.board = GetObject("board")
  111.                 self.board.SetScale(-1.0, 1.0)
  112.                 self.board.SetRenderingRect(-1.0, 0.0, 1.0, 0.0)
  113.                
  114.             self.titleBar = GetObject("TitleBar")
  115.             self.btnAccept = GetObject("AcceptButton")
  116.             self.btnCancel = GetObject("CancelButton")
  117.             self.cubeSlot = GetObject("CubeSlot")
  118.             self.needMoney = GetObject("NeedMoney")
  119.             self.contentScrollbar = GetObject("contentScrollbar")
  120.             self.resultSlots = [GetObject("result1"), GetObject("result2"), GetObject("result3")]
  121.             self.materialSlots = [
  122.                 [GetObject("material11"), GetObject("material12"), GetObject("material13"), GetObject("material14"), GetObject("material15")],
  123.                 [GetObject("material21"), GetObject("material22"), GetObject("material23"), GetObject("material24"), GetObject("material25")],
  124.                 [GetObject("material31"), GetObject("material32"), GetObject("material33"), GetObject("material34"), GetObject("material35")],
  125.             ]
  126.  
  127.  
  128.             row = 0
  129.             for materialRow in self.materialSlots:
  130.                 j = 0
  131.                 for material in materialRow:
  132.                     material.SetOverInItemEvent(lambda trash = 0, rowIndex = row,  col = j: self.__OverInMaterialSlot(trash, rowIndex, col))
  133.                     material.SetSelectItemSlotEvent(lambda trash = 0, rowIndex = row,  col = j: self.__OnSelectMaterialSlot(trash, rowIndex, col))
  134.                     material.SetOverOutItemEvent(lambda : self.__OverOutMaterialSlot())
  135.                     j = j + 1
  136.                 row = row + 1
  137.  
  138.             row = 0
  139.             for resultSlot in self.resultSlots:
  140.                 resultSlot.SetOverInItemEvent(lambda trash = 0, rowIndex = row: self.__OverInCubeResultSlot(trash, rowIndex))
  141.                 resultSlot.SetOverOutItemEvent(lambda : self.__OverOutMaterialSlot())
  142.                 row = row + 1
  143.  
  144.  
  145.  
  146.         except:
  147.             import exception
  148.             exception.Abort("CubeWindow.LoadDialog.BindObject")
  149.  
  150.         self.contentScrollbar.SetScrollStep(0.15)
  151.         self.contentScrollbar.SetScrollEvent(ui.__mem_func__(self.OnScrollResultList))
  152.         self.cubeSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.__OnSelectEmptySlot))
  153.         self.cubeSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__OnSelectItemSlot))
  154.         self.cubeSlot.SetOverInItemEvent(ui.__mem_func__(self.__OnOverInItem))
  155.         self.cubeSlot.SetOverOutItemEvent(ui.__mem_func__(self.__OnOverOutItem))
  156.        
  157.         self.titleBar.SetCloseEvent(ui.__mem_func__(self.__OnCloseButtonClick))
  158.         self.btnCancel.SetEvent(ui.__mem_func__(self.__OnCloseButtonClick))
  159.         self.btnAccept.SetEvent(ui.__mem_func__(self.__OnAcceptButtonClick))
  160.  
  161.         self.cubeItemInfo = {}
  162.         self.cubeResultInfos = []
  163.         self.cubeMaterialInfos = {}
  164.  
  165.         self.tooltipItem = None
  166.  
  167.         self.firstSlotIndex = 0
  168.         self.RESULT_SLOT_COUNT = len(self.resultSlots)
  169.         self.SLOT_SIZEX = 32
  170.         self.SLOT_SIZEY = 32
  171.         self.CUBE_SLOT_COUNTX = 8
  172.         self.CUBE_SLOT_COUNTY = 3
  173.  
  174.     def SetItemToolTip(self, itemTooltip):
  175.         self.tooltipItem = itemTooltip
  176.  
  177.     def GetResultCount(self):
  178.         return len(self.cubeResultInfos)
  179.  
  180.     def OnScrollResultList(self):
  181.         count = self.GetResultCount()
  182.         scrollLineCount = max(0, count - self.RESULT_SLOT_COUNT)
  183.         startIndex = int(scrollLineCount * self.contentScrollbar.GetPos())
  184.  
  185.         if startIndex != self.firstSlotIndex:
  186.             self.firstSlotIndex = startIndex
  187.             self.Refresh()
  188.  
  189.     def AddCubeResultItem(self, itemVnum, count):
  190.         self.cubeResultInfos.append((itemVnum, count))
  191.         #self.Refresh()
  192.  
  193.     def AddMaterialInfo(self, itemIndex, orderIndex, itemVnum, itemCount):
  194.         if itemIndex not in self.cubeMaterialInfos:
  195.             self.cubeMaterialInfos[itemIndex] = [[], [], [], [], []]
  196.  
  197.         self.cubeMaterialInfos[itemIndex][orderIndex].append((itemVnum, itemCount))
  198.         #print "AddMaterialInfo", itemIndex, orderIndex, itemVnum, itemCount, self.cubeMaterialInfos
  199.  
  200.     def ClearCubeResultItem(self):
  201.         self.cubeResultInfos = []
  202.         self.Refresh()
  203.  
  204.     def Destroy(self):
  205.         self.ClearDictionary()
  206.        
  207.         self.titleBar = None
  208.         self.btnAccept = None
  209.         self.btnCancel = None
  210.         self.cubeSlot = None
  211.         self.tooltipItem = None
  212.         self.needMoney = None
  213.  
  214.     def __OverOutMaterialSlot(self):
  215.         self.tooltipItem.SetCannotUseItemForceSetDisableColor(TRUE)
  216.         self.tooltipItem.HideToolTip()
  217.  
  218.     def __OverInCubeResultSlot(self, trash, resultIndex):
  219.         self.tooltipItem.ClearToolTip()
  220.         self.tooltipItem.SetCannotUseItemForceSetDisableColor(TRUE)
  221.  
  222.         metinSlot = []
  223.         for i in xrange(player.METIN_SOCKET_MAX_NUM):
  224.             metinSlot.append(0)
  225.         attrSlot = []
  226.         for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
  227.             attrSlot.append((0, 0))
  228.  
  229.         #print "resultIndex, firstSlotIndex", resultIndex, self.firstSlotIndex
  230.  
  231.         resultIndex = resultIndex + self.firstSlotIndex
  232.         itemVnum, itemCount = self.cubeResultInfos[resultIndex]
  233.  
  234.         self.tooltipItem.AddItemData(itemVnum, metinSlot, attrSlot)
  235.        
  236.  
  237.     # Àç·á¸¦ Ŭ¸¯Çϸé Àκ¥Å丮¿¡¼­ ÇØ´ç ¾ÆÀÌÅÛÀ» ã¾Æ¼­ µî·ÏÇÔ.
  238.     def __OnSelectMaterialSlot(self, trash, resultIndex, materialIndex):
  239.         resultIndex = resultIndex + self.firstSlotIndex
  240.         if resultIndex not in self.cubeMaterialInfos:
  241.             return
  242.  
  243.         materialInfo = self.cubeMaterialInfos[resultIndex]
  244.         materialCount = len(materialInfo[materialIndex])
  245.  
  246.         if 0 == materialCount:
  247.             return
  248.  
  249.         for itemVnum, itemCount in materialInfo[materialIndex]:
  250.             bAddedNow = FALSE   # À̹ø¿¡ Ŭ¸¯ÇÔÀ¸·Î½á ¾ÆÀÌÅÛÀÌ Ãß°¡µÇ¾ú³ª?
  251.             item.SelectItem(itemVnum)
  252.             itemSizeX, itemSizeY = item.GetItemSize()
  253.  
  254.             # Á¦Á¶¿¡ ÇÊ¿äÇÑ ¸¸Å­ÀÇ Àç·á¸¦ °¡Áö°í Àִ°¡?
  255.             if player.GetItemCountByVnum(itemVnum) >= itemCount:
  256.                 for i in xrange(player.INVENTORY_SLOT_COUNT):
  257.                     vnum = player.GetItemIndex(i)
  258.                     count= player.GetItemCount(i)
  259.  
  260.                     if vnum == itemVnum and count >= itemCount:
  261.                         # ÀÌ¹Ì °°Àº ¾ÆÀÌÅÛÀÌ µî·ÏµÇ¾î ÀÖ´ÂÁö °Ë»çÇϰí, ¾ø´Ù¸é Ãß°¡ÇÔ
  262.                         bAlreadyExists = FALSE
  263.                         for slotPos, invenPos in self.cubeItemInfo.items():
  264.                             if invenPos == i:
  265.                                 bAlreadyExists = TRUE
  266.  
  267.                         if TRUE == bAlreadyExists:
  268.                             continue #continue inventory iterating
  269.  
  270.                         #print "Cube Status : ", self.cubeItemInfo
  271.  
  272.                         # ¿©±â ÁøÀÔÇϸé Å¥ºê¿¡ µî·ÏµÇÁö ¾ÊÀº ¾ÆÀÌÅÛÀ̹ǷÎ, ºó Å¥ºê ½½·Ô¿¡ ÇØ´ç ¾ÆÀÌÅÛ Ãß°¡
  273.                         bCanAddSlot = FALSE
  274.                         for slotPos in xrange(self.cubeSlot.GetSlotCount()):
  275.                             # ÀÌ Å¥ºê ½½·ÔÀÌ ºñ¾îÀִ°¡?
  276.                             if not slotPos in self.cubeItemInfo:
  277.                                 upperColumnItemSizeY = -1
  278.                                 currentSlotLine = int(slotPos / self.CUBE_SLOT_COUNTX)
  279.                                 cubeColumn = int(slotPos % self.CUBE_SLOT_COUNTX)
  280.  
  281.  
  282.                                 # ¸¸¾à Å¥ºê¿¡ 3Ä­Â¥¸® ¾ÆÀÌÅÛÀÌ µî·ÏµÇ¾î ÀÖ´Ù¸é, ÀÌ ¿­(column)Àº ´õ ÀÌ»ó º¼ °Íµµ ¾øÀÌ ³Ñ¾î°£´Ù
  283.                                 if cubeColumn in self.cubeItemInfo:
  284.                                     columnVNUM = player.GetItemIndex(self.cubeItemInfo[cubeColumn])
  285.                                     item.SelectItem(columnVNUM)
  286.                                     columnItemSizeX, columnItemSizeY = item.GetItemSize()
  287.  
  288.                                     if 3 == columnItemSizeY:
  289.                                         continue #continue cube slot iterating
  290.  
  291.                                 if 0 < currentSlotLine and slotPos - self.CUBE_SLOT_COUNTX in self.cubeItemInfo:
  292.                                     upperColumnVNUM = player.GetItemIndex(self.cubeItemInfo[slotPos - self.CUBE_SLOT_COUNTX])
  293.                                     item.SelectItem(upperColumnVNUM)
  294.                                     columnItemSizeX, upperColumnItemSizeY = item.GetItemSize()
  295.                                
  296.                                 # 1Ä­Â¥¸® ¾ÆÀÌÅÛÀº ¹Ù·Î À­ÁÙ¿¡ ÇÑÄ­Â¥¸® ¾ÆÀÌÅÛÀÌ ÀÖ¾î¾ß ÇÔ
  297.                                 if 1 == itemSizeY:
  298.                                     if 0 == currentSlotLine:
  299.                                         bCanAddSlot = TRUE
  300.                                     elif 1 == currentSlotLine and 1 == upperColumnItemSizeY:
  301.                                         bCanAddSlot = TRUE
  302.                                     elif 2 == currentSlotLine:
  303.                                         bCanAddSlot = TRUE
  304.                                 # 2Ä­Â¥¸® ¾ÆÀÌÅÛÀº À§¾Æ·¡°¡ ºñ¾îÀÖ¾î¾ß ÇÔ
  305.                                 elif 2 == itemSizeY:
  306.                                     if 0 == currentSlotLine and not cubeColumn + self.CUBE_SLOT_COUNTX in self.cubeItemInfo:
  307.                                         bCanAddSlot = TRUE
  308.                                     elif 1 == currentSlotLine and 1 == upperColumnItemSizeY and not cubeColumn + (self.CUBE_SLOT_COUNTX * 2) in self.cubeItemInfo:
  309.                                         bCanAddSlot = TRUE
  310.                                 # 3Ä­Â¥¸® ¾ÆÀÌÅÛÀº ÇØ´ç Column ÀÚü°¡ ¸ðµÎ ºñ¾îÀÖ¾î¾ß ÇÔ
  311.                                 else:
  312.                                     if not cubeColumn in self.cubeItemInfo and not cubeColumn + self.CUBE_SLOT_COUNTX in self.cubeItemInfo and not cubeColumn + (self.CUBE_SLOT_COUNTX * 2) in self.cubeItemInfo:
  313.                                         bCanAddSlot = TRUE
  314.  
  315.                                 if TRUE == bCanAddSlot:
  316.                                     self.cubeItemInfo[slotPos] = [ i, player.INVENTORY ]
  317.                                     self.cubeSlot.SetItemSlot(slotPos, vnum, count)
  318.                                     net.SendChatPacket("/cube add %d %d %d" % (slotPos, i, player.INVENTORY))
  319.                                    
  320.                                     bAddedNow = TRUE
  321.  
  322.                             if TRUE == bAddedNow:
  323.                                 break #break cube slot iterating
  324.  
  325.                         if TRUE == bAddedNow:
  326.                             break #break inventory iterating
  327.  
  328.                 if TRUE == bAddedNow:
  329.                     break #break material iterating
  330.  
  331.                
  332.  
  333.     def __OverInMaterialSlot(self, trash, resultIndex, col):
  334.         self.tooltipItem.ClearToolTip()
  335.         self.tooltipItem.SetCannotUseItemForceSetDisableColor(FALSE)
  336.  
  337.         resultIndex = resultIndex + self.firstSlotIndex
  338.  
  339.         if resultIndex not in self.cubeMaterialInfos:
  340.             return
  341.  
  342.         i = 0
  343.         materialInfo = self.cubeMaterialInfos[resultIndex]
  344.         materialCount = len(materialInfo[col])
  345.  
  346.         for itemVnum, count in materialInfo[col]:
  347.             item.SelectItem(itemVnum)
  348.             if player.GetItemCountByVnum(itemVnum) >= count:
  349.                 self.tooltipItem.AppendTextLine("%s" % (item.GetItemName()), grp.GenerateColor(0.5411, 0.7254, 0.5568, 1.0)).SetFeather()
  350.             else:
  351.                 self.tooltipItem.AppendTextLine("%s" % (item.GetItemName()), grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0)).SetFeather()
  352.            
  353.             if i < materialCount - 1:
  354.                 self.tooltipItem.AppendTextLine(uiScriptLocale.CUBE_REQUIRE_MATERIAL_OR)
  355.                
  356.             i = i + 1
  357.  
  358.         self.tooltipItem.Show()
  359.    
  360.  
  361.     def Open(self):
  362.         self.cubeItemInfo = {}
  363.         self.cubeResultInfos = []
  364.         self.cubeMaterialInfos = {}
  365.  
  366.         self.Refresh()
  367.         self.Show()
  368.  
  369.         self.isUsable   = TRUE
  370.         (self.xShopStart, self.yShopStart, z) = player.GetMainCharacterPosition()
  371.  
  372.     def UpdateInfo(self, gold, itemVnum, count):
  373.         if self.needMoney:
  374.             self.needMoney.SetText(localeInfo.NumberToMoneyString(gold))
  375.  
  376.         self.Refresh()
  377.  
  378.     def OnPressEscapeKey(self):
  379.         self.__OnCloseButtonClick()
  380.         return TRUE
  381.    
  382.     def Close(self):
  383.         if self.tooltipItem:
  384.             self.tooltipItem.HideToolTip()
  385.  
  386.         self.Hide()
  387.         self.cubeItemInfo = {}
  388.         self.cubeMaterialInfos = {}
  389.         self.cubeResultInfos = {}
  390.         self.firstSlotIndex = 0
  391.         self.contentScrollbar.SetPos(0)
  392.  
  393.         if self.needMoney:
  394.             self.needMoney.SetText("0")    
  395.  
  396.     def Clear(self):
  397.         self.Refresh()
  398.  
  399.     def Refresh(self):
  400.         for slotPos in xrange(self.cubeSlot.GetSlotCount()):
  401.  
  402.             if not slotPos in self.cubeItemInfo:
  403.                 self.cubeSlot.ClearSlot(slotPos)
  404.                 continue
  405.  
  406.             if app.ENABLE_SPECIAL_STORAGE:
  407.                 invenPos = int(self.cubeItemInfo[slotPos][0])
  408.                 invenType = player.SlotTypeToInvenType(self.cubeItemInfo[slotPos][1])
  409.            
  410.                 itemIndex = player.GetItemIndex(invenType, invenPos)
  411.                 itemCount = player.GetItemCount(invenType, invenPos)
  412.                
  413.                 if itemCount > 0:
  414.                     self.cubeSlot.SetItemSlot(slotPos, itemIndex, itemCount)
  415.                 else:
  416.                     del self.cubeItemInfo[slotPos]
  417.                     self.cubeSlot.ClearSlot(slotPos)
  418.             else:
  419.                 invenPos = self.cubeItemInfo[slotPos][0]
  420.                
  421.                 itemCount = player.GetItemCount(invenPos)
  422.                
  423.                 if itemCount > 0:
  424.                     self.cubeSlot.SetItemSlot(slotPos, player.GetItemIndex(invenPos), itemCount)
  425.                 else:
  426.                     del self.cubeItemInfo[slotPos]
  427.                     self.cubeSlot.ClearSlot(slotPos)
  428.  
  429.         i = 0
  430.         for itemVnum, count in self.cubeResultInfos[self.firstSlotIndex:]:
  431.             currentSlot = self.resultSlots[i]
  432.  
  433.             item.SelectItem(itemVnum)
  434.            
  435.             currentSlot.SetItemSlot(0, itemVnum, count)
  436.             currentSlot.Show()
  437.  
  438.             # Center Align
  439.             item.SelectItem(itemVnum)
  440.             sizeX, sizeY = item.GetItemSize()
  441.             localX, localY = currentSlot.GetLocalPosition()
  442.  
  443.             currentSlot.SetSize(self.SLOT_SIZEX, self.SLOT_SIZEY * sizeY)
  444.  
  445.             adjustLocalY = 0
  446.             if sizeY < 3:
  447.                 adjustLocalY = int(32 / sizeY)
  448.  
  449.             currentSlot.SetPosition(localX, 0 + adjustLocalY)
  450.  
  451.             i = i + 1
  452.             if 3 <= i:
  453.                 break
  454.  
  455.         #print "self.cubeMaterialInfos : ", self.cubeMaterialInfos
  456.         if self.firstSlotIndex in self.cubeMaterialInfos:
  457.             for i in xrange(self.RESULT_SLOT_COUNT):
  458.                 materialList = self.cubeMaterialInfos[self.firstSlotIndex + i]
  459.                 #print "Refresh ::: ", materialList
  460.                 j = 0
  461.                 for materialInfo in materialList:
  462.                     if 0 < len(materialInfo):
  463.                         currentSlot = self.materialSlots[i][j]
  464.                         itemVnum, itemCount = materialInfo[0]
  465.                         currentSlot.SetItemSlot(0, itemVnum, itemCount)
  466.                         j = j + 1
  467.  
  468.                         # Center Align
  469.                         item.SelectItem(itemVnum)
  470.                         sizeX, sizeY = item.GetItemSize()
  471.                         localX, localY = currentSlot.GetLocalPosition()
  472.  
  473.                         currentSlot.SetSize(self.SLOT_SIZEX, self.SLOT_SIZEY * sizeY)
  474.  
  475.                         adjustLocalY = 0
  476.                         if sizeY < 3:
  477.                             adjustLocalY = int(32 / sizeY)
  478.  
  479.                         currentSlot.SetPosition(localX, 0 + adjustLocalY)
  480.  
  481.                 for k in xrange(5):
  482.                     if k >= j:
  483.                         self.materialSlots[i][k].ClearSlot(0)
  484.  
  485.                 if self.RESULT_SLOT_COUNT <= i:
  486.                     break
  487.  
  488.         self.cubeSlot.RefreshSlot()
  489.  
  490.     def __OnCloseButtonClick(self):
  491.         if self.isUsable:
  492.             self.isUsable = FALSE
  493.  
  494.             print "Å¥ºê ´Ý±â"
  495.             net.SendChatPacket("/cube close")
  496.  
  497.         self.Close()
  498.  
  499.     def __OnAcceptButtonClick(self):
  500.         if len(self.cubeItemInfo) == 0:
  501.             "ºó Å¥ºê"
  502.             return
  503.        
  504.         print "Å¥ºê Á¦ÀÛ ½ÃÀÛ"     
  505.         #for invenPos in self.cubeItemInfo.values():
  506.         #   net.SendChatPacket("/cube add " + str(invenPos))
  507.         net.SendChatPacket("/cube make")           
  508.        
  509.     def __OnSelectEmptySlot(self, selectedSlotPos):
  510.  
  511.         isAttached = mouseModule.mouseController.isAttached()
  512.         if isAttached:
  513.             attachedSlotType = mouseModule.mouseController.GetAttachedType()
  514.             attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  515.             mouseModule.mouseController.DeattachObject()
  516.  
  517.             if app.ENABLE_SPECIAL_STORAGE:
  518.                 if player.SLOT_TYPE_INVENTORY != attachedSlotType and\
  519.                     player.SLOT_TYPE_UPGRADE_INVENTORY != attachedSlotType and\
  520.                     player.SLOT_TYPE_BOOK_INVENTORY != attachedSlotType and\
  521.                     player.SLOT_TYPE_STONE_INVENTORY != attachedSlotType:
  522.                     return
  523.             else:
  524.                 if player.SLOT_TYPE_INVENTORY != attachedSlotType:
  525.                     return
  526.  
  527.             for slotPos, invenPos in self.cubeItemInfo.items():
  528.                 if invenPos == attachedSlotPos:
  529.                     del self.cubeItemInfo[slotPos]
  530.            
  531.             if app.ENABLE_SPECIAL_STORAGE:
  532.                 self.cubeItemInfo[selectedSlotPos] = [attachedSlotPos, attachedSlotType]
  533.                 net.SendChatPacket("/cube add %d %d %d" % (selectedSlotPos, attachedSlotPos, player.SlotTypeToInvenType(attachedSlotType)))
  534.             else:
  535.                 self.cubeItemInfo[selectedSlotPos] = attachedSlotPos
  536.                 net.SendChatPacket("/cube add %d %d" % (selectedSlotPos, attachedSlotPos))
  537.  
  538.             self.Refresh()
  539.  
  540.     def __OnSelectItemSlot(self, selectedSlotPos):
  541.  
  542.         isAttached = mouseModule.mouseController.isAttached()
  543.         if isAttached:
  544.             snd.PlaySound("sound/ui/loginfail.wav")
  545.             mouseModule.mouseController.DeattachObject()
  546.  
  547.         else:
  548.             if not selectedSlotPos in self.cubeItemInfo:
  549.                 return
  550.  
  551.             snd.PlaySound("sound/ui/drop.wav")
  552.  
  553.             net.SendChatPacket("/cube del %d " % selectedSlotPos)
  554.             del self.cubeItemInfo[selectedSlotPos]
  555.  
  556.             self.Refresh()
  557.  
  558.     def __OnOverInItem(self, slotIndex):
  559.         if self.tooltipItem:
  560.             if self.cubeItemInfo.has_key(slotIndex):
  561.                 if app.ENABLE_SPECIAL_STORAGE:
  562.                     self.tooltipItem.SetInventoryItem(self.cubeItemInfo[slotIndex][0])
  563.  
  564.     def __OnOverOutItem(self):
  565.         if self.tooltipItem:
  566.             self.tooltipItem.HideToolTip()
  567.  
  568.     def OnUpdate(self):
  569.         USE_SHOP_LIMIT_RANGE = 1000
  570.  
  571.         (x, y, z) = player.GetMainCharacterPosition()
  572.         if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE:
  573.             self.__OnCloseButtonClick()
  574.  
  575. if __name__ == "__main__":
  576.  
  577.     import app
  578.     import wndMgr
  579.     import systemSetting
  580.     import mouseModule
  581.     import grp
  582.     import ui
  583.     import uiToolTip
  584.     import localeInfo
  585.  
  586.     app.SetMouseHandler(mouseModule.mouseController)
  587.     app.SetHairColorEnable(TRUE)
  588.     wndMgr.SetMouseHandler(mouseModule.mouseController)
  589.     wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())
  590.     app.Create(localeInfo.APP_TITLE, systemSetting.GetWidth(), systemSetting.GetHeight(), 1)
  591.     mouseModule.mouseController.Create()
  592.  
  593.     class TestGame(ui.Window):
  594.         def __init__(self):
  595.             ui.Window.__init__(self)
  596.  
  597.             localeInfo.LoadLocaleData()
  598.  
  599.             self.tooltipItem = uiToolTip.ItemToolTip()
  600.             self.tooltipItem.Hide()
  601.  
  602.             self.cubeWindow = CubeWindow()
  603.             self.cubeWindow.LoadWindow()
  604.             self.cubeWindow.SetItemToolTip(self.tooltipItem)
  605.             self.cubeWindow.Open()
  606.  
  607.             self.cubeResultWindow = CubeResultWindow()
  608.             self.cubeResultWindow.LoadWindow()
  609.             self.cubeResultWindow.SetItemToolTip(self.tooltipItem)
  610.             self.cubeResultWindow.SetCubeResultItem(27001, 1)
  611.             self.cubeResultWindow.Open()
  612.  
  613.         def __del__(self):
  614.             ui.Window.__del__(self)
  615.  
  616.         def OnUpdate(self):
  617.             app.UpdateGame()
  618.  
  619.         def OnRender(self):
  620.             app.RenderGame()
  621.             grp.PopState()
  622.             grp.SetInterfaceRenderState()
  623.  
  624.     game = TestGame()
  625.     game.SetSize(systemSetting.GetWidth(), systemSetting.GetHeight())
  626.     game.Show()
  627.  
  628.     app.Loop()
Advertisement
Add Comment
Please, Sign In to add comment