Advertisement
Guest User

Untitled

a guest
Aug 27th, 2021
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.86 KB | None | 0 0
  1. import app, dbg, net, player, grp, wndMgr, item, ime, chat
  2. import ui, constInfo, uiScriptLocale, uiToolTip, uiCommon, localeInfo, uiUtils, skill
  3. SKILLS=[1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 122, 123, 121, 124, 125, 129, 130, 131, 137, 138, 139, 140, 31, 32, 33, 34, 35, 46, 47, 48, 49, 50, 61, 62, 63, 64, 65, 66, 76, 77, 78, 79, 80, 81,91, 92, 93, 94, 95, 96, 106, 107, 108, 109, 110, 111]
  4. SKILL_BOOKS= []
  5. ITEM_LIST=item.GetNames()
  6. ITEM_NAME_MAX_LEN=24
  7. SKILL_BOOK_NAMES={
  8. 50300:localeInfo.TOOLTIP_SKILLBOOK_NAME,
  9. 70037:localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME,
  10. # 70055:localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME,
  11. }
  12. for skillIndex in SKILLS:
  13. for vnum,bookName in SKILL_BOOK_NAMES.iteritems():
  14. skillName = skill.GetSkillName(skillIndex)
  15. if not skillName:
  16. continue
  17. SKILL_BOOKS.append({"vnum":vnum,"name":skillName + " " + bookName,"skill":skillIndex})
  18.  
  19. OFFLINE_SHOP_PATH = "d:/ymir work/ui/offlineshop"
  20. UI_PATH="d:/ymir work/ui/privatesearch/"
  21.  
  22. CATEGORY_LIST=[
  23. # {"name": "Arme", "icon": "category_icon_all.tga", "type": item.ITEM_TYPE_WEAPON},
  24. # {"name": "Echipament", "icon": "category_icon_waffen.tga", "type": item.ITEM_TYPE_ARMOR},
  25. # {"name": "Costume", "icon": "category_icon_waffen.tga", "type": item.ITEM_TYPE_COSTUME},
  26.  
  27. # {"name": "Armuri", "icon": "category_icon_all.tga", "type": 2},
  28. {"name": "Arme", "icon": "category_icon_waffen.tga", "type": 1},
  29. {"name": "Echipament", "icon": "category_icon_ruestung.tga", "type": 2},
  30. {"name": "Costume", "icon": "category_icon_kostuem.tga", "type": 28},
  31. {"name": "Consumabile", "icon": "category_icon_verbrauchs.tga", "type": 3},
  32. {"name": "Materiale", "icon": "category_icon_erze.tga", "type": 4},
  33. {"name": "Buffs", "icon": "category_icon_drachenst.tga", "type": 33},
  34. {"name": "Pesti", "icon": "category_icon_fische.tga", "type": 12},
  35. {"name": "Upgrade", "icon": "category_icon_traenke.tga", "type": 5},
  36. {"name": "Carti", "icon": "category_icon_talismane.tga", "type": 18},
  37. {"name": "Cufere", "icon": "category_icon_reittiere.tga", "type": 23},
  38. {"name": "Pietre", "icon": "category_icon_reittiere.tga", "type": 23},
  39.  
  40. ]
  41.  
  42. def check_name(name):
  43. for p in ["+%d" % x for x in range(10)]:
  44. if name.find(p) != -1:
  45. return True
  46. return False
  47. class PrivateShopSearch(ui.BoardWithTitleBar):
  48. def __init__(self):
  49. ui.BoardWithTitleBar.__init__(self)
  50. self.itemsPerPage=12
  51. self.sortColumn=7
  52. self.SearchButtonTimer = 0
  53. self.MaxPages=[50, 100, 150]
  54. self.QuestionDialog = None
  55. self.GOLD_COLOR = 0xFFFEE3AE
  56. self.RED_COLOR = 0xFF8b0000
  57. self.WHITE_COLOR = 0xFFc7c7c7
  58. self.ORJ_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
  59. self.UI={}
  60. self.ItemCount = len(constInfo.SearchItemList)
  61. self.lastUpdate = 0
  62. self.WorkType = 3
  63. self.CurrentPageNumber = 1
  64. self.ListItems = {}
  65. self.ClickedButtonIndex = -99
  66. self.sortState = True
  67. self.MaxResults = 150
  68. self.SearchVnum = 0
  69. self.SearchBook = 0
  70. self.ItemIdxToItemPos = {}
  71. self.pages=[[]]
  72. self.ResetUISearch()
  73. self.CreateGUI()
  74.  
  75. def __del__(self):
  76. self.__RemoveLastSearch()
  77. self.Close()
  78. ui.BoardWithTitleBar.__del__(self)
  79.  
  80. def ResetUISearch(self):
  81. self.cmd = ""
  82. self.SelectedCategory = {}
  83. if "ItemType" in self.UI.keys():
  84. self.OnSelectItemCategory(CATEGORY_LIST[0], 1)
  85.  
  86. if "ItemNameValue" in self.UI.keys():
  87. self.UI["ItemNameValue"].SetText("")
  88. self.__OnHideList()
  89. self.SearchVnum = 0
  90. self.SearchBook = 0
  91.  
  92. def OnChange(self):
  93. search_vnum=self.UI["list_names"].DropList.GetSelectedItem().value
  94. search_book=self.UI["list_names"].DropList.GetSelectedItem().skill
  95. name=""
  96. if not search_book:
  97. for it in ITEM_LIST:
  98. if int(it["vnum"]) == search_vnum:
  99. name=it["name"]
  100. self.SearchVnum = search_vnum
  101. self.SearchBook = 0
  102. break
  103. else:
  104. for book in SKILL_BOOKS:
  105. if int(book["vnum"]) == search_vnum and int(book["skill"]) == self.search_book:
  106. name=book["name"]
  107. self.SearchVnum = search_vnum
  108. self.SearchBook = search_book
  109. break
  110. self.UI["ItemNameValue"].SetText(str(name))
  111. self.UI["list_names"].Clear()
  112. self.UI["list_names"].Hide()
  113. ime.SetCursorPosition(len(name)+1)
  114.  
  115. def CreateGUI(self):
  116. ################### BOARD ###################
  117. self.AddFlag('movable')
  118. self.AddFlag('float')
  119. self.SetSize(585, 400)
  120. self.SetTitleName(uiScriptLocale.SHOP_SEARCH_WINDOW_NAME)
  121. self.SetCloseEvent(self.Close)
  122. self.SetCenterPosition()
  123. ################## BUTTONS ######################
  124.  
  125. ################## SIDEBAR ##################
  126. ## Item name
  127. self.UI["ItemNameTextImage"],self.UI["ItemNameText"] = Utils().ImageTextLine(self,UI_PATH+"private_leftNameImg.sub", 10, 35,uiScriptLocale.SHOP_SEARCH_ITEM_NAME, 60, 5,1,self.GOLD_COLOR)
  128. self.UI["ItemNameValueImage"],self.UI["ItemNameValue"] = Utils().ImageEditLine(self, UI_PATH+"private_leftSlotImg.sub", 12, 55, "", 5, 3, 136, 15, 20,0,self.WHITE_COLOR)
  129. left=0
  130. self.UI["ItemNameValue"].SetMax(ITEM_NAME_MAX_LEN)
  131. self.UI["ItemNameValue"].OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdate)
  132. self.UI["ItemNameValue"].SetReturnEvent(ui.__mem_func__(self.__OnHideList))
  133. self.UI["ItemNameValue"].SetEscapeEvent(ui.__mem_func__(self.OnPressEscapeKey))
  134.  
  135.  
  136. self.UI["list_names"] = DropDown(self)
  137. self.UI["list_names"].OnChange=self.OnChange
  138. self.UI["list_names"].SetPosition(13,70)
  139. self.UI["list_names"].Hide()
  140.  
  141. ## Gold
  142. self.UI["ItemGoldImage"],self.UI["ItemGoldText"] = Utils().ImageTextLine(self,UI_PATH+"private_leftNameImg.sub", 10, 80,uiScriptLocale.SHOP_SEARCH_ITEM_PRICE, 60, 5,1,self.GOLD_COLOR)
  143. ## Min item gold slot
  144. self.UI["ItemGoldMinImage"],self.UI["ItemGoldMin"] = Utils().ImageEditLine(self,UI_PATH+"private_leftSlotImg.sub",14, 100,"0", 5, 3, 115, 15, 16,0,self.WHITE_COLOR,1)
  145. ## Max item gold slot
  146. self.UI["ItemGoldMaxImage"],self.UI["ItemGoldMax"] = Utils().ImageEditLine(self,UI_PATH+"private_leftSlotImg.sub",14, 120,"9999999999999999", 5, 3, 135, 15, 16,0,self.WHITE_COLOR,1)
  147. ## Item type
  148. self.UI["ItemTypeImage"],self.UI["ItemTypeText"] = Utils().ImageTextLine(self,UI_PATH+"private_leftNameImg.sub", 10, 145,uiScriptLocale.SHOP_SEARCH_ITEM_TYPE, 60, 5,1,self.GOLD_COLOR)
  149. button_y=170
  150. self.UI["ItemType"] = []
  151. for category in CATEGORY_LIST:
  152. self.UI["ItemType"].append(Utils().ToggleButton(self, category["name"], 12, button_y, lambda arg=category: self.OnSelectItemCategory(arg, 1), lambda arg=category: self.OnSelectItemCategory(arg, 0)))
  153. button_y += 17
  154. button_y+=5
  155. self.UI["PageFoot"] = Utils().ImageBox(self, "d:/ymir work/ui/tab_menu_01.tga", left+136, self.GetHeight()-37)
  156. self.UI["SearchButton"] = Utils().Button(self, uiScriptLocale.SHOP_SEARCH_SEARCH_BUTTON, "", 12, button_y, self.OnSearchItem, UI_PATH+"private_findbuttonImg01.sub", UI_PATH+"private_findbuttonImg02.sub", UI_PATH+"private_findbuttonImg03.sub")
  157. self.UI["BuyButton"] = Utils().Button(self.UI["PageFoot"], "", uiScriptLocale.SHOP_SEARCH_BUY_BUTTON, self.UI["PageFoot"].GetWidth()-40, 2, None, OFFLINE_SHOP_PATH+"/bank_01.tga", OFFLINE_SHOP_PATH+"/bank_02.tga", OFFLINE_SHOP_PATH+"/bank_02.tga")
  158.  
  159. ################### CENTER UI ##################
  160. size_x=30
  161. self.UI["ItemsResultsImg"] = Utils().ImageBox(self, "d:/ymir work/ui/tab_menu_01.tga", left+136, 38)
  162. self.UI["ItemsResultsName"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_NAME, 67, 4)
  163. self.UI["ItemsResultsSeller"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_SELLER, 207, 4)
  164. self.UI["ItemsResultsCount"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_COUNT, 283, 4)
  165. self.UI["ItemsResultsPrice"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_PRICE, 373, 4)
  166. self.UI["ItemsResultsPriceSort_up"] = Utils().Button(self.UI["ItemsResultsImg"], "", uiScriptLocale.SHOP_SEARCH_ITEM_PRICE_SORT, 400, 8, None, OFFLINE_SHOP_PATH+"/arrow_up.tga", OFFLINE_SHOP_PATH+"/arrow_up_hover.tga", OFFLINE_SHOP_PATH+"/arrow_up_hover.tga")
  167. self.UI["ItemsResultsPriceSort_up"].SetEvent(ui.__mem_func__(self.SetSort), False)
  168. self.UI["ItemsResultsPriceSort_down"] = Utils().Button(self.UI["ItemsResultsImg"], "", uiScriptLocale.SHOP_SEARCH_ITEM_PRICE_SORT, 400, 8, None, OFFLINE_SHOP_PATH+"/arrow_down.tga", OFFLINE_SHOP_PATH+"/arrow_down_hover.tga", OFFLINE_SHOP_PATH+"/arrow_down_hover.tga")
  169. self.UI["ItemsResultsPriceSort_down"].SetEvent(ui.__mem_func__(self.SetSort), True)
  170. for size in self.MaxPages:
  171. self.UI["Page_%d" % size] = Utils().Button(self.UI["PageFoot"], str(size), "", size_x, 1, None, OFFLINE_SHOP_PATH+"/page_normal.tga", OFFLINE_SHOP_PATH+"/page_hover.tga", OFFLINE_SHOP_PATH+"/page_hover.tga")
  172. self.UI["Page_%d" % size].SetEvent(ui.__mem_func__(self.ChangePageMax), size)
  173. size_x+=30
  174.  
  175. page_x = self.UI["PageFoot"].GetWidth()/2-20
  176.  
  177. self.UI["PageButtonFirst"] = Utils().Button(self.UI["PageFoot"], "", "", page_x-40, 5, self.OnClickPrevButtonPage, UI_PATH+"private_first_prev_btn_01.sub", UI_PATH+"private_first_prev_btn_02.sub", UI_PATH+"private_first_prev_btn_01.sub")
  178. self.UI["PagePrev"] = Utils().Button(self.UI["PageFoot"], "", "", page_x-20, 5, self.OnClickNextButtonPage, UI_PATH+"private_prev_btn_01.sub", UI_PATH+"private_prev_btn_02.sub", UI_PATH+"private_prev_btn_01.sub")
  179. self.UI["PageNext"] = Utils().Button(self.UI["PageFoot"], "", "", page_x+30, 5, self.OnClickNextPage, UI_PATH+"private_next_btn_01.sub", UI_PATH+"private_next_btn_02.sub", UI_PATH+"private_next_btn_01.sub")
  180. self.UI["PageButtonNext"] = Utils().Button(self.UI["PageFoot"], "", "", page_x+50, 5, self.OnClickPrevPage, UI_PATH+"private_last_next_btn_01.sub", UI_PATH+"private_last_next_btn_02.sub", UI_PATH+"private_last_next_btn_01.sub")
  181. self.UI["PageSlot"] = Utils().Button(self.UI["PageFoot"], "1", "", page_x, 1, None, OFFLINE_SHOP_PATH+"/page_normal.tga", OFFLINE_SHOP_PATH+"/page_normal.tga", OFFLINE_SHOP_PATH+"/page_normal.tga")
  182. self.UI["PageSlot"].Disable()
  183. self.ResetUI()
  184. def ChangePageMax(self, size):
  185. for _size in self.MaxPages:
  186. self.UI["Page_%d" % _size].SetUp()
  187. self.UI["Page_%d" % _size].Enable()
  188. self.UI["Page_%d" % size].Down()
  189. self.UI["Page_%d" % size].Disable()
  190. self.MaxResults = size
  191. def SetSort(self, state):
  192. if state:
  193. self.UI["ItemsResultsPriceSort_up"].Show()
  194. self.UI["ItemsResultsPriceSort_down"].Hide()
  195. else:
  196. self.UI["ItemsResultsPriceSort_up"].Hide()
  197. self.UI["ItemsResultsPriceSort_down"].Show()
  198. self.sortState = state
  199. self.PrepPage(self.CurrentPageNumber, 1)
  200. def ResetUI(self):
  201. self.UI["PageSlot"].Hide()
  202. self.UI["PageButtonFirst"].Hide()
  203. self.UI["PagePrev"].Hide()
  204. self.UI["PageNext"].Hide()
  205. self.UI["PageButtonNext"].Hide()
  206. self.UI["SearchButton"].Down()
  207. self.UI["SearchButton"].Disable()
  208. self.UI["BuyButton"].Down()
  209. self.SetSort(True)
  210.  
  211.  
  212.  
  213. def OnSelectItemCategory(self, cat, state):
  214. for v in self.UI["ItemType"]:
  215. if v.GetText() == cat["name"]:
  216. if state != v.GetActive():
  217. v.SetActive(state)
  218. else:
  219. v.SetActive(False)
  220. self.SelectedCategory = cat
  221. self.CheckSearchButtonStatus()
  222.  
  223. def CheckSearchButtonStatus(self):
  224. if len(self.UI["ItemNameValue"].GetText()) > 0 or self.SelectedCategory.get("type", False):
  225. self.UI["SearchButton"].SetUp()
  226. self.UI["SearchButton"].Enable()
  227. else:
  228. self.UI["SearchButton"].Down()
  229. self.UI["SearchButton"].Disable()
  230.  
  231. def __RemoveLastSearch(self):
  232. self.DeactivateBottary()
  233. self.ListItems.clear()
  234. self.ItemIdxToItemPos.clear()
  235. constInfo.SearchItemList=[]
  236. self.ItemCount = 0 # Set zero item count
  237. self.CurrentPageNumber = 1 # Set page number default
  238. self.ClickedButtonIndex = -99 # Set clicked button to null
  239.  
  240. def ReSearchItem(self,shop_vid):
  241. for i in constInfo.SearchItemList:
  242. if int(i[2]) ==int(shop_vid) and len(self.cmd):
  243. self.__RemoveLastSearch()
  244. net.SendChatPacket(self.cmd)
  245. return
  246.  
  247. def OnSearchItem(self):
  248. _type_index = self.SelectedCategory["type"]
  249. self.__RemoveLastSearch()
  250. name=self.UI["ItemNameValue"].GetText().replace(" ","_").lower()
  251. if self.SearchVnum:
  252. name=""
  253. self.cmd="/shop_search %d|%d|%d|%s|%s" % (_type_index,0,999999999999999999,str(self.UI["ItemNameValue"].GetText().replace(" ","_")),all)
  254.  
  255.  
  256. self.PrepPage(1,1)
  257. self.__OnHideList()
  258. if app.GetTime() > self.SearchButtonTimer:
  259. net.SendChatPacket(self.cmd)
  260. self.SearchButtonTimer = app.GetTime() + 5
  261. else:
  262. NewGetTime = self.SearchButtonTimer - app.GetTime()
  263. chat.AppendChat(chat.CHAT_TYPE_INFO, "[i] Poti apasa acest buton din nou in %d secunde." % (NewGetTime))
  264.  
  265. def OnClickBuyButton(self):
  266. if self.ClickedButtonIndex == -99:
  267. self.Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_EMPTY_ITEM, None, None)
  268. return
  269.  
  270. self.QuestionDialog = uiCommon.QuestionDialog()
  271. self.QuestionDialog.SetText(str(uiScriptLocale.SHOP_SEARCH_BUY))
  272. self.QuestionDialog.SetAcceptEvent(lambda arg=True: self.OnClickBuyButtonAnswer(arg))
  273. self.QuestionDialog.SetCancelEvent(lambda: self.QuestionDialog.Close())
  274. self.QuestionDialog.Open()
  275.  
  276. def OnClickBuyButtonAnswer(self, answer):
  277. if not self.QuestionDialog:
  278. return
  279.  
  280. if answer:
  281. if self.ClickedButtonIndex == -99:
  282. self.Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_EMPTY_ITEM, None, None)
  283. return
  284.  
  285. selectedSellerVID = int(self.ListItems["%d_seller_vid" % self.ClickedButtonIndex].GetText())
  286.  
  287. if selectedSellerVID == 0:
  288. self.Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_ITEM_NOT_FOUND, None, None)
  289. return
  290.  
  291. selectedItemPos = self.ItemIdxToItemPos[self.ClickedButtonIndex]
  292. net.SendChatPacket("/shop_buy %d|%d|%d" % (int(selectedSellerVID), int(selectedItemPos), int(self.WorkType)))
  293.  
  294. self.ListItems["%d_ui" % self.ClickedButtonIndex].SetUpVisual("d:/ymir work/ui/tab_02.tga")
  295. self.ClickedButtonIndex = -99
  296. self.QuestionDialog.Close()
  297. self.QuestionDialog = None
  298. def ActivateBottary(self,vid):
  299. net.SendChatPacket("/shop_show "+str(vid))
  300.  
  301. def DeactivateBottary(self):
  302. pass
  303. #net.SendChatPacket("/shop_show")
  304.  
  305. def SelectItemFromList(self, idx):
  306. self.DeactivateBottary()
  307. for key,item in self.ListItems.iteritems():
  308. if type(item) is ui.Button:
  309. item.SetUpVisual("d:/ymir work/ui/tab_01.tga")
  310. if self.ClickedButtonIndex == idx:
  311. self.ListItems["%d_ui" % self.ClickedButtonIndex].SetUp()
  312. self.ClickedButtonIndex = -99
  313. return
  314. self.ClickedButtonIndex = idx
  315. self.ListItems["%d_ui" % self.ClickedButtonIndex].SetUpVisual("d:/ymir work/ui/tab_02.tga")
  316. if self.WorkType != 0:
  317. self.ActivateBottary(int(self.ListItems["%d_seller_vid" % self.ClickedButtonIndex].GetText()))
  318.  
  319.  
  320. def __HideItemToolTip(self,row=None):
  321. if row:
  322. self.ListItems["%d_ui" % row].HideToolTip()
  323. else:
  324. for key,item in self.ListItems.iteritems():
  325. if type(item) is ui.Button:
  326. item.HideToolTip()
  327.  
  328. def __LoadItem(self, row, range_sequence, item_name, item_count, item_price, seller_name, seller_vid, item_vnum, item_pos, socket_list, attr_list):
  329. self.ListItems["%d_ui" % row] = Utils().Button(self, "", "", 137, 40 + (23 * range_sequence), self.OnClickPrevButtonPage, "d:/ymir work/ui/tab_01.tga", "d:/ymir work/ui/tab_02.tga", "d:/ymir work/ui/tab_02.tga")
  330. self.ListItems["%d_ui" % row].SetEvent(ui.__mem_func__(self.SelectItemFromList),int(row))
  331. self.ListItems["%d_ui" % row].SetToolTipWindow(self.__CreateGameTypeToolTip(row, int(item_vnum), socket_list, attr_list),0)
  332.  
  333. self.ListItems["%d_seller_vid" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(seller_vid), 0, 0)
  334. self.ListItems["%d_seller_vid" % row].Hide()
  335. self.ListItems["%d_item_name" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(item_name), 80, 4)
  336. self.ListItems["%d_item_name" % row].SetHorizontalAlignCenter()
  337.  
  338. self.ListItems["%d_seller_name" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(seller_name).replace("_"," "), 215, 4)
  339. self.ListItems["%d_seller_name" % row].SetHorizontalAlignCenter()
  340. self.ListItems["%d_item_count" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(item_count), 295, 4)
  341. self.ListItems["%d_item_count" % row].SetHorizontalAlignCenter()
  342.  
  343. self.ListItems["%d_item_price" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(localeInfo.NumberToMoneyString(long(item_price))), 383, 4)
  344. self.ListItems["%d_item_price" % row].SetHorizontalAlignCenter()
  345. self.ListItems["%d_ui" % row].Hide()
  346. self.ItemIdxToItemPos[row] = item_pos
  347.  
  348.  
  349. def LoadItems(self, row, seller_name,seller_vid, item_vnum, item_count, item_refine, item_price, item_level,sockets,attrs,item_pos):
  350. socket_list=[]
  351. for socket in sockets.split("|"):
  352. socket_list.append(int(socket))
  353. attr_list=[]
  354. for attr in attrs.split("|"):
  355. a=attr.split(",")
  356. attr_list.append([int(a[0]),int(a[1])])
  357. item.SelectItem(int(item_vnum))
  358. constInfo.SearchItemList.append([row, seller_name,int(seller_vid), item.GetItemName(), int(item_vnum), int(item_count), int(item_refine), long(item_price), int(item_level), socket_list, attr_list, int(item_pos)])
  359. self.ItemCount += 1
  360.  
  361.  
  362. def __CreateGameTypeToolTip(self, row, itemVnum, socket_list, attr_list):
  363. tooltipItem = uiToolTip.ItemToolTip()
  364. tooltipItem.AddItemData(int(itemVnum), socket_list, attr_list)
  365. tooltipItem.UpdateRect()
  366. tooltipItem.Hide()
  367. return tooltipItem
  368.  
  369. def RemoveItemFromList(self, seller, pos):
  370. items=[]
  371. self.ItemCount = 0
  372. for i in constInfo.SearchItemList:
  373.  
  374. if int(i[2]) == int(seller) and int(i[11]) == int(pos):
  375. continue
  376.  
  377. items.append(i)
  378. self.ItemCount += 1
  379. constInfo.SearchItemList=items
  380. self.__HideItemToolTip()
  381. if self.ItemCount==0:
  382. constInfo.SearchItemList=[]
  383. self.ListItems.clear()
  384. self.ItemIdxToItemPos.clear()
  385. else:
  386. self.CreateListUI()
  387.  
  388. def RemoveItemsFromList(self, seller):
  389. items=[]
  390. self.ItemCount = 0
  391. for i in constInfo.SearchItemList:
  392. if int(i[2]) != int(seller):
  393. items.append(i)
  394. self.ItemCount += 1
  395. constInfo.SearchItemList=items
  396. self.__HideItemToolTip()
  397. if self.ItemCount==0:
  398. constInfo.SearchItemList=[]
  399. self.ListItems.clear()
  400. self.ItemIdxToItemPos.clear()
  401. else:
  402. self.CreateListUI()
  403. def CreateListUI(self):
  404. self.__HideItemToolTip()
  405. if self.ItemCount == 0:
  406. self._Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_EMPTY_ITEM_LIST, None, None)
  407. return
  408.  
  409. for key,item in self.ListItems.iteritems():
  410. item.Hide()
  411. self.ListItems.clear()
  412. range_control_value = 0
  413. NewList=[]
  414. row=0
  415. for x in sorted(constInfo.SearchItemList, key=lambda x: x[self.sortColumn]):
  416. range_control_value += 1
  417. if range_control_value == 14:
  418. range_control_value = 1
  419. range_sequence = int(range_control_value)
  420. seller_name = str(x[1])
  421. seller_vid = int(x[2])
  422. item_name = str(x[3])
  423. item_vnum = int(x[4])
  424. item_count = str(x[5])
  425. item_price = str(x[7])
  426. item_pos = int(x[11])
  427. socket_list = x[9]
  428. attr_list = x[10]
  429. self.__LoadItem(row, range_sequence, item_name, item_count, item_price, seller_name,seller_vid, item_vnum, item_pos, socket_list, attr_list)
  430.  
  431. row+=1
  432. self.PrepButtonPage(1)
  433.  
  434. def OnClickNextPage(self):
  435. self.PrepPage(1)
  436.  
  437. def OnClickPrevPage(self):
  438. self.PrepPage(-1)
  439.  
  440. def PrepPage(self,page,force=0):
  441. self.__HideItemToolTip()
  442. if page>=0:
  443. if not force:
  444. self.CurrentPageNumber += 1
  445. else:
  446. self.CurrentPageNumber=page
  447. Page_Range_Max = self.CurrentPageNumber * self.itemsPerPage + (self.CurrentPageNumber - 1)
  448. Page_Range_Min = Page_Range_Max - self.itemsPerPage
  449. for i in xrange(self.ItemCount):
  450. if i >= Page_Range_Min and i <= Page_Range_Max:
  451. self.ListItems["%d_ui" % i].Show()
  452. else:
  453. self.ListItems["%d_ui" % i].Hide()
  454. else:
  455. CalcPageCount = self.ItemCount / (self.itemsPerPage+1)
  456. CalcLastPageItemStartIndex = CalcPageCount * (self.itemsPerPage+1)
  457. CalcLastPageItemCount = self.ItemCount-CalcLastPageItemStartIndex
  458. self.CurrentPageNumber = CalcPageCount + 1
  459.  
  460. for i in xrange(self.ItemCount):
  461. if self.ListItems["%d_ui" % i].IsShow():
  462. self.ListItems["%d_ui" % i].Hide()
  463.  
  464. for i in xrange(CalcLastPageItemCount):
  465. self.ListItems["%d_ui" % int(CalcLastPageItemStartIndex + i)].Show()
  466.  
  467.  
  468. self.UI["PageSlot"].SetText(str(self.CurrentPageNumber))
  469.  
  470. if self.CurrentPageNumber != 1:
  471. self.UI["PageButtonFirst"].Show()
  472. self.UI["PagePrev"].Show()
  473. if self.ItemCount > ((self.itemsPerPage+1) * self.CurrentPageNumber)-1:
  474. self.UI["PageNext"].Show()
  475. self.UI["PageButtonNext"].Show()
  476. else:
  477. self.UI["PageNext"].Hide()
  478. self.UI["PageButtonNext"].Hide()
  479.  
  480. def OnClickNextButtonPage(self):
  481. self.PrepButtonPage(-1)
  482.  
  483. def OnClickPrevButtonPage(self):
  484. self.PrepButtonPage(1)
  485.  
  486. def LoadItemsForPage(self):
  487. for key,item in self.ListItems.items():
  488. item.Hide()
  489. self.ListItems.clear()
  490. pos = 0
  491. page=0
  492. items = sorted(constInfo.SearchItemList, key=lambda x: x["price"])
  493. if not self.sortState:
  494. items = list(reversed(items))
  495. for i in range(len(items)):
  496. pos += 1
  497. if pos == self.itemsPerPage:
  498. pos = 1
  499. page+=1
  500. if page == self.CurrentPageNumber-1:
  501. self.__LoadItem(i, pos, items[i])
  502.  
  503. def PrepButtonPage(self,page):
  504. self.__HideItemToolTip()
  505. if page == 1:
  506. self.CurrentPageNumber = 1
  507. RangedItemCount = 0
  508. for i in xrange(self.ItemCount):
  509. if i >= 0 and i <= self.itemsPerPage:
  510. RangedItemCount += 1
  511. self.ListItems["%d_ui" % i].Show()
  512. else:
  513. self.ListItems["%d_ui" % i].Hide()
  514. else:
  515. self.CurrentPageNumber -= 1
  516. Page_Range_Max = self.CurrentPageNumber * self.itemsPerPage
  517. Page_Range_Min = Page_Range_Max - self.itemsPerPage
  518.  
  519. RangedItemCount = 0
  520. for i in xrange(self.ItemCount):
  521. if i >= Page_Range_Min and i <= Page_Range_Max:
  522. RangedItemCount += 1
  523. self.ListItems["%d_ui" % i].Show()
  524. else:
  525. self.ListItems["%d_ui" % i].Hide()
  526.  
  527.  
  528. self.UI["PageSlot"].SetText(str(self.CurrentPageNumber))
  529.  
  530. if RangedItemCount >= self.itemsPerPage+1:
  531. self.UI["PageNext"].Show(), self.UI["PageButtonNext"].Show()
  532. if self.CurrentPageNumber != 1:
  533. self.UI["PageButtonFirst"].Show(), self.UI["PagePrev"].Show()
  534. else:
  535. self.UI["PageButtonFirst"].Hide(), self.UI["PagePrev"].Hide()
  536.  
  537.  
  538. def Show(self):
  539. self.ResetUISearch()
  540. self.__RemoveLastSearch()
  541. self.SetTop()
  542. ui.BoardWithTitleBar.Show(self)
  543.  
  544. def CloseByItem(self, x):
  545. self.Close()
  546.  
  547. def Close(self,first=0):
  548. self.__HideItemToolTip()
  549. self.__OnHideList()
  550. self.ResetUI()
  551. if not first:
  552. self.__RemoveLastSearch()
  553. self.cmd = ""
  554. self.Hide()
  555. return True
  556.  
  557. def Popup(self, text, width, acceptevent):
  558. wndPopup = uiCommon.PopupDialog()
  559. wndPopup.SetText(str(text))
  560. if width: wndPopup.SetWidth(width)
  561. if acceptevent: wndPopup.SetAcceptEvent(acceptevent)
  562. wndPopup.Open()
  563. return wndPopup
  564.  
  565. def __OnValueUpdate(self):
  566. ui.EditLine.OnIMEUpdate(self.UI["ItemNameValue"])
  567. val=self.UI["ItemNameValue"].GetText()
  568. if len(val)>0:
  569. self.UI["list_names"].Clear()
  570. f=0
  571. for it in ITEM_LIST:
  572. vnum,name=it["vnum"],it["name"]
  573. if f==15:
  574. break
  575. if vnum in SKILL_BOOK_NAMES.keys():
  576. continue
  577. if len(name)>=len(val) and name[:len(val)].lower() == val.lower():
  578. self.UI["list_names"].AppendItem(name,vnum)
  579. f+=1
  580. if f==0:
  581. for book in SKILL_BOOKS:
  582. if f==15:
  583. break
  584. vnum,name,skill=book["vnum"],book["name"],book["skill"]
  585. if len(name)>=len(val) and name[:len(val)].lower() == val.lower():
  586. self.UI["list_names"].AppendItem(name,vnum,skill)
  587. f+=1
  588.  
  589.  
  590. if f>0:
  591. if self.UI["list_names"].dropped==0:
  592. self.UI["list_names"].Clear()
  593. self.UI["list_names"].ExpandMe()
  594. self.UI["list_names"].Show()
  595. return
  596. self.__OnHideList()
  597. def __OnHideList(self):
  598. self.UI["list_names"].dropped=0
  599. self.UI["list_names"].Clear()
  600. self.UI["list_names"].Hide()
  601.  
  602. def OnPressEscapeKey(self):
  603. if self.UI["list_names"].dropped:
  604. self.UI["list_names"].dropped=0
  605. self.UI["list_names"].Clear()
  606. self.UI["list_names"].Hide()
  607. else:
  608. self.Close()
  609. return True
  610.  
  611. def OnUpdate(self):
  612. self.ItemCount = len(constInfo.SearchItemList)
  613. if self.lastUpdate > app.GetGlobalTime():
  614. return
  615. if self.WorkType>0:
  616. self.UI["BuyButton"].SetUp()
  617. self.UI["BuyButton"].Enable()
  618. else:
  619. self.UI["BuyButton"].Down()
  620. self.UI["BuyButton"].Disable()
  621. if self.ClickedButtonIndex != -99:
  622. self.UI["BuyButton"].SetEvent(self.OnClickBuyButton)
  623. else:
  624. self.UI["BuyButton"].SetEvent(None)
  625.  
  626. self.CheckSearchButtonStatus()
  627. self.lastUpdate=app.GetGlobalTime()+500
  628.  
  629. class Utils(object):
  630. def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual):
  631. btn = ui.Button()
  632. if parent:
  633. btn.SetParent(parent)
  634. btn.SetPosition(x, y)
  635. btn.SetUpVisual(UpVisual)
  636. btn.SetOverVisual(OverVisual)
  637. btn.SetDownVisual(DownVisual)
  638. btn.SetText(buttonName)
  639. btn.SetToolTipText(tooltipText)
  640. if func:
  641. btn.SetEvent(func)
  642. btn.Show()
  643. return btn
  644.  
  645. def ImageBox(self, parent, image, x, y):
  646. img = ui.ImageBox()
  647. if parent:
  648. img.SetParent(parent)
  649. img.LoadImage(image)
  650. img.SetPosition(x, y)
  651. img.Show()
  652. return img
  653.  
  654. def TextLine(self, parent, text, x, y):
  655. t = ui.TextLine()
  656. if parent:
  657. t.SetParent(parent)
  658. t.SetPosition(x, y)
  659. t.SetOutline()
  660. t.SetText(text)
  661. t.Show()
  662. return t
  663.  
  664. def EditLine(self, parent, text, x, y, width, heigh, max):
  665. edit = ui.EditLine()
  666. if parent:
  667. edit.SetParent(parent)
  668. edit.SetSize(width, heigh)
  669. edit.SetPosition(x, y)
  670. edit.SetMax(max)
  671. edit.SetLimitWidth(width)
  672. edit.SetMultiLine()
  673. edit.SetText(text)
  674. edit.Show()
  675. return edit
  676.  
  677. def ExpandedImageBox(self, parent, image, x, y):
  678. eib = ui.ExpandedImageBox()
  679. if parent:
  680. eib.SetParent(parent)
  681. eib.LoadImage(image)
  682. eib.SetPosition(x,y)
  683. eib.Show()
  684. return eib
  685.  
  686. def TextSlot(self, parent, text, x, y, width, height):
  687. SlotBar = ui.SlotBar()
  688. if parent:
  689. SlotBar.SetParent(parent)
  690. SlotBar.SetSize(width, height)
  691. SlotBar.SetPosition(x, y)
  692. SlotBar.Show()
  693. textline = ui.TextLine()
  694. textline.SetParent(SlotBar)
  695. textline.SetPosition(5, 1)
  696. textline.SetText(text)
  697. textline.Show()
  698. return SlotBar, textline
  699.  
  700. def ComboBox(self, parent, text, x, y, width):
  701. class ComboBox(ui.ComboBox):
  702. def __init__(self):
  703. ui.ComboBox.__init__(self)
  704. self.value = []
  705.  
  706. def __del__(self):
  707. ui.ComboBox.__del__(self)
  708.  
  709. def InsertItem(self, index, name, value=None):
  710. self.listBox.InsertItem(index, name)
  711. self.listBox.ArrangeItem()
  712. self.value.append(value)
  713.  
  714. def OnSelectItem(self, index, name):
  715. self.SetCurrentItem(name)
  716. self.CloseListBox()
  717. self.event(index)
  718.  
  719. def GetCurrentValue(self):
  720. return self.value[self.GetCurrentIndex()]
  721.  
  722. def GetCurrentText(self):
  723. return self.textLine.GetText()
  724.  
  725. def GetItemCount(self):
  726. return len(self.value)
  727.  
  728. combo = ComboBox()
  729. if parent:
  730. combo.SetParent(parent)
  731. combo.SetPosition(x, y)
  732. combo.SetSize(width, 15)
  733. combo.SetCurrentItem(text)
  734. combo.Show()
  735. return combo
  736.  
  737. def ImageTextLine(self,parent,image,image_x,image_y,text,text_x,text_y,center=1,color=None):
  738. img=self.ImageBox(parent,image,image_x,image_y)
  739. txt=self.TextLine(img,text,text_x,text_y)
  740. if center:
  741. txt.SetHorizontalAlignCenter()
  742. if color:
  743. txt.SetPackedFontColor(color)
  744. return img,txt
  745.  
  746. def ImageEditLine(self,parent,image,image_x,image_y,text,text_x,text_y, width, heigh, max,center=1,color=None,number=0):
  747. img=self.ImageBox(parent,image,image_x,image_y)
  748. txt=self.EditLine(img,text, text_x, text_y, width, heigh, max)
  749. if center:
  750. txt.SetHorizontalAlignCenter()
  751. if color:
  752. txt.SetPackedFontColor(color)
  753. if number:
  754. txt.SetNumberMode()
  755. txt.SetText(text)
  756. return img,txt
  757. def ToggleButton(self, parent, label, x, y, eventDown, eventUp):
  758. button = ui.ToggleButton()
  759. if parent != None:
  760. button.SetParent(parent)
  761. button.SetPosition(x, y)
  762. button.SetUpVisual('d:/ymir work/ui/shopsearch/category_inactive_normal.tga')
  763. button.SetOverVisual('d:/ymir work/ui/shopsearch/category_inactive_hover.tga')
  764. button.SetDownVisual('d:/ymir work/ui/shopsearch/category_inactive_down.tga')
  765. button.SetText(label)
  766. button.state=False
  767. def GetActive():
  768. return button.state
  769. def SetActive(state):
  770. button.state = state
  771. if not state:
  772. button.SetDownVisual('d:/ymir work/ui/shopsearch/category_inactive_down.tga')
  773. button.SetUp()
  774. else:
  775. button.SetDownVisual('d:/ymir work/ui/shopsearch/category_active.tga')
  776. button.Down()
  777. button.SetActive = SetActive
  778. button.GetActive = GetActive
  779. button.SetToggleDownEvent(eventDown)
  780. button.SetToggleUpEvent(eventUp)
  781. button.Show()
  782. return button
  783. class DropDown(ui.Window):
  784. dropped = 0
  785. dropstat = 0
  786. width = 0
  787. height = 0
  788. maxh = 30
  789. OnChange = None
  790. class Item(ui.Window):
  791. TEMPORARY_PLACE = 0
  792. width = 0
  793. height = 0
  794. def __init__(self,parent, text,value=0,skill=0):
  795. ui.Window.__init__(self)
  796. self.textBox=ui.MakeTextLine(self)
  797. self.textBox.SetText(text)
  798. self.value = int(value)
  799. self.skill = int(skill)
  800.  
  801. def __del__(self):
  802. ui.Window.__del__(self)
  803.  
  804. def SetParent(self, parent):
  805. ui.Window.SetParent(self, parent)
  806. self.parent=parent
  807.  
  808. def OnMouseLeftButtonDown(self):
  809. self.parent.SelectItem(self)
  810.  
  811. def SetSize(self,w,h):
  812. ui.Window.SetSize(self,w,h)
  813. self.width = w
  814. self.height = h
  815. def OnUpdate(self):
  816. if self.IsIn():
  817. self.isOver = True
  818. else:
  819. self.isOver = False
  820. def OnRender(self):
  821. xRender, yRender = self.GetGlobalPosition()
  822. yRender -= self.TEMPORARY_PLACE
  823. widthRender = self.width
  824. heightRender = self.height + self.TEMPORARY_PLACE*2
  825. grp.SetColor(ui.BACKGROUND_COLOR)
  826. grp.RenderBar(xRender, yRender, widthRender, heightRender)
  827. grp.SetColor(ui.DARK_COLOR)
  828. grp.RenderLine(xRender, yRender, widthRender, 0)
  829. grp.RenderLine(xRender, yRender, 0, heightRender)
  830. grp.SetColor(ui.BRIGHT_COLOR)
  831. grp.RenderLine(xRender, yRender+heightRender, widthRender, 0)
  832. grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
  833.  
  834. if self.isOver:
  835. grp.SetColor(ui.HALF_WHITE_COLOR)
  836. grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
  837.  
  838.  
  839. def __init__(self,parent):
  840. ui.Window.__init__(self,"TOP_MOST")
  841. self.down = 1
  842. self.parent=parent
  843.  
  844.  
  845. self.DropList = ui.ListBoxEx()
  846. self.DropList.SetParent(self)
  847. self.DropList.itemHeight = 20
  848. self.DropList.itemWidth = 110
  849. self.DropList.itemStep = 18
  850. self.DropList.SetPosition(0,0)
  851. self.DropList.SetSize(110,2)
  852. self.DropList.SetSelectEvent(self.SetTitle)
  853. self.DropList.SetViewItemCount(0)
  854. self.DropList.Show()
  855. self.selected = self.DropList.GetSelectedItem()
  856.  
  857. self.SetSize(110,95)
  858.  
  859. def __del__(self):
  860. ui.Window.__del__(self)
  861.  
  862. def AppendItem(self,text,value=0,skill=0):
  863. self.DropList.AppendItem(self.Item(self,text,value,skill))
  864.  
  865. def OnPressEscapeKey(self):
  866. self.Hide()
  867. self.Clear()
  868.  
  869. def SetTitle(self,item):
  870. self.dropped = 0
  871. self.selected = item
  872. if self.OnChange:
  873. self.OnChange()
  874. self.Clear()
  875.  
  876. def SetSize(self,w,h):
  877. ui.Window.SetSize(self,w,h+10)
  878. self.width = w
  879. self.height = h
  880. self.DropList.SetSize(w,h)
  881.  
  882. def Clear(self):
  883. for x in self.DropList.itemList:
  884. x.Hide()
  885. self.DropList.RemoveAllItems()
  886.  
  887. def ExpandMe(self):
  888. if self.dropped == 1:
  889. self.dropped = 0
  890. else:
  891. self.dropped = 1
  892.  
  893. def OnUpdate(self):
  894. (w,h) = self.parent.GetLocalPosition()
  895. self.maxh =self.DropList.itemStep*len(self.DropList.itemList)
  896. self.SetPosition(w+15,h+75)
  897. if self.dropped == 0 or not self.parent.IsShow() or len(self.DropList.itemList)==0:
  898. self.SetSize(self.GetWidth(),0)
  899. self.DropList.SetViewItemCount(0)
  900. self.Hide()
  901. elif self.dropped == 1:
  902. self.Show()
  903. self.SetTop()
  904. height = self.maxh+5 if int(self.maxh/self.DropList.itemStep) <2 else self.maxh
  905. self.SetSize(self.GetWidth(),height)
  906. self.DropList.SetViewItemCount(self.maxh/self.DropList.itemStep)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement