- import ui, grp, app, wiki, item, nonplayer, renderTarget, constInfo, skill, WikiUI
- import localeInfo
- import chat
- import dbg
- # if false will be textline!
- USE_ITEM_COUNT_NUMBER_LINE = False
- # if this true item refine showing start index in +0 than +9 will be next item if have!
- SHOW_NEXT_ITEM_REFINE = False
- SHOW_ITEM_LOWER_TO_BIG = False
- # category load speed
- AUTOLOAD_SPEED = 0.010
- AUTOLOAD_MONSTER_SPEED = 0.020
- IMG_DIR = "d:/ymir work/ui/game/wiki/"
- class EncyclopediaofGame(ui.BoardWithTitleBar):
- def __del__(self):
- ui.BoardWithTitleBar.__del__(self)
- def Destroy(self):
- if self.children.has_key("listBoxCube"):
- self.children["listBoxCube"].ClearItem()
- self.children["listBoxCube"]=None
- del self.children["listBoxCube"]
- if self.children.has_key("resultpageListbox"):
- self.children["resultpageListbox"].RemoveAllItems()
- self.children["resultpageListbox"]=None
- del self.children["resultpageListbox"]
- self.selectArg=""
- self.AIAppendAlgoritm = None
- if len(self.children) != 0:
- ui.BoardWithTitleBar.Destroy(self)
- constInfo.SetMainParent(None)
- constInfo.SetListBox(None)
- self.children = {}
- def __init__(self):
- ui.BoardWithTitleBar.__init__(self)
- self.SetWindowName("EncyclopediaofGame")
- self.AddFlag("movable")
- self.AddFlag("float")
- self.AddFlag("animate")
- self.children = {}
- self.Destroy()
- # Default variable
- self.children["characterIndex"]=0
- self.Initialize()
- def Initialize(self):
- self.SetSize(720, 480)
- self.SetTitleName(localeInfo.WIKI_TITLE)
- self.SetCenterPosition()
- self.LoadSearchInfos()
- self.LoadCategoryInfos()
- self.LoadBlock()
- self.LoadResultPage()
- def LoadResultPage(self):
- resultPageImage = ui.ImageBox()
- resultPageImage.SetParent(self)
- resultPageImage.LoadImage(IMG_DIR+"result_wall.tga")
- resultPageImage.SetPosition(150,104)
- resultPageImage.Show()
- self.children["resultPageImage"] = resultPageImage
- for j in xrange(4):
- characterBtn = ui.RadioButton()
- characterBtn.SetParent(resultPageImage)
- characterBtn.SetEvent(ui.__mem_func__(self.__SelectCharacters),j)
- characterBtn.SetUpVisual(IMG_DIR+"character/%d_0.tga"%j)
- characterBtn.SetOverVisual(IMG_DIR+"character/%d_1.tga"%j)
- characterBtn.SetDownVisual(IMG_DIR+"character/%d_2.tga"%j)
- characterBtn.SetPosition(16+(132*j),11)
- characterBtn.Hide()
- self.children["job_%d_characterBtn"%j] = characterBtn
- resultpageListbox = WikiUI.ScrollBarNew()
- resultpageListbox.SetParent(self)
- self.children["resultpageListbox"] = resultpageListbox
- resultpageListboxScrollbar = WikiUI.ScrollBarNew()
- resultpageListboxScrollbar.SetParent(self)
- self.children["resultpageListboxScrollbar"] = resultpageListboxScrollbar
- resultpageListbox = WikiUI.ListBox()
- resultpageListbox.SetParent(self)
- resultpageListbox.SetScrollBar(resultpageListboxScrollbar)
- self.children["resultpageListbox"] = resultpageListbox
- constInfo.SetMainParent(self)
- constInfo.SetListBox(resultpageListbox)
- resultpagebtn = ui.ExpandedImageBox()
- resultpagebtn.SetParent(self) # <board>
- resultpagebtn.SetPosition(150,32)
- resultpagebtn.SetEvent(ui.__mem_func__(self.LoadGuidePage),"mouse_click")
- resultpagebtn.Show()
- self.children["resultpagebtn"] = resultpagebtn
- self.LoadGuidePage()
- def LoadGuidePage(self, emptyArg = ""):
- self.__SelectType("System#0",False,False)
- def LoadBlock(self):
- blockImage = ui.ImageBox()
- blockImage.SetParent(self)
- blockImage.LoadImage(IMG_DIR+"block.tga")
- blockImage.SetPosition(140,32)
- blockImage.Show()
- self.children["blockImage"] = blockImage
- def LoadSearchInfos(self):
- self.children["selectedMob"] = 0
- self.children["selectedItem"] = 0
- searchSlot = ui.ImageBox()
- searchSlot.SetParent(self)
- searchSlot.LoadImage(IMG_DIR+"search_slot.tga")
- searchSlot.SetPosition(13,32)
- searchSlot.Show()
- self.children["searchSlot"] = searchSlot
- searchButton = ui.Button()
- searchButton.SetParent(searchSlot)
- searchButton.SetUpVisual(IMG_DIR+"button_0.tga")
- searchButton.SetOverVisual(IMG_DIR+"button_1.tga")
- searchButton.SetDownVisual(IMG_DIR+"button_2.tga")
- searchButton.SAFE_SetEvent(self.StartSearchItem)
- searchButton.SetPosition(91,3)
- searchButton.Show()
- self.children["searchButton"] = searchButton
- searchItemName = ui.EditLine()
- searchItemName.SetParent(searchSlot)
- searchItemName.SetPosition(2,5)
- searchItemName.SetSize(91,26)
- #searchItemName.SetFontName("Tahoma:11")
- searchItemName.SetInfoMessage(localeInfo.WIKI_ITEM_NAME)
- searchItemName.SetMax(30)
- searchItemName.isNeedEmpty = False
- searchItemName.OnPressEscapeKey = ui.__mem_func__(self.Close)
- searchItemName.SetOutline()
- searchItemName.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdateItem)
- searchItemName.SetReturnEvent(ui.__mem_func__(self.StartSearchItem))
- searchItemName.Show()
- self.children["searchItemName"] = searchItemName
- searchClearBtn = ui.Button()
- searchClearBtn.SetParent(searchSlot)
- searchClearBtn.SetUpVisual(IMG_DIR+"clear_button_1.tga")
- searchClearBtn.SetOverVisual(IMG_DIR+"clear_button_2.tga")
- searchClearBtn.SetDownVisual(IMG_DIR+"clear_button_1.tga")
- searchClearBtn.SetPosition(75,5)
- searchClearBtn.SAFE_SetEvent(self.ClearEditlineItem)
- searchClearBtn.Hide()
- self.children["searchClearBtn"] = searchClearBtn
- mobSlot = ui.ImageBox()
- mobSlot.SetParent(self)
- mobSlot.LoadImage(IMG_DIR+"search_slot.tga")
- mobSlot.SetPosition(13,32+29)
- mobSlot.Show()
- self.children["mobSlot"] = mobSlot
- searchButtonMob = ui.Button()
- searchButtonMob.SetParent(mobSlot)
- searchButtonMob.SetUpVisual(IMG_DIR+"button_0.tga")
- searchButtonMob.SetOverVisual(IMG_DIR+"button_1.tga")
- searchButtonMob.SetDownVisual(IMG_DIR+"button_2.tga")
- searchButtonMob.SAFE_SetEvent(self.StartSearchMob)
- searchButtonMob.SetPosition(91,2)
- searchButtonMob.Show()
- self.children["searchButtonMob"] = searchButtonMob
- searchMobName = ui.EditLine()
- searchMobName.SetParent(mobSlot)
- searchMobName.SetPosition(2,5)
- searchMobName.SetSize(91,26)
- #searchMobName.SetFontName("Tahoma:11")
- searchMobName.SetInfoMessage(localeInfo.WIKI_MOB_NAME)
- searchMobName.isNeedEmpty = False
- searchMobName.SetMax(30)
- searchMobName.SetOutline()
- searchMobName.OnPressEscapeKey = ui.__mem_func__(self.Close)
- searchMobName.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdateMob)
- searchMobName.SetReturnEvent(ui.__mem_func__(self.StartSearchMob))
- searchMobName.Show()
- self.children["searchMobName"] = searchMobName
- searchClearBtnMob = ui.Button()
- searchClearBtnMob.SetParent(mobSlot)
- searchClearBtnMob.SetUpVisual(IMG_DIR+"clear_button_1.tga")
- searchClearBtnMob.SetOverVisual(IMG_DIR+"clear_button_2.tga")
- searchClearBtnMob.SetDownVisual(IMG_DIR+"clear_button_1.tga")
- searchClearBtnMob.SetPosition(75,5)
- searchClearBtnMob.SAFE_SetEvent(self.ClearEditlineMob)
- searchClearBtnMob.Hide()
- self.children["searchClearBtnMob"] = searchClearBtnMob
- def SetHistoryButtons(self):
- historyBack = self.children["historyBack"]
- historyNext = self.children["historyNext"]
- #currentSearch = self.children["currentSearch"]
- currentIndex = self.children["currentIndex"]
- historySearch = self.children["historySearch"]
- if len(historySearch) == 0:
- historyNext.SetUpVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetOverVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetDownVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyBack.SetUpVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetOverVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetDownVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- return
- #chat.AppendChat(1,"currentIndex %d len %d"%(currentIndex, len(historySearch)))
- if currentIndex > 0:
- historyBack.SetUpVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetOverVisual(IMG_DIR+"btn_arrow_left_hover.tga")
- historyBack.SetDownVisual(IMG_DIR+"btn_arrow_left_down.tga")
- else:
- historyBack.SetUpVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetOverVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetDownVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- if currentIndex+1 >= len(historySearch):
- historyNext.SetUpVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetOverVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetDownVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- else:
- historyNext.SetUpVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetOverVisual(IMG_DIR+"btn_arrow_right_hover.tga")
- historyNext.SetDownVisual(IMG_DIR+"btn_arrow_right_down.tga")
- def RunHistoryArgument(self, argument):
- if argument.find("NEW") != -1:
- argumentList = argument.split("#")
- self.ShowItemInfo(int(argumentList[1]), int(argumentList[2]), False)
- else:
- self.__SelectType(argument, False, False)
- def ClickBackHistory(self):
- currentIndex = self.children["currentIndex"]
- historySearch = self.children["historySearch"]
- if currentIndex-1 < 0:
- return
- currentIndex-=1
- self.children["currentIndex"]=currentIndex
- self.RunHistoryArgument(historySearch[currentIndex])
- self.SetHistoryButtons()
- def ClickNextHistory(self):
- currentIndex = self.children["currentIndex"]
- historySearch = self.children["historySearch"]
- if currentIndex+1 >= len(historySearch):
- return
- currentIndex+=1
- self.children["currentIndex"]=currentIndex
- self.RunHistoryArgument(historySearch[currentIndex])
- self.SetHistoryButtons()
- def get_length(self, x):
- return len(x[0])
- def UpdateItemsList(self):
- input_text_real = self.children["searchItemName"].GetText()
- input_len = len(input_text_real)
- if input_len == 0:
- self.ClearEditlineItem()
- return False
- if localeInfo.IsARABIC():
- input_text = input_text_real
- else:
- input_text = input_text_real.lower()
- self.children["searchClearBtn"].Show()
- items_list = item.GetItemsByName(str(input_text))
- itemList = []
- namesList = []
- for i, itemVnum in enumerate(items_list, start=1):
- (realVnum, isRefineItem) = WikiUI.getRealVnum(itemVnum)
- if isRefineItem:
- realVnum += wiki.GetRefineMaxLevel(realVnum)
- if itemVnum != realVnum:
- continue
- item.SelectItem(itemVnum)
- if localeInfo.IsARABIC():
- itemName = item.GetItemName()
- else:
- itemName = item.GetItemName().lower()
- if itemName.find("+") != -1:
- itemName = itemName[:itemName.find("+")]
- tempName = list(itemName)
- for i in xrange(input_len):
- tempName[i]=list(input_text_real)[i]
- itemName = ""
- for x in xrange(len(tempName)):
- itemName+=tempName[x]
- if itemName in namesList:
- continue
- namesList.append(itemName)
- itemList.append([itemName, realVnum])
- if len(itemList) > 0:
- if len(itemList) > 1:
- itemList = sorted(itemList, key=self.get_length,reverse=False)
- self.children["selectedItem"] = itemList[0][1]
- self.children["searchItemName"].SetInfoMessage(itemList[0][0])
- else:
- self.children["selectedItem"] = 0
- self.children["searchItemName"].SetInfoMessage("")
- return True
- def __OnValueUpdateItem(self):
- ui.EditLine.OnIMEUpdate(self.children["searchItemName"])
- if not self.UpdateItemsList():
- self.ClearEditlineItem()
- def OnKeyDown(self, key):
- if app.DIK_RETURN == key:
- if self.children["selectedItem"] > 1:
- self.StartSearchItem()
- else:
- self.StartSearchItem()
- return True
- return True
- def ClearEditlineItem(self):
- self.children["selectedItem"]=0
- self.children["searchItemName"].SetText("")
- self.children["searchItemName"].SetInfoMessage(localeInfo.WIKI_ITEM_NAME)
- self.children["searchClearBtn"].Hide()
- def StartSearchItem(self):
- if self.children["selectedItem"] != 0:
- self.ShowItemInfo(self.children["selectedItem"],0)
- def UpdateMobsList(self):
- input_text_real = self.children["searchMobName"].GetText()
- input_len = len(input_text_real)
- if input_len == 0:
- self.ClearEditlineMob()
- return False
- if localeInfo.IsARABIC():
- input_text = input_text_real
- else:
- input_text = input_text_real.lower()
- self.children["searchClearBtnMob"].Show()
- mobs_list = nonplayer.GetMobsByName(str(input_text))
- mobList = []
- namesList = []
- for i, mobVnum in enumerate(mobs_list, start=1):
- if localeInfo.IsARABIC():
- mob_name = nonplayer.GetMonsterName(mobVnum)
- else:
- mob_name = nonplayer.GetMonsterName(mobVnum).lower()
- tempName = list(mob_name)
- for i in xrange(input_len):
- tempName[i]=list(input_text_real)[i]
- mob_name = ""
- for x in xrange(len(tempName)):
- mob_name+=tempName[x]
- if mob_name in namesList:
- continue
- namesList.append(mob_name)
- mobList.append([mob_name, mobVnum])
- if len(mobList) > 0:
- if len(mobList) > 1:
- mobList = sorted(mobList, key=self.get_length,reverse=False)
- self.children["selectedMob"] = mobList[0][1]
- self.children["searchMobName"].SetInfoMessage(mobList[0][0])
- else:
- self.children["selectedMob"] = 0
- self.children["searchMobName"].SetInfoMessage("")
- return True
- def __OnValueUpdateMob(self):
- ui.EditLine.OnIMEUpdate(self.children["searchMobName"])
- if not self.UpdateMobsList():
- self.ClearEditlineMob()
- def OnKeyDown(self, key):
- if app.DIK_RETURN == key:
- if self.children["selectedMob"] > 1:
- self.StartSearchMob()
- else:
- self.StartSearchMob()
- return True
- return True
- def ClearEditlineMob(self):
- self.children["selectedMob"]=0
- self.children["searchMobName"].SetText("")
- self.children["searchMobName"].SetInfoMessage(localeInfo.WIKI_MOB_NAME)
- self.children["searchClearBtnMob"].Hide()
- def StartSearchMob(self):
- if self.children["selectedMob"] != 0:
- self.ShowItemInfo(self.children["selectedMob"],1)
- def LoadCategoryInfos(self):
- categoryText = ui.TextLine()
- categoryText.SetParent(self)
- categoryText.SetPosition(13,89)
- categoryText.SetText(localeInfo.WIKI_CATEGORY)
- categoryText.Show()
- self.children["categoryText"] = categoryText
- scrollBarListBoxCube = WikiUI.ScrollBarNew()
- scrollBarListBoxCube.SetParent(self)
- scrollBarListBoxCube.SetPosition(109+15,105)
- scrollBarListBoxCube.Show()
- self.children["scrollBarListBoxCube"] = scrollBarListBoxCube
- listBoxCube = WikiUI.CategoryList()
- listBoxCube.SetParent(self)
- listBoxCube.SetPosition(13,105)
- listBoxCube.SetSize(109, 355)
- listBoxCube.Show()
- listBoxCube.SetScrollBar(scrollBarListBoxCube)
- self.children["listBoxCube"] = listBoxCube
- scrollBarListBoxCube.SetScrollBarSize(listBoxCube.GetHeight()-5)
- self.children["historySearch"] = []
- self.children["currentIndex"] = 0
- historyBack = ui.Button()
- historyBack.SetParent(self)
- historyBack.SetUpVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetOverVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetDownVisual(IMG_DIR+"btn_arrow_left_normal.tga")
- historyBack.SetPosition(13,105+listBoxCube.GetHeight()-5)
- historyBack.SAFE_SetEvent(self.ClickBackHistory)
- historyBack.Show()
- self.children["historyBack"] = historyBack
- historyNext = ui.Button()
- historyNext.SetParent(self)
- historyNext.SetUpVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetOverVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetDownVisual(IMG_DIR+"btn_arrow_right_normal.tga")
- historyNext.SetPosition(13+historyBack.GetWidth()+2,105+listBoxCube.GetHeight()-5)
- historyNext.SAFE_SetEvent(self.ClickNextHistory)
- historyNext.Show()
- self.children["historyNext"] = historyNext
- listBoxCubeItems = [
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_EQUIPMENT, lambda arg = ("Equipment#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_WEAPONS, lambda arg = ("Equipment#0"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_ARMOR, lambda arg = ("Equipment#1"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_HELMET, lambda arg = ("Equipment#2"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_SHIELD, lambda arg = ("Equipment#3"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_EARRING, lambda arg = ("Equipment#4"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_BRACELET, lambda arg = ("Equipment#5"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_NECKLACE, lambda arg = ("Equipment#6"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_SHOES, lambda arg = ("Equipment#7"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_BELT, lambda arg = ("Equipment#8"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_TALISMAN, lambda arg = ("Equipment#9"): self.__SelectType(arg)),},
- # {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EQUIPMENT_RINGS, lambda arg = ("Equipment#10"): self.__SelectType(arg)),},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_COSTUMES, lambda arg = ("Costume#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_WEAPON_SKIN, lambda arg = ("Costume#0"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_BODY_COSTUME, lambda arg = ("Costume#1"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_HAIR_COSTUME, lambda arg = ("Costume#2"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_SASH_COSTUME, lambda arg = ("Costume#3"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_SHINING, lambda arg = ("Costume#4"): self.__SelectType(arg)),},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_MOUNT, lambda arg = ("Mount#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_MOUNT_ITEM, lambda arg = ("Mount#5"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_PET_ITEM, lambda arg = ("Mount#6"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_PET_LEVEABLE_ITEM, lambda arg = ("Mount#7"): self.__SelectType(arg)),},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_CHESTS, lambda arg = ("Chests#"): self.__EmptyFunction(arg)),
- 'children' : (
- # {'item' : self.CreateCategorySubItem(localeInfo.WIKI_CHESTS_BOSS, lambda arg = ("Chests#0"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_CHESTS_DUNGEON, lambda arg = ("Chests#1"): self.__SelectType(arg))},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_CHESTS_OTHER, lambda arg = ("Chests#2"): self.__SelectType(arg))},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_CHESTS_EVENT, lambda arg = ("Chests#3"): self.__SelectType(arg))},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_BOSSES, lambda arg = ("Bosses#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_1_75, lambda arg = ("Bosses#0"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_76_100, lambda arg = ("Bosses#1"): self.__SelectType(arg)),},
- )
- },
- # {
- # 'item' : self.CreateCategoryItem(localeInfo.WIKI_MONSTER, lambda arg = ("Monster#"): self.__EmptyFunction(arg)),
- # 'children' : (
- # {'item' : self.CreateCategorySubItem(localeInfo.WIKI_1_75, lambda arg = ("Monster#0"): self.__SelectType(arg)),},
- # {'item' : self.CreateCategorySubItem(localeInfo.WIKI_76_100, lambda arg = ("Monster#1"): self.__SelectType(arg)),},
- # )
- # },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_METINSTONE, lambda arg = ("Metinstone#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_1_75, lambda arg = ("Metinstone#0"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_76_100, lambda arg = ("Metinstone#1"): self.__SelectType(arg)),},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_SYSTEM2, lambda arg = ("System#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_COSTUME, lambda arg = ("System#2"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_PETS, lambda arg = ("System#4"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_BIOLOGO, lambda arg = ("System#5"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_ALCHEMY, lambda arg = ("System#7"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_EVENTS, lambda arg = ("System#8"): self.__SelectType(arg)),},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_GUIDES, lambda arg = ("System#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_BASIC, lambda arg = ("System#0"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_ATTR_RARE, lambda arg = ("System#1"): self.__SelectType(arg)),},
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_BASIC_DROP, lambda arg = ("System#3"): self.__SelectType(arg)),},
- )
- },
- {
- 'item' : self.CreateCategoryItem(localeInfo.WIKI_GAMERULES, lambda arg = ("System#"): self.__EmptyFunction(arg)),
- 'children' : (
- {'item' : self.CreateCategorySubItem(localeInfo.WIKI_GAME_RULES, lambda arg = ("System#6"): self.__SelectType(arg)),},
- )
- },
- ]
- self.children["listBoxCube"].AppendItemList(listBoxCubeItems)
- def __EmptyFunction(self, arg):
- pass
- def LoadData(self, arg):
- self.__SelectType(arg)
- def __SelectCharacters(self, buttonIndex):
- for j in xrange(4):
- if self.children["characterIndex"] == buttonIndex:
- self.children["job_%d_characterBtn"%j].Down()
- else:
- self.children["job_%d_characterBtn"%j].SetUp()
- self.children["characterIndex"]=buttonIndex
- self.__SelectType(self.selectArg, True)
- def __ClickRadioButton(self, buttonList, buttonIndex):
- try:
- btn=buttonList[buttonIndex]
- except IndexError:
- return
- for eachButton in buttonList:
- eachButton.SetUp()
- btn.Down()
- def SetCharacterImagesStatus(self, flag):
- for j in xrange(4):
- if not flag:
- self.children["job_%d_characterBtn"%j].Hide()
- else:
- self.children["job_%d_characterBtn"%j].Show()
- if self.children["characterIndex"] == j:
- self.children["job_%d_characterBtn"%j].Down()
- else:
- self.children["job_%d_characterBtn"%j].SetUp()
- def ClearResultListbox(self, argList, isSpecial = False):
- self.AIAppendAlgoritm = None
- try:
- resultpageListbox = self.children["resultpageListbox"]
- resultpageListboxScrollbar = self.children["resultpageListboxScrollbar"]
- resultpageListbox.RemoveAllItems()
- resultpageListbox.Show()
- resultpageListboxScrollbar.Hide()
- if len(argList) == 0 or argList[0] == "":
- return
- imageFile = WikiUI.GetResultPageImage(argList)
- if imageFile:
- self.children["resultpagebtn"].LoadImage(imageFile)
- self.children["resultpagebtn"].Show()
- if argList[0] == "Equipment" and isSpecial == False:
- self.SetCharacterImagesStatus(True)
- resultpageListbox.SetPosition(155, 160)
- resultpageListbox.SetSize(540, 318)
- resultpageListboxScrollbar.SetPosition(699, 160)
- resultpageListboxScrollbar.SetScrollBarSize(resultpageListbox.GetHeight()-20)
- else:
- self.SetCharacterImagesStatus(False)
- resultpageListbox.SetPosition(158,109)
- resultpageListbox.SetSize(540, 360)
- resultpageListboxScrollbar.SetPosition(699, 109)
- resultpageListboxScrollbar.SetScrollBarSize(350)
- except:
- pass
- def __SelectType(self, arg, isCharacterBtn = False, isHistory = True):
- #try:
- if isCharacterBtn == False and self.selectArg == arg:
- return
- if isHistory:
- historySearch = self.children["historySearch"]
- historySearch.append(arg)
- self.children["currentIndex"] = len(historySearch)-1
- self.SetHistoryButtons()
- self.selectArg = arg
- argList = arg.split("#")
- self.ClearResultListbox(argList)
- AIAppendAlgoritm = WikiUI.AutoLoad()
- AIAppendAlgoritm.SetFlag("loadTime", AUTOLOAD_SPEED)
- if argList[0] == "Equipment":
- maxSize = wiki.GetCategorySize(self.children["characterIndex"],int(argList[1]))
- if maxSize == 0:
- return
- AIAppendAlgoritm.SetFlag("maxSize", maxSize-1)
- AIAppendAlgoritm.SetFlag("loadType","Equipment")
- AIAppendAlgoritm.SetFlag("characterIndex",self.children["characterIndex"])
- AIAppendAlgoritm.SetFlag("itemType",int(argList[1]))
- elif argList[0] == "Costume" or argList[0] == "Mount":
- maxSize = wiki.GetCostumeSize(int(argList[1]))
- if maxSize == 0:
- return
- AIAppendAlgoritm.SetFlag("maxSize", maxSize-1)
- AIAppendAlgoritm.SetFlag("loadType","Costume")
- AIAppendAlgoritm.SetFlag("itemType",int(argList[1]))
- elif argList[0] == "Chests":
- maxSize = wiki.GetChestSize(int(argList[1]))
- if maxSize == 0:
- return
- AIAppendAlgoritm.SetFlag("maxSize", maxSize-1)
- AIAppendAlgoritm.SetFlag("loadType","Chests")
- AIAppendAlgoritm.SetFlag("itemType",int(argList[1]))
- elif argList[0] == "Bosses":
- maxSize = wiki.GetBossSize(int(argList[1]))
- if maxSize == 0:
- return
- AIAppendAlgoritm.SetFlag("maxSize", maxSize-1)
- AIAppendAlgoritm.SetFlag("loadType","Bosses")
- AIAppendAlgoritm.SetFlag("itemType",int(argList[1]))
- AIAppendAlgoritm.SetFlag("loadTime", AUTOLOAD_MONSTER_SPEED)
- elif argList[0] == "Monster":
- maxSize = wiki.GetMonsterSize(int(argList[1]))
- if maxSize == 0:
- return
- AIAppendAlgoritm.SetFlag("maxSize", maxSize-1)
- AIAppendAlgoritm.SetFlag("loadType","Monster")
- AIAppendAlgoritm.SetFlag("itemType",int(argList[1]))
- AIAppendAlgoritm.SetFlag("loadTime", AUTOLOAD_MONSTER_SPEED)
- elif argList[0] == "Metinstone":
- maxSize = wiki.GetStoneSize(int(argList[1]))
- if maxSize == 0:
- return
- AIAppendAlgoritm.SetFlag("maxSize", maxSize-1)
- AIAppendAlgoritm.SetFlag("loadType","Metinstone")
- AIAppendAlgoritm.SetFlag("itemType",int(argList[1]))
- elif WikiUI.IsArticleCategory(argList):
- if len(argList) == 3:
- event_item = ArticleGUI(argList[1]+"#"+argList[2])
- else:
- event_item = ArticleGUI(int(argList[1]))
- self.children["resultpageListbox"].AppendItem(event_item)
- event_item.LoadItemInfos()
- self.children["resultpageListboxScrollbar"].Hide()
- return
- if AIAppendAlgoritm.GetFlag("loadTime") != 0:
- self.AIAppendAlgoritm = AIAppendAlgoritm
- #except:
- # dbg.TraceError("Saving crash from __SelectType")
- def ShowItemInfo(self, vnum, arg, isHistory = True):
- #try:
- if isHistory:
- historySearch = self.children["historySearch"]
- historySearch.append("NEW#%d#%d"%(vnum, arg))
- self.children["currentIndex"] = len(historySearch)-1
- self.SetHistoryButtons()
- if arg == 3:
- self.__SelectType(vnum)
- elif arg == 0:
- self.selectArg = "Equipment#0"
- self.ClearResultListbox(self.selectArg.split("#"), True)
- self.children["resultpageListboxScrollbar"].Hide()
- (vnum, isRefineItem) = WikiUI.getRealVnum(vnum)
- if isRefineItem:
- vnum += wiki.GetRefineMaxLevel(vnum)
- resultpageListbox = self.children["resultpageListbox"]
- if isRefineItem:
- new_refine_table = EquipmentItem(99, vnum)
- new_refine_table.LoadItemInfos()
- resultpageListbox.AppendItem(new_refine_table)
- item.SelectItem(vnum)
- if item.GetItemType() == item.ITEM_TYPE_GIFTBOX:
- item_table = MonsterItemSpecial(vnum, 3)
- item_table.LoadItemInfos()
- resultpageListbox.AppendItem(item_table)
- monster_statics = MonsterStatics(vnum, 3)
- monster_statics.LoadItemInfos()
- resultpageListbox.AppendItem(monster_statics)
- else:
- item_table = MonsterItemSpecial(vnum, 1)
- item_table.LoadItemInfos()
- resultpageListbox.AppendItem(item_table)
- resultpageListbox.Render(0)
- self.children["resultpageListboxScrollbar"].Hide()
- self.selectArg=""
- elif arg == 1:
- self.selectArg = "Monster#0"
- self.ClearResultListbox(self.selectArg.split("#"), True)
- self.children["resultpageListboxScrollbar"].Show()
- resultpageListbox = self.children["resultpageListbox"]
- monster_table = MonsterItemSpecial(vnum, 0)
- monster_table.LoadItemInfos()
- resultpageListbox.AppendItem(monster_table)
- monster_statics = MonsterStatics(vnum, 0)
- monster_statics.LoadItemInfos()
- resultpageListbox.AppendItem(monster_statics)
- resultpageListbox.Render(0)
- self.selectArg=""
- #except:
- # dbg.TraceError("Saving crash from ShowItemInfo")
- def OnUpdate(self):
- self.CheckLoadProcess()
- def SetTimeForHide(self, isOpen):
- __ai = self.AIAppendAlgoritm
- if __ai != None:
- if isOpen:
- __ai.SetFlag("nexTime",app.GetTime()+0.15)
- else:
- __ai.SetFlag("nexTime",app.GetTime()+999999)
- def CheckLoadProcess(self):
- #try:
- __ai = self.AIAppendAlgoritm
- if __ai != None:
- if __ai.GetFlag("nexTime") > app.GetTime():
- return
- __ai.SetFlag("nexTime", app.GetTime()+__ai.GetFlag("loadTime"))
- loadType = __ai.GetFlag("loadType")
- listIndex = __ai.GetFlag("maxSize")
- if loadType == "Equipment":
- equipItemPointer = EquipmentItem(listIndex, wiki.GetCategoryData(__ai.GetFlag("characterIndex"), __ai.GetFlag("itemType"), listIndex))
- equipItemPointer.LoadItemInfos()
- equipItemPointer.sortIndex = listIndex
- self.children["resultpageListbox"].AppendItem(equipItemPointer, False)
- elif loadType == "Costume":
- createNewWindow = True
- ListBoxItems = self.children["resultpageListbox"].itemList
- if len(ListBoxItems) > 0:
- lastItem = ListBoxItems[len(ListBoxItems)-1]
- if lastItem.CanAddNewItem():
- lastItem.LoadItemInfos(wiki.GetCostumeData(__ai.GetFlag("itemType"), listIndex))
- createNewWindow = False
- if createNewWindow:
- equipItemPointer = SpecialClass(listIndex, 0)
- equipItemPointer.LoadItemInfos(wiki.GetCostumeData(__ai.GetFlag("itemType"), listIndex))
- equipItemPointer.sortIndex = listIndex
- self.children["resultpageListbox"].AppendItem(equipItemPointer, False)
- elif loadType == "Chests":
- (itemVnum, bossVnum) = wiki.GetChestData(__ai.GetFlag("itemType"), listIndex)
- if itemVnum == 0:
- return
- equipItemPointer = ListBoxItemSpecial(listIndex, itemVnum, bossVnum, 0)
- equipItemPointer.LoadItemInfos()
- equipItemPointer.sortIndex = listIndex
- self.children["resultpageListbox"].AppendItem(equipItemPointer, False)
- elif loadType == "Monster":
- mobVnum = wiki.GetMonsterData(__ai.GetFlag("itemType"), listIndex)
- if mobVnum == 0:
- return
- equipItemPointer = ListBoxItemSpecial(listIndex, mobVnum, 0, 1)
- equipItemPointer.LoadItemInfos()
- equipItemPointer.sortIndex = listIndex
- self.children["resultpageListbox"].AppendItem(equipItemPointer, False)
- elif loadType == "Bosses":
- mobVnum = wiki.GetBossData(__ai.GetFlag("itemType"), listIndex)
- if mobVnum == 0:
- return
- equipItemPointer = ListBoxItemSpecial(listIndex, mobVnum, 0, 1)
- equipItemPointer.LoadItemInfos()
- equipItemPointer.sortIndex = listIndex
- self.children["resultpageListbox"].AppendItem(equipItemPointer, False)
- elif loadType == "Metinstone":
- mobVnum = wiki.GetStoneData(__ai.GetFlag("itemType"), listIndex)
- if mobVnum == 0:
- return
- equipItemPointer = ListBoxItemSpecial(listIndex, mobVnum, 0, 1)
- equipItemPointer.LoadItemInfos()
- equipItemPointer.sortIndex = listIndex
- self.children["resultpageListbox"].AppendItem(equipItemPointer, False)
- self.SetPositionToSort(self.children["resultpageListbox"], loadType)
- __ai.SetFlag("maxSize", listIndex-1)
- if listIndex-1 < 0:
- self.AIAppendAlgoritm = None
- self.children["resultpageListbox"].CalculateScroll()
- #except:
- # dbg.TraceError("Saving crash from OnUpdate")
- def get_key(self, data):
- return data.sortIndex
- def SetPositionToSort(self, listBox, loadType):
- itemList = listBox.itemList
- if len(itemList) > 1:
- if loadType == "Costume":
- itemList = sorted(itemList, key=self.get_key,reverse=True)
- else:
- itemList = sorted(itemList, key=self.get_key,reverse=SHOW_ITEM_LOWER_TO_BIG)
- y = 0
- for child in itemList:
- child.Hide()
- child.SetPosition(0, y, True)
- child.OnRender()
- child.Show()
- y+=child.GetHeight()
- def CreateCategoryItem(self, text, event, offset = 0):
- listboxItem = WikiUI.CategoryItem(text)
- listboxItem.SetVisible(True)
- listboxItem.SetEvent(event)
- listboxItem.SetOffset(offset)
- return listboxItem
- def CreateCategorySubItem(self, text, event, offset = 0):
- listboxItem = WikiUI.CategorySubItem(text)
- listboxItem.SetEvent(event)
- listboxItem.SetOffset(offset)
- return listboxItem
- def SetRenderTargetsStatus(self, bShowStatus):
- if self.children.has_key("resultpageListbox"):
- resultpageListbox = self.children["resultpageListbox"].itemList
- for child in resultpageListbox:
- if child.renderIndex != -1:
- renderTarget.SetVisibility(child.renderIndex, bShowStatus)
- def Open(self):
- self.SetRenderTargetsStatus(True)
- self.Show()
- self.SetTimeForHide(True)
- def Close(self):
- self.SetRenderTargetsStatus(False)
- self.SetTimeForHide(False)
- self.children["searchMobName"].KillFocus()
- self.children["searchItemName"].KillFocus()
- self.Hide()
- def OnPressExitKey(self):
- self.Close()
- return TRUE
- def OnPressEscapeKey(self):
- self.Close()
- return TRUE
- class EquipmentItem(WikiUI.DefaultWikiImage):
- class RefineItem(WikiUI.DefaultWikiWindow):
- def __del__(self):
- WikiUI.DefaultWikiWindow.__del__(self)
- def __init__(self):
- WikiUI.DefaultWikiWindow.__init__(self)
- def LoadData(self, refine, itemVnum, refineCount, refineData):
- tooltipImage = ui.ImageBox()
- tooltipImage.SetParent(self)
- tooltipImage.SetPosition(0,0)
- tooltipImage.SetSize(41, 19)
- tooltipImage.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,(itemVnum-wiki.GetRefineMaxLevel(itemVnum))+refine)
- tooltipImage.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- tooltipImage.Show()
- self.children.append(tooltipImage)
- step_refine = ui.TextLine()
- step_refine.SetParent(self)
- step_refine.SetText("+%d"%refine)
- step_refine.SetHorizontalAlignCenter()
- step_refine.SetPosition(21,5)
- step_refine.Show()
- self.children.append(step_refine)
- step_price = ui.TextLine()
- step_price.SetParent(self)
- if SHOW_NEXT_ITEM_REFINE:
- step_price.SetText(localeInfo.MoneyFormat(refineData["cost"]).replace(".000","k"))
- else:
- if refine:
- step_price.SetText(localeInfo.MoneyFormat(refineData["cost"]).replace(".000","k"))
- else:
- step_price.SetText("-")
- step_price.SetHorizontalAlignCenter()
- priceYPos = [140, 140, 140, 180, 230, 275]
- step_price.SetPosition(21, priceYPos[refineCount]-21)
- step_price.Show()
- self.children.append(step_price)
- for i in xrange(refineCount):
- refineItem = refineData["item_vnum_%d"%i]
- needInsertIcon = refineItem != 0
- if needInsertIcon == True and SHOW_NEXT_ITEM_REFINE == False and refine == 0:
- needInsertIcon = False
- if needInsertIcon:
- item.SelectItem(refineItem)
- refineItemIcon = ui.ExpandedImageBox()
- refineItemIcon.SetParent(self)
- refineItemIcon.LoadImage(item.GetIconImageFileName())
- refineItemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,refineItem)
- refineItemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- refineItemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",0,refineItem)
- refineItemIcon.SetPosition(5,20+5+(i*(32+5+10)))
- refineItemIcon.Show()
- self.children.append(refineItemIcon)
- if refineData["item_count_%d"%i] > 0:
- if USE_ITEM_COUNT_NUMBER_LINE:
- refineItemCount = ui.NumberLine()
- refineItemCount.SetParent(self)
- refineItemCount.SetNumber(str(refineData["item_count_%d"%i]))
- refineItemCount.SetPosition(5+28,20+5+(i*(32+5+10))+32)
- else:
- refineItemCount = ui.TextLine()
- refineItemCount.SetParent(self)
- refineItemCount.SetText(str(refineData["item_count_%d"%i]))
- refineItemCount.SetPosition(5+28,20+5+(i*(32+5+10))+20)
- refineItemCount.Show()
- self.children.append(refineItemCount)
- else:
- emptyRefine = ui.TextLine()
- emptyRefine.SetParent(self)
- emptyRefine.AddFlag("not_pick")
- emptyRefine.SetPosition(self.GetWidth()/2,21+18+(i*44))
- emptyRefine.SetText("-")
- emptyRefine.Show()
- self.children.append(emptyRefine)
- def __del__(self):
- WikiUI.DefaultWikiImage.__del__(self)
- def Destroy(self):
- self.refineItems = []
- self.listIndex = 0
- self.itemVnum = 0
- self.refineCount = 0
- WikiUI.DefaultWikiImage.Destroy(self)
- def __init__(self, listIndex, itemVnum):
- WikiUI.DefaultWikiImage.__init__(self)
- self.Destroy()
- self.listIndex = listIndex
- self.itemVnum = itemVnum
- self.refineCount = 2
- self.refineLevel = wiki.GetRefineMaxLevel(itemVnum)
- for j in xrange(self.refineLevel+1):
- if item.SelectItemWiki((self.itemVnum-self.refineLevel)+j) == 1:
- argv = wiki.GetRefineItems(item.GetRefineSet())
- if argv != 0:
- self.InsertRefine(*argv)
- continue
- self.InsertRefine(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
- self.LoadImage(IMG_DIR+"slot/slot_%d.tga"%self.refineCount)
- self.children.append(self)
- # add scrollbar extra height!
- if self.refineLevel >= 11:
- self.SetSize(self.GetWidth(),self.GetHeight()+20)
- def LoadItemInfos(self):
- if self.IsLoaded == False:
- self.IsLoaded=True
- item.SelectItem(self.itemVnum-self.refineLevel)
- (firstLevel, secondLevel) = (0, 0)
- for i in xrange(item.LIMIT_MAX_NUM):
- (limitType, limitValue) = item.GetLimit(i)
- if item.LIMIT_LEVEL == limitType:
- if limitValue != 0:
- firstLevel=limitValue
- break
- item.SelectItem(self.itemVnum)
- for i in xrange(item.LIMIT_MAX_NUM):
- (limitType, limitValue) = item.GetLimit(i)
- if item.LIMIT_LEVEL == limitType:
- if limitValue != 0:
- secondLevel=limitValue
- break
- itemName = ui.TextLine()
- itemName.SetParent(self)
- item_name = item.GetItemName()
- if item_name.find("+") != -1:
- item_name = item_name[:item_name.find("+")]
- itemName.SetText(item_name)
- itemName.SetPosition(5, 5)
- itemName.Show()
- self.children.append(itemName)
- itemLevel = ui.TextLine()
- itemLevel.SetParent(self)
- if secondLevel != firstLevel:
- itemLevel.SetText(localeInfo.WIKI_LEVEL_TEXT2%(firstLevel,secondLevel,0,self.refineLevel))
- else:
- itemLevel.SetText(localeInfo.WIKI_LEVEL_TEXT%(firstLevel,0,self.refineLevel))
- itemLevel.SetPosition(355,5)
- itemLevel.Show()
- self.children.append(itemLevel)
- itemIcon = ui.ExpandedImageBox()
- itemIcon.SetParent(self)
- if item.GetIconImageFileName().find("gr2") == -1:
- itemIcon.LoadImage(item.GetIconImageFileName())
- else:
- itemIcon.LoadImage("icon/item/27995.tga")
- itemLevelCoordinates = [ [0,0],[0,0],[10,55],[10,70],[10,80],[10,115]]
- itemIcon.SetPosition(itemLevelCoordinates[self.refineCount][0],itemLevelCoordinates[self.refineCount][1])
- if self.listIndex == 99:
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,self.itemVnum-self.refineLevel)
- else:
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,self.itemVnum)
- itemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click", 0)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- itemIcon.Show()
- self.children.append(itemIcon)
- upgradeItem = ui.TextLine()
- upgradeItem.SetParent(self)
- upgradeItem.SetText(localeInfo.WIKI_UPGRADE_COSTS)
- upgradeItem.SetPosition(50,24)
- upgradeItem.Show()
- self.children.append(upgradeItem)
- yangCost = ui.TextLine()
- yangCost.SetParent(self)
- yangCost.SetText(localeInfo.WIKI_YANG_COSTS)
- list = [140, 140, 140, 180, 230, 275]
- yangCost.SetPosition(58,list[self.refineCount])
- yangCost.Show()
- self.children.append(yangCost)
- listboxSizes = [ [0,0],[0,0],[411,136],[411,180],[411,228],[411,276]]
- refinedVnum = item.GetRefinedVnum()
- if refinedVnum != 0:
- item.SelectItem(refinedVnum)
- nextItemIcon = ui.ExpandedImageBox()
- nextItemIcon.SetParent(self)
- if item.GetIconImageFileName().find("gr2") == -1:
- nextItemIcon.LoadImage(item.GetIconImageFileName())
- else:
- nextItemIcon.LoadImage("icon/item/27995.tga")
- nextItemIcon.SetPosition(75,itemLevelCoordinates[self.refineCount][1])
- nextItemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,refinedVnum)
- nextItemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- nextItemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",refinedVnum)
- nextItemIcon.Show()
- self.children.append(nextItemIcon)
- Listbox = WikiUI.ListBoxEx(True)
- Listbox.SetParent(self)
- Listbox.SetSize(listboxSizes[self.refineCount][0],listboxSizes[self.refineCount][1])
- Listbox.SetPosition(130,20)
- Listbox.SetItemStep(41)
- Listbox.SetItemSize(41,listboxSizes[self.refineCount][1])
- Listbox.SetViewItemCount(10)
- Listbox.SetOnMouseWhell(False)
- if self.refineLevel >= 11:
- scrollheightpos = [ 156, 156, 156, 200, 255, 296]
- scrollbar = WikiUI.HorizontalScrollBarNew()
- scrollbar.SetParent(self)
- scrollbar.SetPosition(0, scrollheightpos[self.refineCount])
- scrollbar.SetScrollBarSize(540)
- #scrollbar.SetScrollBarSize(10.0/float(self.refineLevel))
- scrollbar.itsNeedDoubleRender = True
- scrollbar.Show()
- Listbox.SetScrollBar(scrollbar)
- self.children.append(scrollbar)
- for i in xrange(self.refineLevel+1):
- refine_data = self.RefineItem()
- Listbox.AppendItem(refine_data)
- if SHOW_NEXT_ITEM_REFINE:
- refine_data.LoadData(i, self.itemVnum, self.refineCount, self.refineItems[i])
- else:
- if i == 0:
- refine_data.LoadData(i, self.itemVnum, self.refineCount, self.refineItems[i])
- else:
- refine_data.LoadData(i, self.itemVnum, self.refineCount, self.refineItems[i-1])
- Listbox.SetBasePos(0)
- Listbox.Show()
- self.Listbox = Listbox
- self.OnRender()
- self.Show()
- def OnClickItem(self, arg, vnum = 0):
- self.OverOutItem()
- parent = constInfo.GetMainParent()
- if parent != None:
- if vnum != 0:
- parent.ShowItemInfo(vnum+wiki.GetRefineMaxLevel(vnum),0)
- else:
- parent.ShowItemInfo(self.itemVnum,0)
- def InsertRefine(self, id,item_vnum_0,item_count_0,item_vnum_1,item_count_1,item_vnum_2,item_count_2,item_vnum_3,item_count_3,item_vnum_4,item_count_4,cost,prob,refine_count):
- self.refineItems.append(\
- {
- "id" : int(id),\
- "item_vnum_0" : int(item_vnum_0),\
- "item_count_0" : int(item_count_0),\
- "item_vnum_1" : int(item_vnum_1),\
- "item_count_1" : int(item_count_1),\
- "item_vnum_2" : int(item_vnum_2),\
- "item_count_2" : int(item_count_2),\
- "item_vnum_3" : int(item_vnum_3),\
- "item_count_3" : int(item_count_3),\
- "item_vnum_4" : int(item_vnum_4),\
- "item_count_4" : int(item_count_4),\
- "cost" : long(cost),\
- "prob" : long(prob),\
- "refine_count" : int(refine_count),\
- },
- )
- if refine_count > self.refineCount:
- self.refineCount = refine_count
- class MonsterItemSpecial(WikiUI.DefaultWikiImage):
- def __del__(self):
- WikiUI.DefaultWikiImage.__del__(self)
- def Destroy(self):
- self.vnum = 0
- renderTarget.SetVisibility(self.renderIndex, False)
- renderTarget.ResetModel(self.renderIndex)
- WikiUI.DefaultWikiImage.Destroy(self)
- def __init__(self, vnum, type):
- WikiUI.DefaultWikiImage.__init__(self)
- self.vnum = vnum
- self.isType = type
- self.LoadImage(IMG_DIR+"slot/special_slot.tga")
- self.children.append(self)
- def LoadItemInfos(self):
- if self.IsLoaded == False:
- self.IsLoaded=True
- #self.renderIndex = app.GetRandom(900, 1000)
- self.renderIndex = renderTarget.GetFreeIndex(1000, 1000000)
- Listbox = None
- if self.isType == 0 or self.isType == 3:
- if self.isType == 0:
- renterTarget = ui.RenderTarget()
- renterTarget.SetParent(self)
- renterTarget.SetPosition(1,1)
- renterTarget.SetSize(187,163)
- renterTarget.SetRenderTarget(self.renderIndex)
- renterTarget.Show()
- self.children.append(renterTarget)
- renderTarget.SelectModel(self.renderIndex, self.vnum)
- renderTarget.SetVisibility(self.renderIndex, True)
- elif self.isType == 3:
- item.SelectItem(self.vnum)
- itemIcon = ui.ExpandedImageBox()
- itemIcon.SetParent(self)
- if item.GetIconImageFileName().find("gr2") == -1:
- itemIcon.LoadImage(item.GetIconImageFileName())
- else:
- itemIcon.LoadImage("icon/item/27995.tga")
- itemIcon.SetPosition(70,45)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,self.vnum)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- itemIcon.Show()
- self.children.append(itemIcon)
- Listbox = WikiUI.ListBoxGrid()
- Listbox.SetParent(self)
- Listbox.SetPosition(190, 25)
- Listbox.SetSize(350, 138)
- Listbox.AddRenderEvent(self.OnRender)
- dropList = ui.TextLine()
- dropList.SetParent(self)
- if self.isType == 0:
- dropList.SetText(localeInfo.WIKI_DROPLIST_INFO%nonplayer.GetMonsterName(self.vnum))
- elif self.isType == 3:
- dropList.SetText(localeInfo.WIKI_CONTENT_INFO%item.GetItemName())
- dropList.SetPosition(300,6)
- dropList.Show()
- self.children.append(dropList)
- monsterInfo = ui.TextLine()
- monsterInfo.SetParent(self)
- if self.isType == 0:
- monsterInfo.SetText(localeInfo.WIKI_STATICS_INFO%nonplayer.GetMonsterName(self.vnum))
- elif self.isType == 3:
- monsterInfo.SetText(localeInfo.WIKI_AVAIBLE_AT)
- monsterInfo.SetHorizontalAlignCenter()
- monsterInfo.SetPosition(245,170)
- monsterInfo.Show()
- self.children.append(monsterInfo)
- if self.isType == 0:
- sizeFunc = wiki.GetMobInfoSize
- getFunc = wiki.GetMobInfoData
- elif self.isType == 3:
- sizeFunc = wiki.GetSpecialInfoSize
- getFunc = wiki.GetSpecialInfoData
- grid = ui.Grid(width = 11, height = 50)
- for j in xrange(sizeFunc(self.vnum)):
- (vnum, count) = getFunc(self.vnum,j)
- if vnum == 0:
- continue
- item.SelectItem(vnum)
- (width, height) = item.GetItemSize()
- if width == 0 or height == 0:
- continue
- item_new = ui.ExpandedImageBox()
- item_new.SetParent(Listbox)
- if item.GetIconImageFileName().find("gr2") == -1:
- item_new.LoadImage(item.GetIconImageFileName())
- else:
- item_new.LoadImage("icon/item/27995.tga")
- item_new.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,vnum)
- item_new.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- item_new.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",0,vnum)
- pos = grid.find_blank(width, height)
- grid.put(pos, width, height)
- (x, y) = WikiUI.calculatePos(pos, 10)
- item_new.SetPosition(x, y, True)
- item_new.itsNeedDoubleRender = True
- item_new.Show()
- self.children.append(item_new)
- Listbox.AppendItem(item_new)
- if count>1:
- itemNumberline = ui.NumberLine()
- itemNumberline.SetParent(Listbox)
- itemNumberline.SetNumber(str(count))
- itemNumberline.SetPosition(x+15,y+item_new.GetHeight()-10,True)
- itemNumberline.itsNeedDoubleRender = True
- itemNumberline.Show()
- Listbox.AppendItem(itemNumberline)
- self.children.append(itemNumberline)
- if Listbox.isNeedScrollBar():
- scrollBar = WikiUI.ScrollBarNew()
- scrollBar.SetParent(Listbox)
- scrollBar.SetPosition(Listbox.GetWidth()-10, 0)
- scrollBar.SetScrollBarSize(137)
- scrollBar.Hide()
- self.children.append(scrollBar)
- Listbox.SetScrollBar(scrollBar)
- else:
- item.SelectItem(self.vnum)
- if WikiUI.IsCanModelPreview(self.vnum):
- renterTarget = ui.RenderTarget()
- renterTarget.SetParent(self)
- renterTarget.SetPosition(1,1)
- renterTarget.SetSize(187,163)
- renterTarget.SetRenderTarget(self.renderIndex)
- renterTarget.Show()
- self.children.append(renterTarget)
- WikiUI.SetItemToModelPreview(self.renderIndex, self.vnum)
- itemIcon = ui.ExpandedImageBox()
- itemIcon.SetParent(self)
- if item.GetIconImageFileName().find("gr2") == -1:
- itemIcon.LoadImage(item.GetIconImageFileName())
- else:
- itemIcon.LoadImage("icon/item/27995.tga")
- if WikiUI.IsCanModelPreview(self.vnum):
- itemIcon.SetPosition(renterTarget.GetWidth()-itemIcon.GetWidth()-3,3)
- else:
- itemIcon.SetPosition(70,45)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,self.vnum)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- itemIcon.Show()
- self.children.append(itemIcon)
- avaible = ui.TextLine()
- avaible.SetParent(self)
- avaible.SetText(localeInfo.WIKI_AVAIBLE_AT)
- avaible.SetPosition(350,6)
- avaible.Show()
- self.children.append(avaible)
- Listbox = WikiUI.ListBoxGrid()
- Listbox.SetParent(self)
- Listbox.SetPosition(190, 25)
- Listbox.SetSize(350, 128)
- Listbox.AddRenderEvent(self.OnRender)
- item.SelectItem(60001)
- (itemVnum, isRefineItem) = WikiUI.getRealVnum(self.vnum)
- (x , y, isHave, unknownItem) = (5, 5, False, item.GetItemName())
- chest_list = wiki.GetItemDropFromChest(itemVnum, isRefineItem)
- for i, chestVnum in enumerate(chest_list, start=0):
- if isHave == False:
- isHave=True
- self.AppendTextLine(Listbox, "|cFF0080FF"+localeInfo.WIKI_CHESTS+":", x, y)
- y+=14
- item.SelectItem(chestVnum)
- self.AppendTextLine(Listbox, "|Eemoji/e_wiki|e "+item.GetItemName() if unknownItem != item.GetItemName() else "|Eemoji/e_wiki|e "+localeInfo.WIKI_UNKOWN_ITEM%chestVnum,x,y)
- y+=14
- if len(Listbox.itemList) > 0:
- y+=28
- isHave = False
- mob_vnums = wiki.GetItemDropFromMonster(itemVnum, isRefineItem)
- for i, mobVnum in enumerate(mob_vnums, start=0):
- if isHave == False:
- isHave=True
- self.AppendTextLine(Listbox, "|cFF0080FF"+localeInfo.WIKI_MONSTER+":",x,y)
- y+=14
- level = nonplayer.GetMonsterLevel(mobVnum)
- self.AppendTextLine(Listbox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_UNKOWN_MOB%mobVnum if level <= 0 else "|Eemoji/e_wiki|e "+nonplayer.GetMonsterName(mobVnum)+ " - Lv."+str(level), x, y)
- y+=14
- if Listbox.isNeedScrollBar():
- scrollBar = WikiUI.ScrollBarNew()
- scrollBar.SetParent(Listbox)
- scrollBar.SetPosition(Listbox.GetWidth()-10, 0)
- scrollBar.SetScrollBarSize(137)
- self.children.append(scrollBar)
- Listbox.SetScrollBar(scrollBar)
- if Listbox != None:
- if len(Listbox.itemList) > 0:
- self.Listbox = Listbox
- Listbox.SetBasePos(0, False)
- Listbox.Show()
- self.OnRender()
- self.Show()
- def AppendTextLine(self, Listbox, text, x, y):
- textLine = ui.TextLine()
- textLine.SetParent(Listbox)
- textLine.itsNeedDoubleRender = True
- textLine.SetText(text)
- textLine.SetPosition(x, y, True)
- textLine.Show()
- self.children.append(textLine)
- Listbox.AppendItem(textLine)
- class MonsterStatics(WikiUI.DefaultWikiImage):
- def __del__(self):
- WikiUI.DefaultWikiImage.__del__(self)
- def Destroy(self):
- self.mobVnum = 0
- WikiUI.DefaultWikiImage.Destroy(self)
- def __init__(self, mobVnum, isType):
- WikiUI.DefaultWikiImage.__init__(self)
- self.Destroy()
- self.mobVnum = mobVnum
- self.isType = isType
- self.LoadImage(IMG_DIR+"slot/big_empty.tga")
- self.children.append(self)
- def LoadItemInfos(self):
- if self.IsLoaded == False:
- self.IsLoaded=True
- ListBox = WikiUI.ListBoxGrid()
- ListBox.SetParent(self)
- ListBox.SetSize(self.GetWidth(), self.GetHeight()-10)
- ListBox.AddRenderEvent(self.OnRender)
- if self.isType == 3:
- item.SelectItem(60001)
- (itemVnum, isRefineItem) = WikiUI.getRealVnum(self.mobVnum)
- (x , y, isHave, unknownItem) = (5, 5, False, item.GetItemName())
- chest_list = wiki.GetItemDropFromChest(itemVnum, isRefineItem)
- for i, chestVnum in enumerate(chest_list, start=0):
- if isHave == False:
- isHave=True
- self.AppendTextLine(ListBox, "|cFF0080FF"+localeInfo.WIKI_CHESTS+":", x, y)
- y+=14
- item.SelectItem(chestVnum)
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+item.GetItemName() if unknownItem != item.GetItemName() else "|Eemoji/e_wiki|e "+localeInfo.WIKI_UNKOWN_ITEM%chestVnum,x,y)
- y+=14
- if len(ListBox.itemList) > 0:
- y+=28
- isHave = False
- mob_vnums = wiki.GetItemDropFromMonster(itemVnum, isRefineItem)
- for i, mobVnum in enumerate(mob_vnums, start=0):
- if isHave == False:
- isHave=True
- self.AppendTextLine(ListBox, "|cFF0080FF"+localeInfo.WIKI_MONSTER+":",x,y)
- y+=14
- level = nonplayer.GetMonsterLevel(mobVnum)
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_UNKOWN_MOB%mobVnum if level <= 0 else "|Eemoji/e_wiki|e "+nonplayer.GetMonsterName(mobVnum)+ " - Lv."+str(level), x, y)
- y+=14
- elif self.isType == 0:
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_LEVEL_MOB_TEXT%nonplayer.GetMonsterLevel(self.mobVnum), 5, 3)
- RACE_FLAG_TO_NAME = {
- 1 << 0 : localeInfo.TARGET_INFO_RACE_ANIMAL,
- 1 << 1 : localeInfo.TARGET_INFO_RACE_UNDEAD,
- 1 << 2 : localeInfo.TARGET_INFO_RACE_DEVIL,
- 1 << 3 : localeInfo.TARGET_INFO_RACE_HUMAN,
- 1 << 4 : localeInfo.TARGET_INFO_RACE_ORC,
- 1 << 5 : localeInfo.TARGET_INFO_RACE_MILGYO,
- }
- SUB_RACE_FLAG_TO_NAME = {
- 1 << 11 : localeInfo.TARGET_INFO_RACE_ELEC,
- 1 << 12 : localeInfo.TARGET_INFO_RACE_FIRE,
- 1 << 13 : localeInfo.TARGET_INFO_RACE_ICE,
- 1 << 14 : localeInfo.TARGET_INFO_RACE_WIND,
- 1 << 15 : localeInfo.TARGET_INFO_RACE_EARTH,
- 1 << 16 : localeInfo.TARGET_INFO_RACE_DARK,
- 1 << 17 : localeInfo.TARGET_INFO_RACE_ZODIAC,
- }
- mainrace = ""
- subrace = ""
- dwRaceFlag = nonplayer.GetMonsterRaceFlag(self.mobVnum)
- for i in xrange(18):
- curFlag = 1 << i
- if constInfo.IS_SET(dwRaceFlag, curFlag):
- if RACE_FLAG_TO_NAME.has_key(curFlag):
- mainrace += RACE_FLAG_TO_NAME[curFlag] + ", "
- elif SUB_RACE_FLAG_TO_NAME.has_key(curFlag):
- subrace += SUB_RACE_FLAG_TO_NAME[curFlag] + ", "
- if nonplayer.IsMonsterStone(self.mobVnum):
- mainrace += localeInfo.TARGET_INFO_RACE_METIN + ", "
- if mainrace == "":
- mainrace = localeInfo.TARGET_INFO_NO_RACE
- else:
- mainrace = mainrace[:-2]
- if subrace == "":
- subrace = localeInfo.TARGET_INFO_NO_RACE
- else:
- subrace = subrace[:-2]
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_TYPE%(mainrace,subrace), 5, 3*(7*1))
- (mindmg, maxdmg) = nonplayer.GetMonsterDamage(self.mobVnum)
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_DMG%(mindmg,maxdmg,nonplayer.GetMonsterMaxHP(self.mobVnum)), 5, 3*(7*2))
- (minyang, maxyang) = nonplayer.GetMonsterPrice(self.mobVnum)
- exp = nonplayer.GetMonsterExp(self.mobVnum)
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_YNG%(minyang,maxyang,exp), 5, 3*(7*3))
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_DEFENSES, 5, 3*(7*4))
- resists = {
- nonplayer.MOB_RESIST_SWORD : localeInfo.TARGET_INFO_RESIST_SWORD,
- nonplayer.MOB_RESIST_TWOHAND : localeInfo.TARGET_INFO_RESIST_TWOHAND,
- nonplayer.MOB_RESIST_DAGGER : localeInfo.TARGET_INFO_RESIST_DAGGER,
- nonplayer.MOB_RESIST_BELL : localeInfo.TARGET_INFO_RESIST_BELL,
- nonplayer.MOB_RESIST_FAN : localeInfo.TARGET_INFO_RESIST_FAN,
- nonplayer.MOB_RESIST_BOW : localeInfo.TARGET_INFO_RESIST_BOW,
- nonplayer.MOB_RESIST_MAGIC : localeInfo.TARGET_INFO_RESIST_MAGIC,
- }
- c = 0
- for resist, label in resists.items():
- resistText = label % nonplayer.GetMonsterResist(self.mobVnum, resist)
- self.AppendTextLine(ListBox, "|Eemoji/e_wiki|e %s"%resistText, 5+8, 3*(7*(5+c)))
- c+=1
- if ListBox.isNeedScrollBar():
- scrollBar = WikiUI.ScrollBarNew()
- scrollBar.SetParent(ListBox)
- scrollBar.SetPosition(ListBox.GetWidth()-10,5)
- scrollBar.SetScrollBarSize(150)
- scrollBar.Show()
- ListBox.SetScrollBar(scrollBar)
- self.children.append(scrollBar)
- self.OnRender()
- ListBox.Show()
- self.Listbox = ListBox
- self.Show()
- def AppendTextLine(self, Listbox, text, x, y):
- textLine = ui.TextLine()
- textLine.SetParent(Listbox)
- textLine.itsNeedDoubleRender = True
- textLine.SetText(text)
- textLine.SetPosition(x, y, True)
- textLine.Show()
- self.children.append(textLine)
- Listbox.AppendItem(textLine)
- class ListBoxItemSpecial(WikiUI.DefaultWikiImage):
- def __del__(self):
- WikiUI.DefaultWikiImage.__del__(self)
- def Destroy(self):
- self.renterTarget = None
- WikiUI.DefaultWikiImage.Destroy(self)
- def __init__(self, index, itemVnum, mobVnum, type):
- WikiUI.DefaultWikiImage.__init__(self)
- self.listIndex = index
- self.itemVnum = itemVnum
- self.mobVnum = mobVnum
- self.isType = type
- self.LoadImage(IMG_DIR+"slot/slot.tga")
- self.children.append(self)
- def LoadItemInfos(self):
- if self.IsLoaded == False:
- self.IsLoaded=True
- name = "-"
- if self.isType == 0:
- item.SelectItem(self.itemVnum)
- name = nonplayer.GetMonsterName(self.mobVnum)
- else:
- name = nonplayer.GetMonsterName(self.itemVnum)
- itemName = ui.TextLine()
- itemName.SetParent(self)
- if self.isType == 0:
- itemName.SetText(localeInfo.WIKI_CONTENT_INFO%item.GetItemName())
- else:
- itemName.SetText(localeInfo.WIKI_DROPLIST_INFO%name)
- itemName.SetText(itemName.GetText()+" - Level %d"%nonplayer.GetMonsterLevel(self.itemVnum))
- itemName.SetText(itemName.GetText()+" - Mob Vnum %d"%self.itemVnum) # test
- itemName.SetPosition(270, 5)
- itemName.SetHorizontalAlignCenter()
- itemName.Show()
- self.children.append(itemName)
- origin = ui.TextLine()
- origin.SetParent(self)
- origin.SetText(localeInfo.WIKI_ORIGIN)
- origin.SetPosition(480,5)
- origin.Show()
- self.children.append(origin)
- bossVnum = ui.TextLine()
- bossVnum.SetParent(self)
- bossVnum.SetHorizontalAlignCenter()
- bossVnum.SetPosition(490,45)
- if self.isType == 0 and self.mobVnum != 0:
- bossVnum.SetText(name)
- else:
- bossVnum.SetText("-")
- bossVnum.Show()
- self.children.append(bossVnum)
- if self.isType == 0:
- itemIcon = ui.ExpandedImageBox()
- itemIcon.SetParent(self)
- if item.GetIconImageFileName().find("gr2") == -1:
- itemIcon.LoadImage(item.GetIconImageFileName())
- else:
- itemIcon.LoadImage("icon/item/27995.tga")
- itemIcon.SetPosition(10,25)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,self.itemVnum)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- itemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",0,self.itemVnum)
- itemIcon.Show()
- self.children.append(itemIcon)
- else:
- renterTarget = ui.RenderTarget()
- renterTarget.SetParent(self)
- renterTarget.SetPosition(1,1)
- renterTarget.SetSize(47,87)
- renterTarget.SetRenderTarget(20+self.listIndex)
- renterTarget.Show()
- renterTarget.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",1,self.itemVnum)
- self.children.append(renterTarget)
- renderTarget.SelectModel(20+self.listIndex, self.itemVnum)
- renderTarget.SetVisibility(20+self.listIndex, True)
- whileSize = 0
- if self.isType == 0:
- whileSize = wiki.GetSpecialInfoSize(self.itemVnum)
- else:
- whileSize = wiki.GetMobInfoSize(self.itemVnum)
- if whileSize != 0:
- Listbox = WikiUI.ListBoxGrid()
- Listbox.SetParent(self)
- Listbox.SetPosition(48,22)
- Listbox.SetSize(403, 65)
- Listbox.AddRenderEvent(self.OnRender)
- Listbox.Show()
- gridCalculate = ui.Grid(width = 12, height = 50)
- screenSize = 0
- for j in xrange(whileSize):
- vnum, count = 0,0
- if self.isType == 0:
- (vnum,count) = wiki.GetSpecialInfoData(self.itemVnum,j)
- else:
- (vnum,count) = wiki.GetMobInfoData(self.itemVnum,j)
- if vnum == 0:
- continue
- item.SelectItem(vnum)
- (width,height) = item.GetItemSize()
- if width == 0 or height == 0:
- continue
- pos = gridCalculate.find_blank(width, height)
- gridCalculate.put(pos,width,height)
- (x, y) = WikiUI.calculatePos(pos, 11)
- item_new = ui.ExpandedImageBox()
- item_new.SetParent(Listbox)
- if item.GetIconImageFileName().find("gr2") == -1:
- item_new.LoadImage(item.GetIconImageFileName())
- else:
- item_new.LoadImage("icon/item/27995.tga")
- item_new.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,vnum)
- item_new.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- item_new.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",0,vnum)
- item_new.SetPosition(x, y, True)
- if y+item_new.GetHeight() > screenSize:
- screenSize = y+item_new.GetHeight()
- item_new.itsNeedDoubleRender = True
- item_new.Show()
- Listbox.AppendItem(item_new)
- self.children.append(item_new)
- if count>1:
- if USE_ITEM_COUNT_NUMBER_LINE:
- itemNumberline = ui.NumberLine()
- else:
- itemNumberline = ui.TextLine()
- itemNumberline.SetParent(Listbox)
- if USE_ITEM_COUNT_NUMBER_LINE:
- itemNumberline.SetNumber(str(count))
- itemNumberline.SetPosition(x+15,y+item_new.GetHeight()-10,True)
- else:
- itemNumberline.SetText(str(count))
- itemNumberline.SetPosition(x+item_new.GetWidth()-5,y+item_new.GetHeight()-10,True)
- itemNumberline.itsNeedDoubleRender = True
- itemNumberline.Show()
- Listbox.AppendItem(itemNumberline)
- self.children.append(itemNumberline)
- if Listbox.isNeedScrollBar():
- scrollbar = WikiUI.ScrollBarNew()
- scrollbar.SetParent(self)
- scrollbar.SetPosition(443, 23)
- scrollbar.SetScrollBarSize(63)
- scrollbar.itsNeedDoubleRender = True
- scrollbar.Show()
- self.children.append(scrollbar)
- Listbox.SetScrollBar(scrollbar)
- self.Listbox = Listbox
- self.OnRender()
- self.Show()
- class ArticleGUI(WikiUI.DefaultWikiImage):
- def __del__(self):
- WikiUI.DefaultWikiImage.__del__(self)
- def Destroy(self):
- self.index = 0
- self.scrollPos = 0.0
- WikiUI.DefaultWikiImage.Destroy(self)
- def __init__(self, index):
- WikiUI.DefaultWikiImage.__init__(self)
- if isinstance(index, str):
- if index.find("#") != -1:
- indexList = index.split("#")
- if len(indexList) == 2:
- self.index = int(indexList[0])
- self.scrollPos = float(indexList[1])
- else:
- self.index = index
- self.scrollPos = 0.0
- self.LoadImage(IMG_DIR+"slot/big2_empty.tga")
- self.children.append(self)
- def LoadItemInfos(self):
- if self.IsLoaded == False:
- self.IsLoaded = True
- Listbox = WikiUI.ListBoxGrid()
- Listbox.SetParent(self)
- Listbox.SetPosition(0,0)
- Listbox.SetSize(self.GetWidth()-15, self.GetHeight()-15)
- Listbox.AddRenderEvent(self.OnRender)
- self.ReadArticle(Listbox, self.index)
- self.CheckScrollBarNeed(Listbox)
- Listbox.Show()
- self.Listbox = Listbox
- self.OnRender()
- self.Show()
- def GetFileName(self, index):
- file_dict= {
- 0 : "wiki/basic_guide.txt",
- 1 : "wiki/bonus67.txt",
- 2 : "wiki/costume.txt",
- 3 : "wiki/drops.txt",
- 4 : "wiki/pets.txt",
- 5 : "wiki/biologist.txt",
- 6 : "wiki/gamerules.txt",
- 7 : "wiki/alchemy.txt",
- 8 : "wiki/events.txt",
- }
- if file_dict.has_key(index):
- return app.GetLocalePath()+"/"+file_dict[index]
- return ""
- def ParseToken(self, data):
- data = data.replace(chr(10), "").replace(chr(13), "")
- if not (len(data) and data[0] == "["):
- return (False, {}, data)
- fnd = data.find("]")
- if fnd <= 0:
- return (False, {}, data)
- content = data[1:fnd]
- data = data[fnd+1:]
- content = content.split(";")
- container = {}
- for i in content:
- i = i.strip()
- splt = i.split("=")
- if len(splt) == 1:
- container[splt[0].lower().strip()] = True
- else:
- container[splt[0].lower().strip()] = splt[1].lower().strip()
- return (True, container, data)
- def GetColorFromString(self, strCol):
- retData = []
- dNum = 4
- hCol = long(strCol, 16)
- if hCol <= 0xFFFFFF:
- retData.append(1.0)
- dNum = 3
- for i in xrange(dNum):
- retData.append(float((hCol >> (8 * i)) & 0xFF) / 255.0)
- retData.reverse()
- return retData
- def DirectionEvent(self, emptyArg, type, index, pos):
- parent = constInfo.GetMainParent()
- if parent != None:
- if "item" == type:
- parent.ShowItemInfo(index,0)
- elif "mob" == type:
- parent.ShowItemInfo(index,1)
- elif "article" == type:
- parent.ShowItemInfo("system#"+str(index)+"#"+str(pos),3)
- def ReadArticle(self, Listbox, index):
- fileName = self.GetFileName(index)
- if fileName == "":
- return
- try:
- lines = pack_open(fileName, "r").readlines()
- except:
- pass
- _y = 10
- for i in lines:
- (ret, tokenMap, i) = self.ParseToken(i)
- if ret:
- if tokenMap.has_key("banner_img"):
- mainParent = constInfo.GetMainParent()
- if mainParent != None:
- resultpagebtn = mainParent.children["resultpagebtn"]
- resultpagebtn.LoadImage(tokenMap["banner_img"])
- resultpagebtn.Show()
- tokenMap.pop("banner_img")
- #
- if tokenMap.has_key("img"):
- cimg = ui.ExpandedImageBox()
- cimg.SetParent(Listbox)
- cimg.AddFlag("attach")
- cimg.AddFlag("not_pick")
- cimg.LoadImage(tokenMap["img"])
- cimg.Show()
- tokenMap.pop("img")
- x = 0
- if tokenMap.has_key("x"):
- x = int(tokenMap["x"])
- tokenMap.pop("x")
- y = 0
- if tokenMap.has_key("y"):
- y = int(tokenMap["y"])
- tokenMap.pop("y")
- if tokenMap.has_key("center_align"):
- cimg.SetPosition(Listbox.GetWidth() / 2 - cimg.GetWidth() / 2, y, True)
- tokenMap.pop("center_align")
- elif tokenMap.has_key("right_align"):
- cimg.SetPosition(Listbox.GetWidth() - cimg.GetWidth(), y, True)
- tokenMap.pop("right_align")
- else:
- cimg.SetPosition(x, y, True)
- self.children.append(cimg)
- Listbox.AppendItem(cimg)
- if tokenMap.has_key("item"):
- itemVnum = int(tokenMap["item"])
- tokenMap.pop("item")
- item.SelectItem(itemVnum)
- cimg = ui.ExpandedImageBox()
- cimg.SetParent(Listbox)
- if item.GetIconImageFileName().find("gr2") == -1:
- cimg.LoadImage(item.GetIconImageFileName())
- else:
- cimg.LoadImage("icon/item/27995.tga")
- cimg.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,itemVnum)
- cimg.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- cimg.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",0,itemVnum)
- cimg.Show()
- x = 0
- if tokenMap.has_key("x"):
- x = int(tokenMap["x"])
- tokenMap.pop("x")
- y = 0
- if tokenMap.has_key("y"):
- y = int(tokenMap["y"])
- tokenMap.pop("y")
- if tokenMap.has_key("center_align"):
- cimg.SetPosition(Listbox.GetWidth() / 2 - cimg.GetWidth() / 2, y, True)
- tokenMap.pop("center_align")
- elif tokenMap.has_key("right_align"):
- cimg.SetPosition(Listbox.GetWidth() - cimg.GetWidth(), y, True)
- tokenMap.pop("right_align")
- else:
- cimg.SetPosition(x, y, True)
- self.children.append(cimg)
- Listbox.AppendItem(cimg)
- if tokenMap.has_key("link"):
- link = tokenMap["link"]
- tokenMap.pop("link")
- if tokenMap.has_key("linkindex"):
- linkindex = int(tokenMap["linkindex"])
- tokenMap.pop("linkindex")
- else:
- linkindex = 0
- if tokenMap.has_key("linkpos"):
- linkpos = float(tokenMap["linkpos"])
- tokenMap.pop("linkpos")
- else:
- linkpos = 0
- if tokenMap.has_key("linktext"):
- linkText = WikiUI.GetArgToString(tokenMap["linktext"])
- tokenMap.pop("linktext")
- else:
- linkText = ""
- tmp = WikiUI.TextlineLink()
- tmp.SetParent(Listbox)
- if tokenMap.has_key("font_size"):
- splt = localeInfo.UI_DEF_FONT.split(":")
- tmp.SetFontName(splt[0]+":"+tokenMap["font_size"])
- tokenMap.pop("font_size")
- else:
- tmp.SetFontName(localeInfo.UI_DEF_FONT)
- tmp.SetText(WikiUI.GetArgToString(linkText), 1.2)
- tmp.Show()
- tmp.SetSize(*tmp.GetTextSize())
- if tokenMap.has_key("color"):
- fontColor = self.GetColorFromString(tokenMap["color"])
- tmp.SetColor(grp.GenerateColor(fontColor[0], fontColor[1], fontColor[2], fontColor[3]), fontColor[0], fontColor[1], fontColor[2])
- tokenMap.pop("color")
- tmp.SetMouseLeftButtonDownEvent(ui.__mem_func__(self.DirectionEvent), "",link, linkindex, linkpos)
- tmp.linkIcon.SetMouseLeftButtonDownEvent(ui.__mem_func__(self.DirectionEvent),"", link, linkindex, linkpos)
- if tokenMap.has_key("y"):
- y = int(tokenMap["y"])
- tokenMap.pop("y")
- if tokenMap.has_key("center_align"):
- tmp.SetPosition(Listbox.GetWidth() / 2 - tmp.GetWidth() / 2, y, True)
- tokenMap.pop("center_align")
- elif tokenMap.has_key("right_align"):
- tmp.SetPosition(Listbox.GetWidth() - tmp.GetWidth(), y, True)
- tokenMap.pop("right_align")
- else:
- tmp.SetPosition(x, y, True)
- self.children.append(tmp)
- Listbox.AppendItem(tmp)
- if tokenMap.has_key("rendertarget"):
- mobVnum = int(tokenMap["rendertarget"])
- tokenMap.pop("rendertarget")
- (width, height) = (47, 87)
- if tokenMap.has_key("width"):
- width = int(tokenMap["width"])
- tokenMap.pop("width")
- if tokenMap.has_key("height"):
- height = int(tokenMap["height"])
- tokenMap.pop("height")
- #targetIndex = app.GetRandom(100,1000)
- targetIndex = renderTarget.GetFreeIndex(1000, 1000000)
- tmp = ui.RenderTarget()
- tmp.SetParent(Listbox)
- tmp.SetSize(width, height)
- tmp.SetRenderTarget(targetIndex)
- tmp.SetEvent(ui.__mem_func__(self.DirectionEvent),"mouse_click", "mob", mobVnum, 0)
- tmp.Show()
- renderTarget.SelectModel(targetIndex, mobVnum)
- renderTarget.SetVisibility(targetIndex, True)
- if tokenMap.has_key("y"):
- y = int(tokenMap["y"])
- tokenMap.pop("y")
- if tokenMap.has_key("center_align"):
- tmp.SetPosition(Listbox.GetWidth() / 2 - tmp.GetWidth() / 2, y, True)
- tokenMap.pop("center_align")
- elif tokenMap.has_key("right_align"):
- tmp.SetPosition(Listbox.GetWidth() - tmp.GetWidth(), y, True)
- tokenMap.pop("right_align")
- else:
- tmp.SetPosition(x, y, True)
- self.children.append(tmp)
- Listbox.AppendItem(tmp)
- if ret and not len(i):
- continue
- i = i.replace("*", "|Eemoji/e_wiki|e")
- tmp = ui.TextLine()
- tmp.SetParent(Listbox)
- if tokenMap.has_key("font_size"):
- splt = localeInfo.UI_DEF_FONT.split(":")
- tmp.SetFontName(splt[0]+":"+tokenMap["font_size"])
- tokenMap.pop("font_size")
- else:
- tmp.SetFontName(localeInfo.UI_DEF_FONT)
- tmp.SetText(WikiUI.GetArgToString(i))
- tmp.Show()
- tmp.SetSize(*tmp.GetTextSize())
- if tokenMap.has_key("color"):
- fontColor = self.GetColorFromString(tokenMap["color"])
- tmp.SetPackedFontColor(grp.GenerateColor(fontColor[0], fontColor[1], fontColor[2], fontColor[3]))
- tokenMap.pop("color")
- tmp.SetPosition(5, _y, True)
- _y+=tmp.GetHeight()
- if tokenMap.has_key("center_align"):
- tmp.SetPosition(Listbox.GetWidth() / 2 - tmp.GetWidth() / 2, tmp.GetLocalPosition()[1], True)
- tokenMap.pop("center_align")
- elif tokenMap.has_key("right_align"):
- tmp.SetPosition(Listbox.GetWidth() - tmp.GetWidth(), tmp.GetLocalPosition()[1], True)
- tokenMap.pop("right_align")
- elif tokenMap.has_key("x_padding"):
- tmp.SetPosition(int(tokenMap["x_padding"]), tmp.GetLocalPosition()[1], True)
- tokenMap.pop("x_padding")
- tmp.Show()
- self.children.append(tmp)
- Listbox.AppendItem(tmp)
- def CheckScrollBarNeed(self, Listbox):
- if Listbox.isNeedScrollBar():
- scrollBar = WikiUI.ScrollBarNew()
- scrollBar.SetParent(self)
- scrollBar.SetPosition(self.GetWidth()-15+8,2)
- scrollBar.SetScrollBarSize(337)
- scrollBar.Show()
- self.children.append(scrollBar)
- Listbox.SetScrollBar(scrollBar)
- scrollBar.SetPos(self.scrollPos)
- Listbox.OnScroll()
- class SpecialClass(WikiUI.DefaultWikiWindow):
- def __del__(self):
- WikiUI.DefaultWikiWindow.__del__(self)
- def Destroy(self):
- self.vnumList = []
- WikiUI.DefaultWikiWindow.Destroy(self)
- def __init__(self, listIndex, isMonster):
- WikiUI.DefaultWikiWindow.__init__(self)
- self.Destroy()
- self.isType = isMonster
- self.listIndex = listIndex
- self.SetSize(540, 147)
- def CanAddNewItem(self):
- return len(self.vnumList) < 4
- def LoadItemInfos(self, data = -1):
- if data == -1:
- return
- xPos = len(self.vnumList) * (127+9)
- bg = ui.ExpandedImageBox()
- bg.SetParent(self)
- bg.LoadImage(IMG_DIR+"slot/special_single.tga")
- bg.SetPosition(xPos, 0)
- bg.Show()
- self.children.append(bg)
- item.SelectItem(data)
- itemIcon = ui.ExpandedImageBox()
- itemIcon.SetParent(bg)
- if item.GetIconImageFileName().find("gr2") == -1:
- itemIcon.LoadImage(item.GetIconImageFileName())
- else:
- itemIcon.LoadImage("icon/item/27995.tga")
- itemIcon.SetPosition((bg.GetWidth()/2)-(itemIcon.GetWidth()/2), ((bg.GetHeight()-20)/2)-(itemIcon.GetHeight()/2))
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,data)
- itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
- itemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click",0,data)
- itemIcon.Show()
- self.children.append(itemIcon)
- itemName = ui.TextLine()
- itemName.SetParent(bg)
- itemName.SetText(item.GetItemName())
- maxWidth = bg.GetWidth()-15
- newText = ""
- while True:
- if itemName.GetTextSize()[0] > maxWidth:
- newText = itemName.GetText()[:len(itemName.GetText())-2]+"..."
- itemName.SetText(itemName.GetText()[:len(itemName.GetText())-2])
- continue
- break
- if newText != "":
- itemName.SetText(newText)
- itemName.SetPosition(bg.GetWidth()/2, bg.GetHeight()-18)
- itemName.SetHorizontalAlignCenter()
- itemName.Show()
- self.children.append(itemName)
- self.vnumList.append(data)
- self.OnRender()
- self.Show()
- def OverOutItem(self):
- if self.renderIndex != 0:
- renderTarget.SetVisibility(self.renderIndex, False)
- renderTarget.ResetModel(self.renderIndex)
- WikiUI.DefaultWikiWindow.OverOutItem(self)
- def OverInItem(self, itemVnum):
- interface = constInfo.GetInterfaceInstance()
- if interface:
- tooltipItem = interface.tooltipItem
- if tooltipItem:
- tooltipItem.ClearToolTip()
- self.renderIndex = renderTarget.GetFreeIndex(1000, 1000000)
- tooltipItem.toolTipWidth-= 35
- renterTarget = ui.RenderTarget()
- renterTarget.SetParent(tooltipItem)
- renterTarget.SetPosition(10, 5)
- renterTarget.SetSize(tooltipItem.toolTipWidth-20,150)
- renterTarget.SetRenderTarget(self.renderIndex)
- renterTarget.Show()
- tooltipItem.childrenList.append(renterTarget)
- tooltipItem.toolTipHeight+=150
- tooltipItem.ResizeToolTip()
- WikiUI.SetItemToModelPreview(self.renderIndex, itemVnum)
- tooltipItem.SetItemToolTipWiki(itemVnum)
wiki