Advertisement
Guest User

Untitled

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