Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import app, dbg, net, player, grp, wndMgr, item, ime, chat
- import ui, constInfo, uiScriptLocale, uiToolTip, uiCommon, localeInfo, uiUtils, skill
- 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]
- SKILL_BOOKS= []
- ITEM_LIST=item.GetNames()
- ITEM_NAME_MAX_LEN=24
- SKILL_BOOK_NAMES={
- 50300:localeInfo.TOOLTIP_SKILLBOOK_NAME,
- 70037:localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME,
- # 70055:localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME,
- }
- for skillIndex in SKILLS:
- for vnum,bookName in SKILL_BOOK_NAMES.iteritems():
- skillName = skill.GetSkillName(skillIndex)
- if not skillName:
- continue
- SKILL_BOOKS.append({"vnum":vnum,"name":skillName + " " + bookName,"skill":skillIndex})
- OFFLINE_SHOP_PATH = "d:/ymir work/ui/offlineshop"
- UI_PATH="d:/ymir work/ui/privatesearch/"
- CATEGORY_LIST=[
- # {"name": "Arme", "icon": "category_icon_all.tga", "type": item.ITEM_TYPE_WEAPON},
- # {"name": "Echipament", "icon": "category_icon_waffen.tga", "type": item.ITEM_TYPE_ARMOR},
- # {"name": "Costume", "icon": "category_icon_waffen.tga", "type": item.ITEM_TYPE_COSTUME},
- # {"name": "Armuri", "icon": "category_icon_all.tga", "type": 2},
- {"name": "Arme", "icon": "category_icon_waffen.tga", "type": 1},
- {"name": "Echipament", "icon": "category_icon_ruestung.tga", "type": 2},
- {"name": "Costume", "icon": "category_icon_kostuem.tga", "type": 28},
- {"name": "Consumabile", "icon": "category_icon_verbrauchs.tga", "type": 3},
- {"name": "Materiale", "icon": "category_icon_erze.tga", "type": 4},
- {"name": "Buffs", "icon": "category_icon_drachenst.tga", "type": 33},
- {"name": "Pesti", "icon": "category_icon_fische.tga", "type": 12},
- {"name": "Upgrade", "icon": "category_icon_traenke.tga", "type": 5},
- {"name": "Carti", "icon": "category_icon_talismane.tga", "type": 18},
- {"name": "Cufere", "icon": "category_icon_reittiere.tga", "type": 23},
- {"name": "Pietre", "icon": "category_icon_reittiere.tga", "type": 23},
- ]
- def check_name(name):
- for p in ["+%d" % x for x in range(10)]:
- if name.find(p) != -1:
- return True
- return False
- class PrivateShopSearch(ui.BoardWithTitleBar):
- def __init__(self):
- ui.BoardWithTitleBar.__init__(self)
- self.itemsPerPage=12
- self.sortColumn=7
- self.SearchButtonTimer = 0
- self.MaxPages=[50, 100, 150]
- self.QuestionDialog = None
- self.GOLD_COLOR = 0xFFFEE3AE
- self.RED_COLOR = 0xFF8b0000
- self.WHITE_COLOR = 0xFFc7c7c7
- self.ORJ_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
- self.UI={}
- self.ItemCount = len(constInfo.SearchItemList)
- self.lastUpdate = 0
- self.WorkType = 3
- self.CurrentPageNumber = 1
- self.ListItems = {}
- self.ClickedButtonIndex = -99
- self.sortState = True
- self.MaxResults = 150
- self.SearchVnum = 0
- self.SearchBook = 0
- self.ItemIdxToItemPos = {}
- self.pages=[[]]
- self.ResetUISearch()
- self.CreateGUI()
- def __del__(self):
- self.__RemoveLastSearch()
- self.Close()
- ui.BoardWithTitleBar.__del__(self)
- def ResetUISearch(self):
- self.cmd = ""
- self.SelectedCategory = {}
- if "ItemType" in self.UI.keys():
- self.OnSelectItemCategory(CATEGORY_LIST[0], 1)
- if "ItemNameValue" in self.UI.keys():
- self.UI["ItemNameValue"].SetText("")
- self.__OnHideList()
- self.SearchVnum = 0
- self.SearchBook = 0
- def OnChange(self):
- search_vnum=self.UI["list_names"].DropList.GetSelectedItem().value
- search_book=self.UI["list_names"].DropList.GetSelectedItem().skill
- name=""
- if not search_book:
- for it in ITEM_LIST:
- if int(it["vnum"]) == search_vnum:
- name=it["name"]
- self.SearchVnum = search_vnum
- self.SearchBook = 0
- break
- else:
- for book in SKILL_BOOKS:
- if int(book["vnum"]) == search_vnum and int(book["skill"]) == self.search_book:
- name=book["name"]
- self.SearchVnum = search_vnum
- self.SearchBook = search_book
- break
- self.UI["ItemNameValue"].SetText(str(name))
- self.UI["list_names"].Clear()
- self.UI["list_names"].Hide()
- ime.SetCursorPosition(len(name)+1)
- def CreateGUI(self):
- ################### BOARD ###################
- self.AddFlag('movable')
- self.AddFlag('float')
- self.SetSize(585, 400)
- self.SetTitleName(uiScriptLocale.SHOP_SEARCH_WINDOW_NAME)
- self.SetCloseEvent(self.Close)
- self.SetCenterPosition()
- ################## BUTTONS ######################
- ################## SIDEBAR ##################
- ## Item name
- 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)
- 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)
- left=0
- self.UI["ItemNameValue"].SetMax(ITEM_NAME_MAX_LEN)
- self.UI["ItemNameValue"].OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdate)
- self.UI["ItemNameValue"].SetReturnEvent(ui.__mem_func__(self.__OnHideList))
- self.UI["ItemNameValue"].SetEscapeEvent(ui.__mem_func__(self.OnPressEscapeKey))
- self.UI["list_names"] = DropDown(self)
- self.UI["list_names"].OnChange=self.OnChange
- self.UI["list_names"].SetPosition(13,70)
- self.UI["list_names"].Hide()
- ## Gold
- 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)
- ## Min item gold slot
- 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)
- ## Max item gold slot
- 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)
- ## Item type
- 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)
- button_y=170
- self.UI["ItemType"] = []
- for category in CATEGORY_LIST:
- 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)))
- button_y += 17
- button_y+=5
- self.UI["PageFoot"] = Utils().ImageBox(self, "d:/ymir work/ui/tab_menu_01.tga", left+136, self.GetHeight()-37)
- 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")
- 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")
- ################### CENTER UI ##################
- size_x=30
- self.UI["ItemsResultsImg"] = Utils().ImageBox(self, "d:/ymir work/ui/tab_menu_01.tga", left+136, 38)
- self.UI["ItemsResultsName"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_NAME, 67, 4)
- self.UI["ItemsResultsSeller"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_SELLER, 207, 4)
- self.UI["ItemsResultsCount"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_COUNT, 283, 4)
- self.UI["ItemsResultsPrice"] = Utils().TextLine(self.UI["ItemsResultsImg"], uiScriptLocale.SHOP_SEARCH_ITEM_PRICE, 373, 4)
- 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")
- self.UI["ItemsResultsPriceSort_up"].SetEvent(ui.__mem_func__(self.SetSort), False)
- 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")
- self.UI["ItemsResultsPriceSort_down"].SetEvent(ui.__mem_func__(self.SetSort), True)
- for size in self.MaxPages:
- 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")
- self.UI["Page_%d" % size].SetEvent(ui.__mem_func__(self.ChangePageMax), size)
- size_x+=30
- page_x = self.UI["PageFoot"].GetWidth()/2-20
- 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")
- 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")
- 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")
- 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")
- 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")
- self.UI["PageSlot"].Disable()
- self.ResetUI()
- def ChangePageMax(self, size):
- for _size in self.MaxPages:
- self.UI["Page_%d" % _size].SetUp()
- self.UI["Page_%d" % _size].Enable()
- self.UI["Page_%d" % size].Down()
- self.UI["Page_%d" % size].Disable()
- self.MaxResults = size
- def SetSort(self, state):
- if state:
- self.UI["ItemsResultsPriceSort_up"].Show()
- self.UI["ItemsResultsPriceSort_down"].Hide()
- else:
- self.UI["ItemsResultsPriceSort_up"].Hide()
- self.UI["ItemsResultsPriceSort_down"].Show()
- self.sortState = state
- self.PrepPage(self.CurrentPageNumber, 1)
- def ResetUI(self):
- self.UI["PageSlot"].Hide()
- self.UI["PageButtonFirst"].Hide()
- self.UI["PagePrev"].Hide()
- self.UI["PageNext"].Hide()
- self.UI["PageButtonNext"].Hide()
- self.UI["SearchButton"].Down()
- self.UI["SearchButton"].Disable()
- self.UI["BuyButton"].Down()
- self.SetSort(True)
- def OnSelectItemCategory(self, cat, state):
- for v in self.UI["ItemType"]:
- if v.GetText() == cat["name"]:
- if state != v.GetActive():
- v.SetActive(state)
- else:
- v.SetActive(False)
- self.SelectedCategory = cat
- self.CheckSearchButtonStatus()
- def CheckSearchButtonStatus(self):
- if len(self.UI["ItemNameValue"].GetText()) > 0 or self.SelectedCategory.get("type", False):
- self.UI["SearchButton"].SetUp()
- self.UI["SearchButton"].Enable()
- else:
- self.UI["SearchButton"].Down()
- self.UI["SearchButton"].Disable()
- def __RemoveLastSearch(self):
- self.DeactivateBottary()
- self.ListItems.clear()
- self.ItemIdxToItemPos.clear()
- constInfo.SearchItemList=[]
- self.ItemCount = 0 # Set zero item count
- self.CurrentPageNumber = 1 # Set page number default
- self.ClickedButtonIndex = -99 # Set clicked button to null
- def ReSearchItem(self,shop_vid):
- for i in constInfo.SearchItemList:
- if int(i[2]) ==int(shop_vid) and len(self.cmd):
- self.__RemoveLastSearch()
- net.SendChatPacket(self.cmd)
- return
- def OnSearchItem(self):
- _type_index = self.SelectedCategory["type"]
- self.__RemoveLastSearch()
- name=self.UI["ItemNameValue"].GetText().replace(" ","_").lower()
- if self.SearchVnum:
- name=""
- self.cmd="/shop_search %d|%d|%d|%s|%s" % (_type_index,0,999999999999999999,str(self.UI["ItemNameValue"].GetText().replace(" ","_")),all)
- self.PrepPage(1,1)
- self.__OnHideList()
- if app.GetTime() > self.SearchButtonTimer:
- net.SendChatPacket(self.cmd)
- self.SearchButtonTimer = app.GetTime() + 5
- else:
- NewGetTime = self.SearchButtonTimer - app.GetTime()
- chat.AppendChat(chat.CHAT_TYPE_INFO, "[i] Poti apasa acest buton din nou in %d secunde." % (NewGetTime))
- def OnClickBuyButton(self):
- if self.ClickedButtonIndex == -99:
- self.Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_EMPTY_ITEM, None, None)
- return
- self.QuestionDialog = uiCommon.QuestionDialog()
- self.QuestionDialog.SetText(str(uiScriptLocale.SHOP_SEARCH_BUY))
- self.QuestionDialog.SetAcceptEvent(lambda arg=True: self.OnClickBuyButtonAnswer(arg))
- self.QuestionDialog.SetCancelEvent(lambda: self.QuestionDialog.Close())
- self.QuestionDialog.Open()
- def OnClickBuyButtonAnswer(self, answer):
- if not self.QuestionDialog:
- return
- if answer:
- if self.ClickedButtonIndex == -99:
- self.Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_EMPTY_ITEM, None, None)
- return
- selectedSellerVID = int(self.ListItems["%d_seller_vid" % self.ClickedButtonIndex].GetText())
- if selectedSellerVID == 0:
- self.Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_ITEM_NOT_FOUND, None, None)
- return
- selectedItemPos = self.ItemIdxToItemPos[self.ClickedButtonIndex]
- net.SendChatPacket("/shop_buy %d|%d|%d" % (int(selectedSellerVID), int(selectedItemPos), int(self.WorkType)))
- self.ListItems["%d_ui" % self.ClickedButtonIndex].SetUpVisual("d:/ymir work/ui/tab_02.tga")
- self.ClickedButtonIndex = -99
- self.QuestionDialog.Close()
- self.QuestionDialog = None
- def ActivateBottary(self,vid):
- net.SendChatPacket("/shop_show "+str(vid))
- def DeactivateBottary(self):
- pass
- #net.SendChatPacket("/shop_show")
- def SelectItemFromList(self, idx):
- self.DeactivateBottary()
- for key,item in self.ListItems.iteritems():
- if type(item) is ui.Button:
- item.SetUpVisual("d:/ymir work/ui/tab_01.tga")
- if self.ClickedButtonIndex == idx:
- self.ListItems["%d_ui" % self.ClickedButtonIndex].SetUp()
- self.ClickedButtonIndex = -99
- return
- self.ClickedButtonIndex = idx
- self.ListItems["%d_ui" % self.ClickedButtonIndex].SetUpVisual("d:/ymir work/ui/tab_02.tga")
- if self.WorkType != 0:
- self.ActivateBottary(int(self.ListItems["%d_seller_vid" % self.ClickedButtonIndex].GetText()))
- def __HideItemToolTip(self,row=None):
- if row:
- self.ListItems["%d_ui" % row].HideToolTip()
- else:
- for key,item in self.ListItems.iteritems():
- if type(item) is ui.Button:
- item.HideToolTip()
- def __LoadItem(self, row, range_sequence, item_name, item_count, item_price, seller_name, seller_vid, item_vnum, item_pos, socket_list, attr_list):
- 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")
- self.ListItems["%d_ui" % row].SetEvent(ui.__mem_func__(self.SelectItemFromList),int(row))
- self.ListItems["%d_ui" % row].SetToolTipWindow(self.__CreateGameTypeToolTip(row, int(item_vnum), socket_list, attr_list),0)
- self.ListItems["%d_seller_vid" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(seller_vid), 0, 0)
- self.ListItems["%d_seller_vid" % row].Hide()
- self.ListItems["%d_item_name" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(item_name), 80, 4)
- self.ListItems["%d_item_name" % row].SetHorizontalAlignCenter()
- self.ListItems["%d_seller_name" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(seller_name).replace("_"," "), 215, 4)
- self.ListItems["%d_seller_name" % row].SetHorizontalAlignCenter()
- self.ListItems["%d_item_count" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(item_count), 295, 4)
- self.ListItems["%d_item_count" % row].SetHorizontalAlignCenter()
- self.ListItems["%d_item_price" % row] = Utils().TextLine(self.ListItems["%d_ui" % row], str(localeInfo.NumberToMoneyString(long(item_price))), 383, 4)
- self.ListItems["%d_item_price" % row].SetHorizontalAlignCenter()
- self.ListItems["%d_ui" % row].Hide()
- self.ItemIdxToItemPos[row] = item_pos
- def LoadItems(self, row, seller_name,seller_vid, item_vnum, item_count, item_refine, item_price, item_level,sockets,attrs,item_pos):
- socket_list=[]
- for socket in sockets.split("|"):
- socket_list.append(int(socket))
- attr_list=[]
- for attr in attrs.split("|"):
- a=attr.split(",")
- attr_list.append([int(a[0]),int(a[1])])
- item.SelectItem(int(item_vnum))
- 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)])
- self.ItemCount += 1
- def __CreateGameTypeToolTip(self, row, itemVnum, socket_list, attr_list):
- tooltipItem = uiToolTip.ItemToolTip()
- tooltipItem.AddItemData(int(itemVnum), socket_list, attr_list)
- tooltipItem.UpdateRect()
- tooltipItem.Hide()
- return tooltipItem
- def RemoveItemFromList(self, seller, pos):
- items=[]
- self.ItemCount = 0
- for i in constInfo.SearchItemList:
- if int(i[2]) == int(seller) and int(i[11]) == int(pos):
- continue
- items.append(i)
- self.ItemCount += 1
- constInfo.SearchItemList=items
- self.__HideItemToolTip()
- if self.ItemCount==0:
- constInfo.SearchItemList=[]
- self.ListItems.clear()
- self.ItemIdxToItemPos.clear()
- else:
- self.CreateListUI()
- def RemoveItemsFromList(self, seller):
- items=[]
- self.ItemCount = 0
- for i in constInfo.SearchItemList:
- if int(i[2]) != int(seller):
- items.append(i)
- self.ItemCount += 1
- constInfo.SearchItemList=items
- self.__HideItemToolTip()
- if self.ItemCount==0:
- constInfo.SearchItemList=[]
- self.ListItems.clear()
- self.ItemIdxToItemPos.clear()
- else:
- self.CreateListUI()
- def CreateListUI(self):
- self.__HideItemToolTip()
- if self.ItemCount == 0:
- self._Notification = self.Popup(uiScriptLocale.SHOP_SEARCH_EMPTY_ITEM_LIST, None, None)
- return
- for key,item in self.ListItems.iteritems():
- item.Hide()
- self.ListItems.clear()
- range_control_value = 0
- NewList=[]
- row=0
- for x in sorted(constInfo.SearchItemList, key=lambda x: x[self.sortColumn]):
- range_control_value += 1
- if range_control_value == 14:
- range_control_value = 1
- range_sequence = int(range_control_value)
- seller_name = str(x[1])
- seller_vid = int(x[2])
- item_name = str(x[3])
- item_vnum = int(x[4])
- item_count = str(x[5])
- item_price = str(x[7])
- item_pos = int(x[11])
- socket_list = x[9]
- attr_list = x[10]
- self.__LoadItem(row, range_sequence, item_name, item_count, item_price, seller_name,seller_vid, item_vnum, item_pos, socket_list, attr_list)
- row+=1
- self.PrepButtonPage(1)
- def OnClickNextPage(self):
- self.PrepPage(1)
- def OnClickPrevPage(self):
- self.PrepPage(-1)
- def PrepPage(self,page,force=0):
- self.__HideItemToolTip()
- if page>=0:
- if not force:
- self.CurrentPageNumber += 1
- else:
- self.CurrentPageNumber=page
- Page_Range_Max = self.CurrentPageNumber * self.itemsPerPage + (self.CurrentPageNumber - 1)
- Page_Range_Min = Page_Range_Max - self.itemsPerPage
- for i in xrange(self.ItemCount):
- if i >= Page_Range_Min and i <= Page_Range_Max:
- self.ListItems["%d_ui" % i].Show()
- else:
- self.ListItems["%d_ui" % i].Hide()
- else:
- CalcPageCount = self.ItemCount / (self.itemsPerPage+1)
- CalcLastPageItemStartIndex = CalcPageCount * (self.itemsPerPage+1)
- CalcLastPageItemCount = self.ItemCount-CalcLastPageItemStartIndex
- self.CurrentPageNumber = CalcPageCount + 1
- for i in xrange(self.ItemCount):
- if self.ListItems["%d_ui" % i].IsShow():
- self.ListItems["%d_ui" % i].Hide()
- for i in xrange(CalcLastPageItemCount):
- self.ListItems["%d_ui" % int(CalcLastPageItemStartIndex + i)].Show()
- self.UI["PageSlot"].SetText(str(self.CurrentPageNumber))
- if self.CurrentPageNumber != 1:
- self.UI["PageButtonFirst"].Show()
- self.UI["PagePrev"].Show()
- if self.ItemCount > ((self.itemsPerPage+1) * self.CurrentPageNumber)-1:
- self.UI["PageNext"].Show()
- self.UI["PageButtonNext"].Show()
- else:
- self.UI["PageNext"].Hide()
- self.UI["PageButtonNext"].Hide()
- def OnClickNextButtonPage(self):
- self.PrepButtonPage(-1)
- def OnClickPrevButtonPage(self):
- self.PrepButtonPage(1)
- def LoadItemsForPage(self):
- for key,item in self.ListItems.items():
- item.Hide()
- self.ListItems.clear()
- pos = 0
- page=0
- items = sorted(constInfo.SearchItemList, key=lambda x: x["price"])
- if not self.sortState:
- items = list(reversed(items))
- for i in range(len(items)):
- pos += 1
- if pos == self.itemsPerPage:
- pos = 1
- page+=1
- if page == self.CurrentPageNumber-1:
- self.__LoadItem(i, pos, items[i])
- def PrepButtonPage(self,page):
- self.__HideItemToolTip()
- if page == 1:
- self.CurrentPageNumber = 1
- RangedItemCount = 0
- for i in xrange(self.ItemCount):
- if i >= 0 and i <= self.itemsPerPage:
- RangedItemCount += 1
- self.ListItems["%d_ui" % i].Show()
- else:
- self.ListItems["%d_ui" % i].Hide()
- else:
- self.CurrentPageNumber -= 1
- Page_Range_Max = self.CurrentPageNumber * self.itemsPerPage
- Page_Range_Min = Page_Range_Max - self.itemsPerPage
- RangedItemCount = 0
- for i in xrange(self.ItemCount):
- if i >= Page_Range_Min and i <= Page_Range_Max:
- RangedItemCount += 1
- self.ListItems["%d_ui" % i].Show()
- else:
- self.ListItems["%d_ui" % i].Hide()
- self.UI["PageSlot"].SetText(str(self.CurrentPageNumber))
- if RangedItemCount >= self.itemsPerPage+1:
- self.UI["PageNext"].Show(), self.UI["PageButtonNext"].Show()
- if self.CurrentPageNumber != 1:
- self.UI["PageButtonFirst"].Show(), self.UI["PagePrev"].Show()
- else:
- self.UI["PageButtonFirst"].Hide(), self.UI["PagePrev"].Hide()
- def Show(self):
- self.ResetUISearch()
- self.__RemoveLastSearch()
- self.SetTop()
- ui.BoardWithTitleBar.Show(self)
- def CloseByItem(self, x):
- self.Close()
- def Close(self,first=0):
- self.__HideItemToolTip()
- self.__OnHideList()
- self.ResetUI()
- if not first:
- self.__RemoveLastSearch()
- self.cmd = ""
- self.Hide()
- return True
- def Popup(self, text, width, acceptevent):
- wndPopup = uiCommon.PopupDialog()
- wndPopup.SetText(str(text))
- if width: wndPopup.SetWidth(width)
- if acceptevent: wndPopup.SetAcceptEvent(acceptevent)
- wndPopup.Open()
- return wndPopup
- def __OnValueUpdate(self):
- ui.EditLine.OnIMEUpdate(self.UI["ItemNameValue"])
- val=self.UI["ItemNameValue"].GetText()
- if len(val)>0:
- self.UI["list_names"].Clear()
- f=0
- for it in ITEM_LIST:
- vnum,name=it["vnum"],it["name"]
- if f==15:
- break
- if vnum in SKILL_BOOK_NAMES.keys():
- continue
- if len(name)>=len(val) and name[:len(val)].lower() == val.lower():
- self.UI["list_names"].AppendItem(name,vnum)
- f+=1
- if f==0:
- for book in SKILL_BOOKS:
- if f==15:
- break
- vnum,name,skill=book["vnum"],book["name"],book["skill"]
- if len(name)>=len(val) and name[:len(val)].lower() == val.lower():
- self.UI["list_names"].AppendItem(name,vnum,skill)
- f+=1
- if f>0:
- if self.UI["list_names"].dropped==0:
- self.UI["list_names"].Clear()
- self.UI["list_names"].ExpandMe()
- self.UI["list_names"].Show()
- return
- self.__OnHideList()
- def __OnHideList(self):
- self.UI["list_names"].dropped=0
- self.UI["list_names"].Clear()
- self.UI["list_names"].Hide()
- def OnPressEscapeKey(self):
- if self.UI["list_names"].dropped:
- self.UI["list_names"].dropped=0
- self.UI["list_names"].Clear()
- self.UI["list_names"].Hide()
- else:
- self.Close()
- return True
- def OnUpdate(self):
- self.ItemCount = len(constInfo.SearchItemList)
- if self.lastUpdate > app.GetGlobalTime():
- return
- if self.WorkType>0:
- self.UI["BuyButton"].SetUp()
- self.UI["BuyButton"].Enable()
- else:
- self.UI["BuyButton"].Down()
- self.UI["BuyButton"].Disable()
- if self.ClickedButtonIndex != -99:
- self.UI["BuyButton"].SetEvent(self.OnClickBuyButton)
- else:
- self.UI["BuyButton"].SetEvent(None)
- self.CheckSearchButtonStatus()
- self.lastUpdate=app.GetGlobalTime()+500
- class Utils(object):
- def Button(self, parent, buttonName, tooltipText, x, y, func, UpVisual, OverVisual, DownVisual):
- btn = ui.Button()
- if parent:
- btn.SetParent(parent)
- btn.SetPosition(x, y)
- btn.SetUpVisual(UpVisual)
- btn.SetOverVisual(OverVisual)
- btn.SetDownVisual(DownVisual)
- btn.SetText(buttonName)
- btn.SetToolTipText(tooltipText)
- if func:
- btn.SetEvent(func)
- btn.Show()
- return btn
- def ImageBox(self, parent, image, x, y):
- img = ui.ImageBox()
- if parent:
- img.SetParent(parent)
- img.LoadImage(image)
- img.SetPosition(x, y)
- img.Show()
- return img
- def TextLine(self, parent, text, x, y):
- t = ui.TextLine()
- if parent:
- t.SetParent(parent)
- t.SetPosition(x, y)
- t.SetOutline()
- t.SetText(text)
- t.Show()
- return t
- def EditLine(self, parent, text, x, y, width, heigh, max):
- edit = ui.EditLine()
- if parent:
- edit.SetParent(parent)
- edit.SetSize(width, heigh)
- edit.SetPosition(x, y)
- edit.SetMax(max)
- edit.SetLimitWidth(width)
- edit.SetMultiLine()
- edit.SetText(text)
- edit.Show()
- return edit
- def ExpandedImageBox(self, parent, image, x, y):
- eib = ui.ExpandedImageBox()
- if parent:
- eib.SetParent(parent)
- eib.LoadImage(image)
- eib.SetPosition(x,y)
- eib.Show()
- return eib
- def TextSlot(self, parent, text, x, y, width, height):
- SlotBar = ui.SlotBar()
- if parent:
- SlotBar.SetParent(parent)
- SlotBar.SetSize(width, height)
- SlotBar.SetPosition(x, y)
- SlotBar.Show()
- textline = ui.TextLine()
- textline.SetParent(SlotBar)
- textline.SetPosition(5, 1)
- textline.SetText(text)
- textline.Show()
- return SlotBar, textline
- def ComboBox(self, parent, text, x, y, width):
- class ComboBox(ui.ComboBox):
- def __init__(self):
- ui.ComboBox.__init__(self)
- self.value = []
- def __del__(self):
- ui.ComboBox.__del__(self)
- def InsertItem(self, index, name, value=None):
- self.listBox.InsertItem(index, name)
- self.listBox.ArrangeItem()
- self.value.append(value)
- def OnSelectItem(self, index, name):
- self.SetCurrentItem(name)
- self.CloseListBox()
- self.event(index)
- def GetCurrentValue(self):
- return self.value[self.GetCurrentIndex()]
- def GetCurrentText(self):
- return self.textLine.GetText()
- def GetItemCount(self):
- return len(self.value)
- combo = ComboBox()
- if parent:
- combo.SetParent(parent)
- combo.SetPosition(x, y)
- combo.SetSize(width, 15)
- combo.SetCurrentItem(text)
- combo.Show()
- return combo
- def ImageTextLine(self,parent,image,image_x,image_y,text,text_x,text_y,center=1,color=None):
- img=self.ImageBox(parent,image,image_x,image_y)
- txt=self.TextLine(img,text,text_x,text_y)
- if center:
- txt.SetHorizontalAlignCenter()
- if color:
- txt.SetPackedFontColor(color)
- return img,txt
- def ImageEditLine(self,parent,image,image_x,image_y,text,text_x,text_y, width, heigh, max,center=1,color=None,number=0):
- img=self.ImageBox(parent,image,image_x,image_y)
- txt=self.EditLine(img,text, text_x, text_y, width, heigh, max)
- if center:
- txt.SetHorizontalAlignCenter()
- if color:
- txt.SetPackedFontColor(color)
- if number:
- txt.SetNumberMode()
- txt.SetText(text)
- return img,txt
- def ToggleButton(self, parent, label, x, y, eventDown, eventUp):
- button = ui.ToggleButton()
- if parent != None:
- button.SetParent(parent)
- button.SetPosition(x, y)
- button.SetUpVisual('d:/ymir work/ui/shopsearch/category_inactive_normal.tga')
- button.SetOverVisual('d:/ymir work/ui/shopsearch/category_inactive_hover.tga')
- button.SetDownVisual('d:/ymir work/ui/shopsearch/category_inactive_down.tga')
- button.SetText(label)
- button.state=False
- def GetActive():
- return button.state
- def SetActive(state):
- button.state = state
- if not state:
- button.SetDownVisual('d:/ymir work/ui/shopsearch/category_inactive_down.tga')
- button.SetUp()
- else:
- button.SetDownVisual('d:/ymir work/ui/shopsearch/category_active.tga')
- button.Down()
- button.SetActive = SetActive
- button.GetActive = GetActive
- button.SetToggleDownEvent(eventDown)
- button.SetToggleUpEvent(eventUp)
- button.Show()
- return button
- class DropDown(ui.Window):
- dropped = 0
- dropstat = 0
- width = 0
- height = 0
- maxh = 30
- OnChange = None
- class Item(ui.Window):
- TEMPORARY_PLACE = 0
- width = 0
- height = 0
- def __init__(self,parent, text,value=0,skill=0):
- ui.Window.__init__(self)
- self.textBox=ui.MakeTextLine(self)
- self.textBox.SetText(text)
- self.value = int(value)
- self.skill = int(skill)
- def __del__(self):
- ui.Window.__del__(self)
- def SetParent(self, parent):
- ui.Window.SetParent(self, parent)
- self.parent=parent
- def OnMouseLeftButtonDown(self):
- self.parent.SelectItem(self)
- def SetSize(self,w,h):
- ui.Window.SetSize(self,w,h)
- self.width = w
- self.height = h
- def OnUpdate(self):
- if self.IsIn():
- self.isOver = True
- else:
- self.isOver = False
- def OnRender(self):
- xRender, yRender = self.GetGlobalPosition()
- yRender -= self.TEMPORARY_PLACE
- widthRender = self.width
- heightRender = self.height + self.TEMPORARY_PLACE*2
- grp.SetColor(ui.BACKGROUND_COLOR)
- grp.RenderBar(xRender, yRender, widthRender, heightRender)
- grp.SetColor(ui.DARK_COLOR)
- grp.RenderLine(xRender, yRender, widthRender, 0)
- grp.RenderLine(xRender, yRender, 0, heightRender)
- grp.SetColor(ui.BRIGHT_COLOR)
- grp.RenderLine(xRender, yRender+heightRender, widthRender, 0)
- grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
- if self.isOver:
- grp.SetColor(ui.HALF_WHITE_COLOR)
- grp.RenderBar(xRender + 2, yRender + 3, self.width - 3, heightRender - 5)
- def __init__(self,parent):
- ui.Window.__init__(self,"TOP_MOST")
- self.down = 1
- self.parent=parent
- self.DropList = ui.ListBoxEx()
- self.DropList.SetParent(self)
- self.DropList.itemHeight = 20
- self.DropList.itemWidth = 110
- self.DropList.itemStep = 18
- self.DropList.SetPosition(0,0)
- self.DropList.SetSize(110,2)
- self.DropList.SetSelectEvent(self.SetTitle)
- self.DropList.SetViewItemCount(0)
- self.DropList.Show()
- self.selected = self.DropList.GetSelectedItem()
- self.SetSize(110,95)
- def __del__(self):
- ui.Window.__del__(self)
- def AppendItem(self,text,value=0,skill=0):
- self.DropList.AppendItem(self.Item(self,text,value,skill))
- def OnPressEscapeKey(self):
- self.Hide()
- self.Clear()
- def SetTitle(self,item):
- self.dropped = 0
- self.selected = item
- if self.OnChange:
- self.OnChange()
- self.Clear()
- def SetSize(self,w,h):
- ui.Window.SetSize(self,w,h+10)
- self.width = w
- self.height = h
- self.DropList.SetSize(w,h)
- def Clear(self):
- for x in self.DropList.itemList:
- x.Hide()
- self.DropList.RemoveAllItems()
- def ExpandMe(self):
- if self.dropped == 1:
- self.dropped = 0
- else:
- self.dropped = 1
- def OnUpdate(self):
- (w,h) = self.parent.GetLocalPosition()
- self.maxh =self.DropList.itemStep*len(self.DropList.itemList)
- self.SetPosition(w+15,h+75)
- if self.dropped == 0 or not self.parent.IsShow() or len(self.DropList.itemList)==0:
- self.SetSize(self.GetWidth(),0)
- self.DropList.SetViewItemCount(0)
- self.Hide()
- elif self.dropped == 1:
- self.Show()
- self.SetTop()
- height = self.maxh+5 if int(self.maxh/self.DropList.itemStep) <2 else self.maxh
- self.SetSize(self.GetWidth(),height)
- self.DropList.SetViewItemCount(self.maxh/self.DropList.itemStep)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement