Advertisement
Guest User

Untitled

a guest
Sep 14th, 2020
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. import ui
  2. import player
  3. import item
  4. import wndMgr
  5. import net
  6.  
  7. class SelectItemWindow(ui.ScriptWindow):
  8.  
  9. def __init__(self):
  10. ui.ScriptWindow.__init__(self)
  11.  
  12. self.tooltipItem = None
  13. self.inventorySlotPosDict = {}
  14.  
  15. self.LoadWindow()
  16.  
  17. def __del__(self):
  18. ui.ScriptWindow.__del__(self)
  19.  
  20. def LoadWindow(self):
  21. try:
  22. PythonScriptLoader = ui.PythonScriptLoader()
  23. PythonScriptLoader.LoadScriptFile(self, "UIScript/selectitemwindow.py")
  24. except:
  25. import exception
  26. exception.Abort("ItemSelectWindow.LoadDialog.LoadObject")
  27.  
  28. try:
  29. GetObject = self.GetChild
  30. self.board = GetObject("board")
  31. self.titleBar = GetObject("TitleBar")
  32. self.itemSlot = GetObject("ItemSlot")
  33. self.btnExit = GetObject("ExitButton")
  34. except:
  35. import exception
  36. exception.Abort("ItemSelectWindow.LoadDialog.BindObject")
  37.  
  38. self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
  39. self.btnExit.SetEvent(ui.__mem_func__(self.Close))
  40. self.itemSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
  41. self.itemSlot.SAFE_SetButtonEvent("LEFT", "EXIST", self.SelectItemSlot)
  42. self.itemSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  43. self.itemSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  44.  
  45. def Open(self):
  46. self.RefreshSlot()
  47. self.Show()
  48.  
  49. def Close(self):
  50. wndMgr.OnceIgnoreMouseLeftButtonUpEvent()
  51. net.SendSelectItemPacket(0)
  52. self.Hide()
  53.  
  54. def SetItemToolTip(self, tooltipItem):
  55. self.tooltipItem = tooltipItem
  56.  
  57. def SelectItemSlot(self, slotPos):
  58. wndMgr.OnceIgnoreMouseLeftButtonUpEvent()
  59. inventorySlotPos = self.inventorySlotPosDict[slotPos]
  60. net.SendSelectItemPacket(inventorySlotPos)
  61. self.Hide()
  62.  
  63. def SetTableSize(self, size):
  64.  
  65. SLOT_X_COUNT = 5
  66. self.itemSlot.ArrangeSlot(0, SLOT_X_COUNT, size, 32, 32, 0, 0)
  67. self.itemSlot.RefreshSlot()
  68. self.itemSlot.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0)
  69.  
  70. self.board.SetSize(self.board.GetWidth(), 76 + 32*size)
  71. self.SetSize(self.board.GetWidth(), 76 + 32*size)
  72. self.UpdateRect()
  73.  
  74. def RefreshSlot(self):
  75.  
  76. slotPos = 0
  77. self.inventorySlotPosDict = {}
  78.  
  79. getItemVNum=player.GetItemIndex
  80. getItemCount=player.GetItemCount
  81. setItemVNum=self.itemSlot.SetItemSlot
  82.  
  83. for i in xrange(player.INVENTORY_PAGE_SIZE*2):
  84. slotNumber = i
  85.  
  86. itemVNum = getItemVNum(slotNumber)
  87. if 0 == itemVNum:
  88. continue
  89.  
  90. if not item.IsMetin(itemVNum):
  91. continue
  92.  
  93. itemGrade = player.GetItemGrade(slotNumber)
  94. if itemGrade > 2:
  95. continue
  96.  
  97. self.inventorySlotPosDict[slotPos] = i
  98.  
  99. slotPos += 1
  100.  
  101. if slotPos > 54:
  102. break
  103.  
  104. itemCount = len(self.inventorySlotPosDict)
  105. if itemCount < 15:
  106. self.SetTableSize(3)
  107.  
  108. else:
  109. lineCount = 3
  110. lineCount += (itemCount - 15) / 5
  111. if itemCount % 5:
  112. lineCount += 1
  113. self.SetTableSize(lineCount)
  114.  
  115. for selectWndPos, inventoryPos in self.inventorySlotPosDict.items():
  116. itemVNum = getItemVNum(inventoryPos)
  117. itemCount = getItemCount(inventoryPos)
  118.  
  119. if itemCount <= 1:
  120. itemCount = 0
  121.  
  122. setItemVNum(selectWndPos, itemVNum, itemCount)
  123.  
  124. self.itemSlot.RefreshSlot()
  125.  
  126. def OverOutItem(self):
  127. if None != self.tooltipItem:
  128. self.tooltipItem.HideToolTip()
  129.  
  130. def OverInItem(self, slotIndex):
  131. if None != self.tooltipItem:
  132. inventorySlotPos = self.inventorySlotPosDict[slotIndex]
  133. self.tooltipItem.SetInventoryItem(inventorySlotPos)
  134.  
  135.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement