R8Sentinel

uiChestDrop

Feb 1st, 2018
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.43 KB | None | 0 0
  1. import uiCommon, snd, chat, app, net, player, item, wndMgr, mouseModule, localeInfo, constInfo, ui, exception, uiinventory
  2.  
  3. class ChestDropWindow(ui.ScriptWindow):
  4. def __init__(self):
  5. ui.ScriptWindow.__init__(self)
  6.  
  7. self.tooltipItem = None
  8.  
  9. self.currentChest = 0
  10. self.currentPage = 1
  11. self.openAmount = 1
  12. self.invItemPos = -1
  13.  
  14. self.__LoadWindow()
  15.  
  16. def __del__(self):
  17. ui.ScriptWindow.__del__(self)
  18.  
  19. def __LoadWindow(self):
  20. try:
  21. PythonScriptLoader = ui.PythonScriptLoader()
  22. PythonScriptLoader.LoadScriptFile(self, "UIScript/chestdropwindow.py")
  23. except:
  24. import exception
  25. exception.Abort("GemShopWindow.__LoadWindow.LoadObject")
  26.  
  27. try:
  28. self.titleBar = self.GetChild("TitleBar")
  29.  
  30. self.openItemSlot = self.GetChild("OpenItemSlot")
  31. self.openCountController = self.GetChild("OpenCountController")
  32. self.openChestButtonSingle = self.GetChild("OpenChestButtonSingle")
  33. self.openChestButtonMultiple = self.GetChild("OpenChestButtonMultiple")
  34.  
  35. self.prevButton = self.GetChild("prev_button")
  36. self.nextButton = self.GetChild("next_button")
  37. self.currentPageBack = self.GetChild("CurrentPageBack")
  38. self.currentPageText = self.GetChild("CurrentPage")
  39. except:
  40. import exception
  41. exception.Abort("GemShopWindow.__LoadWindow.BindObject")
  42.  
  43. self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
  44. self.openCountController.SetEvent(ui.__mem_func__(self.OnChangeOpenAmount))
  45.  
  46. self.openChestButtonSingle.SetEvent(ui.__mem_func__(self.OnClickOpenChest))
  47. self.openChestButtonMultiple.SetEvent(ui.__mem_func__(self.OnClickOpenChest))
  48.  
  49. self.openChestButtonSingle.SetText("Deschide %d cufere" % self.openAmount)
  50. self.openChestButtonMultiple.SetText("Deschide %d cufere" % self.openAmount)
  51.  
  52. self.prevButton.SetEvent(ui.__mem_func__(self.OnClickPrevPage))
  53. self.nextButton.SetEvent(ui.__mem_func__(self.OnClickNextPage))
  54.  
  55. self.currentPageText.SetText(str(self.currentPage))
  56.  
  57. wndItem = ui.GridSlotWindow()
  58. wndItem.SetParent(self)
  59. wndItem.SetPosition(8, 35)
  60. wndItem.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
  61. wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  62. wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  63. wndItem.ArrangeSlot(0, 15, 5, 32, 32, 0, 0)
  64. wndItem.RefreshSlot()
  65. wndItem.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0)
  66. wndItem.Show()
  67.  
  68. self.wndItem = wndItem
  69.  
  70. def Close(self):
  71. self.Hide()
  72.  
  73. def Destroy(self):
  74. self.ClearDictionary()
  75.  
  76. self.tooltipItem = None
  77. self.wndItem = None
  78.  
  79. self.currentChest = 0
  80. self.currentPage = 1
  81. self.openAmount = 1
  82. self.invItemPos = -1
  83.  
  84. def Open(self, invItemPos = -1):
  85. self.currentChest = 0
  86. self.currentPage = 1
  87. self.openAmount = 1
  88.  
  89. self.SetInvItemSlot(invItemPos)
  90.  
  91. self.SetTop()
  92. self.SetCenterPosition()
  93. self.Show()
  94.  
  95. def SetItemToolTip(self, tooltip):
  96. self.tooltipItem = tooltip
  97.  
  98. def OnChangeOpenAmount(self):
  99. openTemp = int(self.openCountController.GetSliderPos() * 10)
  100. if openTemp == 0:
  101. self.openAmount = 1
  102. else:
  103. self.openAmount = openTemp
  104.  
  105. self.openChestButtonSingle.SetText("Deschide %d cufere" % self.openAmount)
  106. self.openChestButtonMultiple.SetText("Deschide %d cufere" % self.openAmount)
  107.  
  108. def OnClickOpenChest(self):
  109. if self.invItemPos == -1:
  110. return
  111.  
  112. itemCount = player.GetItemCount(self.invItemPos)
  113.  
  114. if itemCount >= self.openAmount:
  115. for i in xrange(self.openAmount):
  116. if itemCount == 1:
  117. net.SendItemUsePacket(self.invItemPos)
  118. self.OnPressEscapeKey()
  119. break
  120.  
  121. net.SendItemUsePacket(self.invItemPos)
  122. itemCount = itemCount - 1
  123. else:
  124. for i in xrange(itemCount):
  125. if itemCount == 1:
  126. net.SendItemUsePacket(self.invItemPos)
  127. self.OnPressEscapeKey()
  128. break
  129.  
  130. net.SendItemUsePacket(self.invItemPos)
  131. itemCount = itemCount - 1
  132.  
  133. def OnClickPrevPage(self):
  134. if constInfo.CHEST_DROP_INFO_DATA[self.currentChest].has_key(self.currentPage - 1):
  135. self.currentPage = self.currentPage - 1
  136. self.currentPageText.SetText(str(self.currentPage))
  137. self.RefreshItemSlot()
  138.  
  139. def OnClickNextPage(self):
  140. if constInfo.CHEST_DROP_INFO_DATA[self.currentChest].has_key(self.currentPage + 1):
  141. self.currentPage = self.currentPage + 1
  142. self.currentPageText.SetText(str(self.currentPage))
  143. self.RefreshItemSlot()
  144.  
  145. def EnableMultiPage(self):
  146. self.openChestButtonSingle.Hide()
  147. self.openChestButtonMultiple.Show()
  148.  
  149. self.prevButton.Show()
  150. self.nextButton.Show()
  151. self.currentPageBack.Show()
  152.  
  153. def EnableSinglePage(self):
  154. self.openChestButtonSingle.Show()
  155. self.openChestButtonMultiple.Hide()
  156.  
  157. self.prevButton.Hide()
  158. self.nextButton.Hide()
  159. self.currentPageBack.Hide()
  160.  
  161. def SetInvItemSlot(self, invItemPos):
  162. self.invItemPos = invItemPos
  163.  
  164. itemVnum = player.GetItemIndex(invItemPos)
  165. itemCount = player.GetItemCount(invItemPos)
  166. if itemVnum:
  167. self.openItemSlot.SetItemSlot(0, itemVnum, itemCount)
  168.  
  169. def RefreshItems(self, chestVnum):
  170. if chestVnum:
  171. self.currentChest = chestVnum
  172.  
  173. if constInfo.CHEST_DROP_INFO_DATA[self.currentChest].has_key(2):
  174. self.EnableMultiPage()
  175. else:
  176. self.EnableSinglePage()
  177.  
  178. self.RefreshItemSlot()
  179.  
  180. def RefreshItemSlot(self):
  181. for i in xrange(15 * 5):
  182. self.wndItem.ClearSlot(i)
  183.  
  184. if not constInfo.CHEST_DROP_INFO_DATA.has_key(self.currentChest):
  185. return
  186.  
  187. if not constInfo.CHEST_DROP_INFO_DATA[self.currentChest].has_key(self.currentPage):
  188. return
  189.  
  190. for key, value in constInfo.CHEST_DROP_INFO_DATA[self.currentChest][self.currentPage].iteritems():
  191. itemVnum = value[0]
  192. itemCount = value[1]
  193.  
  194. if itemCount <= 1:
  195. itemCount = 0
  196.  
  197. self.wndItem.SetItemSlot(key, itemVnum, itemCount)
  198.  
  199. wndMgr.RefreshSlot(self.wndItem.GetWindowHandle())
  200.  
  201. def OverInItem(self, slotIndex):
  202. if mouseModule.mouseController.isAttached():
  203. return
  204.  
  205. if not constInfo.CHEST_DROP_INFO_DATA.has_key(self.currentChest):
  206. return
  207.  
  208. if not constInfo.CHEST_DROP_INFO_DATA[self.currentChest].has_key(self.currentPage):
  209. return
  210.  
  211. if 0 != self.tooltipItem:
  212. self.tooltipItem.SetItemToolTip(constInfo.CHEST_DROP_INFO_DATA[self.currentChest][self.currentPage][slotIndex][0])
  213.  
  214. def OverOutItem(self):
  215. if 0 != self.tooltipItem:
  216. self.tooltipItem.HideToolTip()
  217.  
  218. def OnPressEscapeKey(self):
  219. self.Close()
  220. return True
Advertisement
Add Comment
Please, Sign In to add comment