RaffaeL_RsK

uicube.py

Aug 25th, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 18.19 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()
Add Comment
Please, Sign In to add comment