AD: Mt2009 - Mobile & PC - 30 January 2026 CHECK THE PRESENTATION!
Can anyone help me with this error message?
this error always comes up when i move the scrollbar.
this error always comes up when i move the scrollbar.
0505 17:14:27212 :: Traceback (most recent call last):
0505 17:14:27212 :: File "ui.py", line 3154, in OnMove
0505 17:14:27213 :: File "ui.py", line 58, in __call__
0505 17:14:27213 :: File "ui.py", line 40, in __call__
0505 17:14:27213 :: File "uiWiki.py", line 1191, in OnMove
0505 17:14:27213 :: File "ui.py", line 58, in __call__
0505 17:14:27214 :: File "ui.py", line 40, in __call__
0505 17:14:27214 :: File "uiWiki.py", line 1297, in __OnScroll
0505 17:14:27214 :: File "uiWiki.py", line 1321, in SetBasePos
0505 17:14:27214 :: File "uiWiki.py", line 2377, in OnRender
0505 17:14:27215 :: AttributeError
0505 17:14:27215 :: :
0505 17:14:27215 :: 'NoneType' object has no attribute 'GetGlobalPosition'
0505 17:14:27215 ::
0505 17:14:27212 :: File "ui.py", line 3154, in OnMove
0505 17:14:27213 :: File "ui.py", line 58, in __call__
0505 17:14:27213 :: File "ui.py", line 40, in __call__
0505 17:14:27213 :: File "uiWiki.py", line 1191, in OnMove
0505 17:14:27213 :: File "ui.py", line 58, in __call__
0505 17:14:27214 :: File "ui.py", line 40, in __call__
0505 17:14:27214 :: File "uiWiki.py", line 1297, in __OnScroll
0505 17:14:27214 :: File "uiWiki.py", line 1321, in SetBasePos
0505 17:14:27214 :: File "uiWiki.py", line 2377, in OnRender
0505 17:14:27215 :: AttributeError
0505 17:14:27215 :: :
0505 17:14:27215 :: 'NoneType' object has no attribute 'GetGlobalPosition'
0505 17:14:27215 ::
Python:
import localeInfo
import dbg, ui, grp, app, wiki, item, nonplayer, renderTarget
def calculateRect(curValue, maxValue):
return -1.0 + float(curValue) / float(maxValue)
def HAS_FLAG(value, flag):
return (value & flag) == flag
def calculatePos(pos, maxWidth):
yincrease = 0
x , y = 0,0
for j in xrange(30):
if pos <= maxWidth:
if yincrease > 0:
pos = pos-1
if pos < 0:
pos = 0
x = 32*pos
break
else:
pos-= maxWidth
yincrease+=1
if yincrease > 0:
y = yincrease * 32
return (x,y)
IMG_DIR = "d:/ymir work/ui/game/wiki/"
class EncyclopediaofGame(ui.BoardWithTitleBar):
def __init__(self):
ui.BoardWithTitleBar.__init__(self)
self.AddFlag("movable")
# Search
self.selectedMob = 0
self.selectedItem = 0
self.searchSlot = None
self.searchButton = None
self.searchText = None
self.searchItemNameText = None
self.searchItemName = None
self.searchClearBtn = None
self.mobSlot = None
self.searchButtonMob = None
self.searchMobNameText = None
self.searchMobName = None
self.searchClearBtnMob = None
# Category
self.categoryText = None
self.listBoxCube = None
self.scrollBarListBoxCube = None
self.tooltipItem = None
# Block
self.blockImage = None
# Result Page
self.resultpageImage=None
self.resultpagebtn=None
self.characterList = []
self.characterIndex = 0
self.resultpageListbox = None
self.resultpageListboxScrollbar = None
self.blocImage = None
self.selectArg=""
self.Initialize()
def __del__(self):
ui.BoardWithTitleBar.__del__(self)
def Initialize(self):
self.SetSize(720,480)
self.SetTitleName(localeInfo.WIKI_TITLE)
self.SetCenterPosition()
self.LoadSearchInfos()
self.LoadCategoryInfos()
self.LoadBlock()
self.LoadResultPage()
def SetTooltip(self, tooltip):
self.tooltipItem = tooltip
def LoadResultPage(self):
self.resultpagebtn = ui.Button()
self.resultpagebtn.SetParent(self)
self.resultpagebtn.SetUpVisual(IMG_DIR+"guide_wall.tga")
self.resultpagebtn.SetOverVisual(IMG_DIR+"guide_wall.tga")
self.resultpagebtn.SetDownVisual(IMG_DIR+"guide_wall.tga")
self.resultpagebtn.SetPosition(140+10,32)
self.resultpagebtn.SAFE_SetEvent(self.LoadGuidePage)
self.resultpagebtn.Show()
self.resultPageImage = ui.ImageBox()
self.resultPageImage.SetParent(self)
self.resultPageImage.LoadImage(IMG_DIR+"result_wall.tga")
self.resultPageImage.SetPosition(140+10,104)
self.resultPageImage.Show()
for j in xrange(4):
ch = ui.RadioButton()
ch.SetParent(self.resultPageImage)
ch.SetEvent(ui.__mem_func__(self.__SelectCharacters),self.characterList,j)
ch.SetUpVisual(IMG_DIR+"character/%d_0.tga"%j)
ch.SetOverVisual(IMG_DIR+"character/%d_1.tga"%j)
ch.SetDownVisual(IMG_DIR+"character/%d_2.tga"%j)
ch.SetPosition(16+(132*j),11)
ch.Hide()
self.characterList.append(ch)
self.resultpageListbox = ListBoxWiki()
self.resultpageListbox.SetParent(self)
self.resultpageListbox.SetPosition(140+18,104+34+5+11)
self.resultpageListbox.SetSize(570, 326)
self.resultpageListbox.SetViewItemCount(10)
self.resultpageListboxScrollbar = ScrollBarNew()
self.resultpageListboxScrollbar.SetParent(self)
self.resultpageListboxScrollbar.SetPosition(140+18+541,104+34+5+11)
self.resultpageListboxScrollbar.SetScrollBarSize(310)
self.resultpageListbox.SetScrollBar(self.resultpageListboxScrollbar)
def LoadGuidePage(self):
self.resultpagebtn.SetUpVisual(IMG_DIR+"guide_wall.tga")
self.resultpagebtn.SetOverVisual(IMG_DIR+"guide_wall.tga")
self.resultpagebtn.SetDownVisual(IMG_DIR+"guide_wall.tga")
def LoadBlock(self):
self.blocImage = ui.ImageBox()
self.blocImage.SetParent(self) # <board>
self.blocImage.LoadImage(IMG_DIR+"block.tga")
self.blocImage.SetPosition(140,32)
self.blocImage.Show()
def LoadSearchInfos(self):
self.selectedMob = 0
self.selectedItem = 0
self.searchSlot = ui.ImageBox()
self.searchSlot.SetParent(self) # <board>
self.searchSlot.LoadImage(IMG_DIR+"search_slot.tga")
self.searchSlot.SetPosition(13,32)
self.searchSlot.Show()
self.searchButton = ui.Button()
self.searchButton.SetParent(self.searchSlot) # <self.searchSlot>
self.searchButton.SetUpVisual(IMG_DIR+"button_0.tga")
self.searchButton.SetOverVisual(IMG_DIR+"button_1.tga")
self.searchButton.SetDownVisual(IMG_DIR+"button_2.tga")
self.searchButton.SAFE_SetEvent(self.StartSearchItem)
self.searchButton.SetPosition(91,3)
self.searchButton.Show()
self.searchItemNameText = ui.TextLine()
self.searchItemNameText.SetParent(self.searchSlot)
self.searchItemNameText.SetPosition(2,5)
self.searchItemNameText.SetFontName("Tahoma:11")
self.searchItemNameText.SetText("")
self.searchItemNameText.Show()
self.searchItemName = ui.EditLine()
self.searchItemName.SetParent(self.searchSlot)
self.searchItemName.SetPosition(2,5)
self.searchItemName.SetSize(91,26)
self.searchItemName.SetFontName("Tahoma:11")
self.searchItemName.SetText(localeInfo.WIKI_ITEM_NAME)
self.searchItemName.SetMax(30)
self.searchItemName.Show()
self.searchItemName.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdateItem)
self.searchItemName.SetReturnEvent(ui.__mem_func__(self.StartSearchItem))
self.searchClearBtn = ui.Button()
self.searchClearBtn.SetParent(self.searchSlot)
self.searchClearBtn.SetUpVisual(IMG_DIR+"clear_button_1.tga")
self.searchClearBtn.SetOverVisual(IMG_DIR+"clear_button_2.tga")
self.searchClearBtn.SetDownVisual(IMG_DIR+"clear_button_1.tga")
self.searchClearBtn.SetPosition(75,5)
self.searchClearBtn.SAFE_SetEvent(self.ClearEditlineItem)
self.searchClearBtn.Hide()
self.mobSlot = ui.ImageBox()
self.mobSlot.SetParent(self) # <board>
self.mobSlot.LoadImage(IMG_DIR+"search_slot.tga")
self.mobSlot.SetPosition(13,32+29)
self.mobSlot.Show()
self.searchButtonMob = ui.Button()
self.searchButtonMob.SetParent(self.mobSlot) # <self.searchSlot>
self.searchButtonMob.SetUpVisual(IMG_DIR+"button_0.tga")
self.searchButtonMob.SetOverVisual(IMG_DIR+"button_1.tga")
self.searchButtonMob.SetDownVisual(IMG_DIR+"button_2.tga")
self.searchButtonMob.SAFE_SetEvent(self.StartSearchMob)
self.searchButtonMob.SetPosition(91,2)
self.searchButtonMob.Show()
self.searchMobNameText = ui.TextLine()
self.searchMobNameText.SetParent(self.mobSlot)
self.searchMobNameText.SetPosition(2,5)
self.searchMobNameText.SetFontName("Tahoma:11")
self.searchMobNameText.SetText("")
self.searchMobNameText.Show()
self.searchMobName = ui.EditLine()
self.searchMobName.SetParent(self.mobSlot)
self.searchMobName.SetPosition(2,5)
self.searchMobName.SetSize(91,26)
self.searchMobName.SetFontName("Tahoma:11")
self.searchMobName.SetText(localeInfo.WIKI_MOB_NAME)
self.searchMobName.SetMax(30)
self.searchMobName.Show()
self.searchMobName.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdateMob)
self.searchMobName.SetReturnEvent(ui.__mem_func__(self.StartSearchMob))
self.searchClearBtnMob = ui.Button()
self.searchClearBtnMob.SetParent(self.mobSlot)
self.searchClearBtnMob.SetUpVisual(IMG_DIR+"clear_button_1.tga")
self.searchClearBtnMob.SetOverVisual(IMG_DIR+"clear_button_2.tga")
self.searchClearBtnMob.SetDownVisual(IMG_DIR+"clear_button_1.tga")
self.searchClearBtnMob.SetPosition(75,5)
self.searchClearBtnMob.SAFE_SetEvent(self.ClearEditlineMob)
self.searchClearBtnMob.Hide()
def UpdateItemsList(self):
if len(self.searchItemName.GetText()) > 0:
self.searchClearBtn.Show()
items_list = item.GetItemsByName(str(self.searchItemName.GetText()))
for i, items in enumerate(items_list, start=1):
item.SelectItem(items)
if len(self.searchItemName.GetText()) > len(item.GetItemName()):
self.searchItemNameText.SetText("")
continue
if item.GetItemName().find("+") != -1:
if item.GetItemName()[:-2] == self.searchItemName.GetText():
self.selectedItem=items
self.selectedType=0
self.searchItemNameText.SetText("|cff00ff00%s"%item.GetItemName()[:-2])
else:
if item.GetItemName() == self.searchItemName.GetText():
self.selectedType=0
self.selectedItem=items
self.searchItemNameText.SetText("|cff00ff00%s"%item.GetItemName())
if len(self.searchItemNameText.GetText()) == len(self.searchItemName.GetText()):
self.searchItemNameText.SetText("")
else:
self.selectedItem=0
self.searchItemName.SetText("")
self.searchItemNameText.SetText("")
self.searchClearBtn.Hide()
def __OnValueUpdateItem(self):
ui.EditLine.OnIMEUpdate(self.searchItemName)
self.UpdateItemsList()
if len(self.searchItemName.GetText()) > 0:
self.searchClearBtn.Show()
def OnKeyDown(self, key):
if app.DIK_RETURN == key:
if self.selectedItem > 1:
self.StartSearchItem()
else:
self.StartSearchItem()
return True
return True
def ClearEditlineItem(self):
self.selectedItem=0
self.searchItemName.SetText("")
self.searchItemNameText.SetText("")
self.searchClearBtn.Hide()
def StartSearchItem(self):
if self.selectedItem != 0:
self.ShowItemInfo(self.selectedItem,0)
#########################################
def UpdateMobsList(self):
if len(self.searchMobName.GetText()) > 0:
self.searchClearBtnMob.Show()
mobs_list = nonplayer.GetMobsByNameWiki(str(self.searchMobName.GetText()))
for i, mobs in enumerate(mobs_list, start=1):
mob_name = nonplayer.GetMonsterName(mobs)
if len(self.searchMobName.GetText()) > len(mob_name):
self.searchMobNameText.SetText("")
continue
if mob_name.find("+") != -1:
if mob_name[:-2] == self.searchMobName.GetText():
self.selectedMob=mobs
self.searchMobNameText.SetText("|cff00ff00%s"%mob_name[:-2])
else:
if mob_name == self.searchMobName.GetText():
self.selectedMob=mobs
self.searchMobNameText.SetText("|cff00ff00%s"%mob_name)
if len(self.searchMobNameText.GetText()) == len(self.searchMobName.GetText()):
self.searchMobNameText.SetText("")
else:
self.selectedMob=0
self.searchMobName.SetText("")
self.searchMobNameText.SetText("")
self.searchClearBtnMob.Hide()
def __OnValueUpdateMob(self):
ui.EditLine.OnIMEUpdate(self.searchMobName)
self.UpdateMobsList()
if len(self.searchMobName.GetText()) > 0:
self.searchClearBtnMob.Show()
def OnKeyDown(self, key):
if app.DIK_RETURN == key:
if self.selectedMob > 1:
self.StartSearchMob()
else:
self.StartSearchMob()
return True
return True
def ClearEditlineMob(self):
self.selectedMob=0
self.searchMobName.SetText("")
self.searchMobNameText.SetText("")
self.searchClearBtnMob.Hide()
def StartSearchMob(self):
if self.selectedMob != 0:
self.ShowItemInfo(self.selectedMob,1)
def LoadCategoryInfos(self):
self.categoryText = ui.TextLine()
self.categoryText.SetParent(self) # <board>
self.categoryText.SetPosition(13,89)
self.categoryText.SetText(localeInfo.WIKI_CATEGORY)
self.categoryText.Show()
self.listBoxCube = DropdownTree()
self.listBoxCube.SetParent(self)
self.listBoxCube.SetPosition(13,105)
self.listBoxCube.SetSize(109, 295)
self.listBoxCube.SetItemSize(109, 18)
self.listBoxCube.SetViewItemCount(18)
self.listBoxCube.Show()
self.scrollBarListBoxCube = ScrollBarNew()
self.scrollBarListBoxCube.SetParent(self)
self.scrollBarListBoxCube.SetPosition(109+15,105)
self.scrollBarListBoxCube.SetScrollBarSize(365)
self.scrollBarListBoxCube.Show()
self.listBoxCube.SetScrollBar(self.scrollBarListBoxCube)
listBoxCubeItems = [
{
'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_EQUIPMENT, lambda arg = ("Equipment#"): self.__EmptyFunction(arg)),
'children' : (
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_WEAPONS, lambda arg = ("Equipment#0"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_ARMOR, lambda arg = ("Equipment#1"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_HELMET, lambda arg = ("Equipment#2"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_SHIELD, lambda arg = ("Equipment#3"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_EARRING, lambda arg = ("Equipment#4"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_BRACELET, lambda arg = ("Equipment#5"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_NECKLACE, lambda arg = ("Equipment#6"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_SHOES, lambda arg = ("Equipment#7"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_BELT, lambda arg = ("Equipment#8"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_EQUIPMENT_TALISMAN, lambda arg = ("Equipment#9"): self.__SelectType(arg)),},
)
},
{
'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_CHESTS, lambda arg = ("Chests#"): self.__EmptyFunction(arg)),
'children' : (
{'item' : self.CreateLastListItem(localeInfo.WIKI_CHESTS_BOSS, lambda arg = ("Chests#0"): self.__SelectType(arg))},
{'item' : self.CreateLastListItem(localeInfo.WIKI_CHESTS_EVENT, lambda arg = ("Chests#1"): self.__SelectType(arg))},
{'item' : self.CreateLastListItem(localeInfo.WIKI_CHESTS_ALTERNATIVE, lambda arg = ("Chests#2"): self.__SelectType(arg))},
)
},
{
'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_BOSSES, lambda arg = ("Bosses#"): self.__EmptyFunction(arg)),
'children' : (
{'item' : self.CreateLastListItem(localeInfo.WIKI_1_75, lambda arg = ("Bosses#0"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_76_100, lambda arg = ("Bosses#1"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_100, lambda arg = ("Bosses#2"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_BOSSES_EVENT, lambda arg = ("Bosses#3"): self.__SelectType(arg)),},
)
},
{
'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_MONSTER, lambda arg = ("Monster#"): self.__EmptyFunction(arg)),
'children' : (
{'item' : self.CreateLastListItem(localeInfo.WIKI_1_75, lambda arg = ("Monster#0"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_76_100, lambda arg = ("Monster#1"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_100, lambda arg = ("Monster#2"): self.__SelectType(arg)),},
)
},
{
'item' : self.CreateCubeMenuTab1Item(localeInfo.WIKI_METINSTONE, lambda arg = ("Metinstone#"): self.__EmptyFunction(arg)),
'children' : (
{'item' : self.CreateLastListItem(localeInfo.WIKI_1_75, lambda arg = ("Metinstone#0"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_76_100, lambda arg = ("Metinstone#1"): self.__SelectType(arg)),},
{'item' : self.CreateLastListItem(localeInfo.WIKI_100, lambda arg = ("Metinstone#2"): self.__SelectType(arg)),},
)
}
]
self.listBoxCube.AppendItemList(listBoxCubeItems)
def __EmptyFunction(self, arg):
pass
def __SelectCharacters(self, buttonList, buttonIndex):
self.__ClickRadioButton(buttonList,buttonIndex)
self.__SelectType(self.selectArg,True)
def __ClickRadioButton(self, buttonList, buttonIndex):
try:
characterIndex=buttonList[buttonIndex]
except IndexError:
return
for eachButton in buttonList:
eachButton.SetUp()
characterIndex.Down()
self.characterIndex=buttonIndex
def SetCharacterImagesStatus(self, flag):
if flag:
for j in xrange(4):
self.characterList[j].Show()
self.__ClickRadioButton(self.characterList,self.characterIndex)
else:
for j in xrange(4):
self.characterList[j].Hide()
def ClearResultListbox(self, argList):
try:
self.resultpageListbox.RemoveAllItems()
self.resultpageListboxScrollbar.Hide()
self.resultpageListbox.Show()
renderTarget.Destroy()
isEquipment = argList[0] == "Equipment"
if argList[0].lower() != self.resultpagebtn.GetUpVisualFileName():
if argList[0].lower() == "equipment" or argList[0].lower() == "chests":
self.resultpagebtn.SetUpVisual(IMG_DIR+"category/%s_%d.tga"%(argList[0].lower(),int(argList[1])))
self.resultpagebtn.SetOverVisual(IMG_DIR+"category/%s_%d.tga"%(argList[0].lower(),int(argList[1])))
self.resultpagebtn.SetDownVisual(IMG_DIR+"category/%s_%d.tga"%(argList[0].lower(),int(argList[1])))
else:
self.resultpagebtn.SetUpVisual(IMG_DIR+"category/%s_wall.tga"%(argList[0].lower()))
self.resultpagebtn.SetOverVisual(IMG_DIR+"category/%s_wall.tga"%(argList[0].lower()))
self.resultpagebtn.SetDownVisual(IMG_DIR+"category/%s_wall.tga"%(argList[0].lower()))
if isEquipment:
self.SetCharacterImagesStatus(True)
self.resultpageListbox.SetPosition(140+18,104+34+5+11)
self.resultpageListboxScrollbar.SetPosition(140+18+541,104+34+5+11)
self.resultpageListboxScrollbar.SetScrollBarSize(310)
self.resultpageListbox.SetSize(570, 326)
else:
self.SetCharacterImagesStatus(False)
self.resultpageListbox.SetPosition(140+18,104+5)
self.resultpageListboxScrollbar.SetPosition(140+18+541,104+5)
self.resultpageListboxScrollbar.SetScrollBarSize(350)
self.resultpageListbox.SetSize(570, 360)
except:
pass
def __SelectType(self, arg, isCharacterBtn = False):
try:
if isCharacterBtn == False and self.selectArg == arg:
return
self.selectArg = arg
argList = arg.split("#")
self.ClearResultListbox(argList)
if argList[0] == "Equipment":
for j in xrange(wiki.GetCategorySize(self.characterIndex,int(argList[1]))):
itemVnum = wiki.GetCategoryData(self.characterIndex,int(argList[1]),j)
if j==0:
item = EquipmentItem(j,self,self.resultpageListbox,itemVnum,False)
else:
item = EquipmentItem(j,self,self.resultpageListbox,itemVnum,True)
(igx,igy) = item.GetGlobalPosition()
(lgx,lgy) = self.resultpageListbox.GetGlobalPosition()
if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight():
self.resultpageListboxScrollbar.Show()
self.resultpageListbox.AppendItem(item)
elif argList[0] == "Chests":
for j in xrange(wiki.GetChestSize(int(argList[1]))):
(itemVnum, bossVnum)= wiki.GetChestData(int(argList[1]),j)
if itemVnum == 0:
continue
item = ListBoxItemSpecial(j,self,self.resultpageListbox,itemVnum,bossVnum,0)
(igx,igy) = item.GetGlobalPosition()
(lgx,lgy) = self.resultpageListbox.GetGlobalPosition()
if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight():
self.resultpageListboxScrollbar.Show()
self.resultpageListbox.AppendItem(item)
elif argList[0] == "Bosses":
for j in xrange(wiki.GetBossSize(int(argList[1]))):
mobVnum = wiki.GetBossData(int(argList[1]),j)
if mobVnum == 0:
continue
item = ListBoxItemSpecial(j,self,self.resultpageListbox,mobVnum,0,1)
(igx,igy) = item.GetGlobalPosition()
(lgx,lgy) = self.resultpageListbox.GetGlobalPosition()
if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight():
self.resultpageListboxScrollbar.Show()
self.resultpageListbox.AppendItem(item)
elif argList[0] == "Monster":
for j in xrange(wiki.GetMonsterSize(int(argList[1]))):
mobVnum = wiki.GetMonsterData(int(argList[1]),j)
if mobVnum == 0:
continue
item = ListBoxItemSpecial(j,self,self.resultpageListbox,mobVnum,0,1)
(igx,igy) = item.GetGlobalPosition()
(lgx,lgy) = self.resultpageListbox.GetGlobalPosition()
if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight():
self.resultpageListboxScrollbar.Show()
self.resultpageListbox.AppendItem(item)
elif argList[0] == "Metinstone":
for j in xrange(wiki.GetStoneSize(int(argList[1]))):
mobVnum = wiki.GetStoneData(int(argList[1]),j)
if mobVnum == 0:
continue
item = ListBoxItemSpecial(j,self,self.resultpageListbox,mobVnum,0,1)
(igx,igy) = item.GetGlobalPosition()
(lgx,lgy) = self.resultpageListbox.GetGlobalPosition()
if igy+item.GetHeight() > lgy+self.resultpageListbox.GetHeight():
self.resultpageListboxScrollbar.Show()
self.resultpageListbox.AppendItem(item)
except:
pass
def ShowItemInfo(self, vnum, arg):
try:
self.resultpageListboxScrollbar.Show()
if arg == 0: # item info
self.ClearResultListbox(self.selectArg.split("#"))
self.resultpageListboxScrollbar.Show()
item.SelectItem(vnum)
item_table = EquipmentItemSpecial(self,self.resultpageListbox,vnum)
self.resultpageListbox.AppendItem(item_table)
if item.GetItemName().find("+") != -1:
new_refine_table = EquipmentItem(99,self,self.resultpageListbox,vnum,False)
self.resultpageListbox.AppendItem(new_refine_table)
elif arg == 1:
self.ClearResultListbox("Chests#0".split("#"))
self.resultpageListboxScrollbar.Show()
monster_table = MonsterItemSpecial(self,self.resultpageListbox,vnum)
self.resultpageListbox.AppendItem(monster_table)
monster_statics = MonsterStatics(self,self.resultpageListbox,vnum)
self.resultpageListbox.AppendItem(monster_statics)
except:
pass
def OnUpdate(self):
if len( self.resultpageListbox.GetItems())==0:
return
for j in xrange(len(self.resultpageListbox.itemList)):
list_item = self.resultpageListbox.itemList[j]
(pgx,pgy) = self.resultpageListbox.GetGlobalPosition()
(sgx,sgy) = list_item.GetGlobalPosition()
height = 100
isMonsterPage = list_item.isType == 0
if not isMonsterPage:
height=500
if sgx+list_item.GetHeight() < pgy:
# list_item.Hide()
list_item.ClearData()
elif (sgy+list_item.GetHeight()-height) > pgy+self.resultpageListbox.GetHeight():
# list_item.Hide()
list_item.ClearData()
else:
list_item.LoadItemInfos()
def CreateCubeMenuTab1Item(self, text, event, offset = 0):
listboxItem = CubeMenuTab1(text)
listboxItem.SetVisible(True)
listboxItem.SetEvent(event)
listboxItem.SetOffset(offset)
return listboxItem
def CreateLastListItem(self, text, event, offset = 0):
listboxItem = LastListItem(text)
listboxItem.SetEvent(event)
listboxItem.SetOffset(offset)
return listboxItem
def Open(self):
self.Show()
def Destroy(self):
self.listBoxCube.ClearItem()
self.listBoxCube = 0
self.resultpageListbox.RemoveAllItems()
self.resultpageListbox = 0
self.tooltipItem = None
self.selectedMob = 0
self.selectedItem = 0
self.searchSlot = None
self.searchButton = None
self.searchText = None
self.searchItemNameText = None
self.searchItemName = None
self.searchClearBtn = None
self.mobSlot = None
self.searchButtonMob = None
self.searchMobNameText = None
self.searchMobName = None
self.searchClearBtnMob = None
self.categoryText = None
self.scrollBarListBoxCube = 0
self.blockImage = 0
self.resultpageImage=0
self.resultpagebtn=0
self.characterList = 0
self.characterIndex = 0
self.resultpageListboxScrollbar = 0
self.blocImage = 0
self.selectArg=0
del self
def Close(self):
self.Hide()
def OnPressExitKey(self):
self.Close()
return True
def OnPressEscapeKey(self):
self.Close()
return True
class DropdownTree(ui.Window):
class Item(ui.Window):
def __init__(self):
ui.Window.__init__(self)
self.id = -1
self.parentId = -1
self.offset = 0
self.visible = False
self.expanded = False
self.event = None
self.onCollapseEvent = None
self.onExpandEvent = None
def __del__(self):
ui.Window.__del__(self)
def SetParent(self, parent):
ui.Window.SetParent(self, parent)
self.parent=ui.proxy(parent)
def SetSize(self, width, height):
ui.Window.SetSize(self, width, height)
def GetId(self):
return self.id
def SetId(self, id):
self.id = id
def GetParentId(self):
return self.parentId
def SetParentId(self, parentId):
self.parentId = parentId
def IsParent(self):
return self.parentId == -1
def SetVisible(self, visible):
self.visible = visible
def IsVisible(self):
return self.visible
def IsExpanded(self):
return self.expanded
def Expand(self):
self.expanded = True
if self.onExpandEvent:
self.onExpandEvent()
def Collapse(self):
self.expanded = False
if self.onCollapseEvent:
self.onCollapseEvent()
def SetOnExpandEvent(self, event):
self.onExpandEvent = event
def SetOnCollapseEvent(self, event):
self.onCollapseEvent = event
def SetOffset(self, offset):
self.offset = offset
def GetOffset(self):
return self.offset
def SetEvent(self, event):
self.event = event
def OnSelect(self):
if self.event:
self.event()
self.parent.SelectItem(self)
def OnMouseLeftButtonDown(self):
self.OnSelect()
def __init__(self):
ui.Window.__init__(self)
self.__curItemId=0
self.viewItemCount=10
self.basePos=0
self.itemHeight=16
self.itemStep=20
self.selItem=0
self.itemList=[]
self.onSelectItemEvent = lambda *arg: None
self.itemWidth=100
self.scrollBar=None
self.__UpdateSize()
def __del__(self):
ui.Window.__del__(self)
def __UpdateSize(self):
height=self.itemStep*self.__GetViewItemCount()
#self.SetSize(self.itemWidth, height)
self.SetSize(self.itemWidth, 375)
def IsEmpty(self):
if len(self.itemList)==0:
return 1
return 0
def OnMouseWheel(self, nLen):
if self.scrollBar:
self.scrollBar.OnMouseWheel(nLen)
def SetItemStep(self, itemStep):
self.itemStep=itemStep
self.__UpdateSize()
def SetItemSize(self, itemWidth, itemHeight):
self.itemWidth=itemWidth
self.itemHeight=itemHeight
self.__UpdateSize()
def SetViewItemCount(self, viewItemCount):
self.viewItemCount=viewItemCount
def SetSelectEvent(self, event):
self.onSelectItemEvent = event
def SetBasePos(self, basePos):
for oldItem in self.itemList:
oldItem.Hide()
self.basePos=basePos
skipCount = basePos
pos = basePos
for lItem in self.itemList:
if not lItem.IsVisible():
continue
if skipCount > 0:
skipCount -= 1
continue
if pos >= (self.basePos+self.viewItemCount):
break
(x, y) = self.GetItemViewCoord(pos, lItem.GetWidth())
lItem.SetPosition(x+lItem.GetOffset(), y)
lItem.Show()
pos+=1
self.UpdateScrollbar()
def GetItemIndex(self, argItem):
return self.itemList.index(argItem)
def GetSelectedItem(self):
return self.selItem
def SelectIndex(self, index):
if index >= len(self.itemList) or index < 0:
self.selItem = None
return
try:
self.selItem=self.itemList[index]
except:
pass
def ClearItem(self):
self.selItem=None
for lItem in self.itemList:
lItem.Hide()
self.itemList=[]
self.__curItemId = 0
if self.scrollBar:
self.scrollBar.SetPos(0)
self.SetBasePos(0)
def SelectItem(self, selItem):
self.selItem = selItem
if selItem.IsExpanded():
self.CloseTree(selItem, self.itemList)
else:
self.OpenTree(selItem, self.itemList)
self.SetBasePos(self.basePos)
def __AppendItem(self, newItem, parentId):
curItemId = self.__curItemId
self.__curItemId += 1
newItem.SetParent(self)
newItem.SetParentId(parentId)
newItem.SetSize(self.itemWidth, self.itemHeight)
newItem.SetId(curItemId)
pos = self.__GetItemCount()
self.itemList.append(newItem)
if newItem.IsVisible() and self.__IsInViewRange(pos):
(x, y)=self.GetItemViewCoord(pos, newItem.GetWidth())
newItem.SetPosition(x, y)
newItem.Show()
else:
newItem.Hide()
self.UpdateScrollbar()
return curItemId
def AppendItemList(self, dict):
self.__AppendItemList(-1, dict)
def __AppendItemList(self, parentId, dict):
for lItem in dict:
if 'item' in lItem:
id = self.__AppendItem(lItem['item'], parentId)
if 'children' in lItem:
self.__AppendItemList(id, lItem['children'])
def SetScrollBar(self, scrollBar):
scrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScroll))
self.scrollBar=scrollBar
def __OnScroll(self):
self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen()))
def __GetScrollLen(self):
scrollLen=self.__GetItemCount()-self.__GetViewItemCount()
if scrollLen<0:
return 0
return scrollLen
def __GetViewItemCount(self):
return self.viewItemCount
def __GetItemCount(self):
return sum(1 for lItem in self.itemList if lItem.IsVisible())
def GetItemViewCoord(self, pos, itemWidth):
return (0, (pos-self.basePos)*self.itemStep)
def __IsInViewRange(self, pos):
if pos<self.basePos:
return 0
if pos>=self.basePos+self.viewItemCount:
return 0
return 1
def UpdateScrollbar(self):
if self.__GetViewItemCount() < self.__GetItemCount():
self.scrollBar.SetMiddleBarSize(float(self.__GetViewItemCount())/self.__GetItemCount())
self.scrollBar.Show()
else:
self.scrollBar.Hide()
def CloseTree(self, curItem, list):
curItem.Collapse()
for listboxItem in list:
if listboxItem.GetParentId() == curItem.GetId():
listboxItem.SetVisible(False)
self.CloseTree(listboxItem, list)
def OpenTree(self, curItem, list):
curItem.Expand()
for listboxItem in list:
if listboxItem.GetParentId() == curItem.GetId():
listboxItem.SetVisible(True)
class CubeMenuTab1(DropdownTree.Item):
def __init__(self, text):
DropdownTree.Item.__init__(self)
self.overLine = False
self.iconBackgroundImage = ui.ImageBox()
self.iconBackgroundImage.SetParent(self)
self.iconBackgroundImage.AddFlag("not_pick")
self.iconBackgroundImage.SetPosition(0,0)
self.iconBackgroundImage.LoadImage(IMG_DIR +"plus.tga")
self.iconBackgroundImage.Show()
self.textLine=ui.TextLine()
self.textLine.SetParent(self.iconBackgroundImage)
self.textLine.SetPosition(0,1)
self.textLine.SetWindowHorizontalAlignLeft()
#self.textLine.SetHorizontalAlignCenter()
self.textLine.SetText(" "+text)
self.textLine.Show()
self.SetOnExpandEvent(self.ExpandEvent)
self.SetOnCollapseEvent(self.CollapseEvent)
def SetSize(self, width, height):
DropdownTree.Item.SetSize(self, width-self.GetOffset(), height)
def CollapseEvent(self):
self.iconBackgroundImage.LoadImage(IMG_DIR +"plus.tga")
self.iconBackgroundImage.Show()
def ExpandEvent(self):
self.iconBackgroundImage.LoadImage(IMG_DIR +"minus.tga")
self.iconBackgroundImage.Show()
def GetText(self):
return self.textLine.GetText()
def __del__(self):
DropdownTree.Item.__del__(self)
class LastListItem(DropdownTree.Item):
def __init__(self, text):
DropdownTree.Item.__init__(self)
self.overLine = False
textLine=ui.TextLine()
textLine.SetParent(self)
textLine.SetFontName(localeInfo.UI_DEF_FONT)
textLine.SetWindowHorizontalAlignLeft()
#textLine.SetHorizontalAlignCenter()
textLine.SetText(" "+text)
textLine.Show()
self.textLine = textLine
self.text = text
def __del__(self):
DropdownTree.Item.__del__(self)
def GetText(self):
return self.text
def SetSize(self, width, height):
DropdownTree.Item.SetSize(self, width-self.GetOffset(), height)
def OnMouseOverIn(self):
self.overLine = True
def OnMouseOverOut(self):
self.overLine = False
def OnRender(self):
if self.overLine and self.parent.GetSelectedItem()!=self:
x, y = self.GetGlobalPosition()
grp.SetColor(grp.GenerateColor(1.0, 1.0, 1.0, 0.2))
grp.RenderBar(x, y, self.GetWidth(), self.GetHeight())
elif self.parent.GetSelectedItem()==self:
x, y = self.GetGlobalPosition()
grp.SetColor(grp.GenerateColor(0.0, 0.0, 1.0, 1.0))
grp.RenderBar(x, y, self.GetWidth(), self.GetHeight())
else:
x, y = self.GetGlobalPosition()
grp.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, 1.0))
grp.RenderBar(x, y, self.GetWidth(), self.GetHeight())
class ScrollBarNew(ui.Window):
SCROLLBAR_WIDTH = 13
SCROLLBAR_MIDDLE_HEIGHT = 1
SCROLLBAR_BUTTON_WIDTH = 17
SCROLLBAR_BUTTON_HEIGHT = 17
SCROLL_BTN_XDIST = 2
SCROLL_BTN_YDIST = 2
class MiddleBar(ui.DragButton):
def __init__(self):
ui.DragButton.__init__(self)
self.AddFlag("movable")
self.SetWindowName("scrollbar_middlebar")
def MakeImage(self):
top = ui.ExpandedImageBox()
top.SetParent(self)
top.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_top.tga")
top.AddFlag("not_pick")
top.Show()
topScale = ui.ExpandedImageBox()
topScale.SetParent(self)
topScale.SetPosition(0, top.GetHeight())
topScale.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_topscale.tga")
topScale.AddFlag("not_pick")
topScale.Show()
bottom = ui.ExpandedImageBox()
bottom.SetParent(self)
bottom.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_bottom.tga")
bottom.AddFlag("not_pick")
bottom.Show()
bottomScale = ui.ExpandedImageBox()
bottomScale.SetParent(self)
bottomScale.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_bottomscale.tga")
bottomScale.AddFlag("not_pick")
bottomScale.Show()
middle = ui.ExpandedImageBox()
middle.SetParent(self)
middle.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle_middle.tga")
middle.AddFlag("not_pick")
middle.Show()
self.top = top
self.topScale = topScale
self.bottom = bottom
self.bottomScale = bottomScale
self.middle = middle
def SetSize(self, height):
minHeight = self.top.GetHeight() + self.bottom.GetHeight() + self.middle.GetHeight()
height = max(minHeight, height)
ui.DragButton.SetSize(self, 10, height)
scale = (height - minHeight) / 2
extraScale = 0
if (height - minHeight) % 2 == 1:
extraScale = 1
self.topScale.SetRenderingRect(0, 0, 0, scale - 1)
self.middle.SetPosition(0, self.top.GetHeight() + scale)
self.bottomScale.SetPosition(0, self.middle.GetBottom())
self.bottomScale.SetRenderingRect(0, 0, 0, scale - 1 + extraScale)
self.bottom.SetPosition(0, height - self.bottom.GetHeight())
def __init__(self):
ui.Window.__init__(self)
self.pageSize = 1
self.curPos = 0.0
self.eventScroll = None
self.eventArgs = None
self.lockFlag = False
self.CreateScrollBar()
self.SetScrollBarSize(0)
self.scrollStep = 0.20
self.SetWindowName("NONAME_ScrollBar")
def __del__(self):
ui.Window.__del__(self)
def CreateScrollBar(self):
topImage = ui.ExpandedImageBox()
topImage.SetParent(self)
topImage.AddFlag("not_pick")
topImage.LoadImage(IMG_DIR+"scrollbar/scrollbar_top.tga")
topImage.Show()
bottomImage = ui.ExpandedImageBox()
bottomImage.SetParent(self)
bottomImage.AddFlag("not_pick")
bottomImage.LoadImage(IMG_DIR+"scrollbar/scrollbar_bottom.tga")
bottomImage.Show()
middleImage = ui.ExpandedImageBox()
middleImage.SetParent(self)
middleImage.AddFlag("not_pick")
middleImage.SetPosition(0, topImage.GetHeight())
middleImage.LoadImage(IMG_DIR+"scrollbar/scrollbar_middle.tga")
middleImage.Show()
self.topImage = topImage
self.bottomImage = bottomImage
self.middleImage = middleImage
middleBar = self.MiddleBar()
middleBar.SetParent(self)
middleBar.SetMoveEvent(ui.__mem_func__(self.OnMove))
middleBar.Show()
middleBar.MakeImage()
middleBar.SetSize(0) # set min height
self.middleBar = middleBar
def Destroy(self):
self.eventScroll = None
self.eventArgs = None
def SetScrollEvent(self, event, *args):
self.eventScroll = event
self.eventArgs = args
def SetMiddleBarSize(self, pageScale):
self.middleBar.SetSize(int(pageScale * float(self.GetHeight() - self.SCROLL_BTN_YDIST*2)))
realHeight = self.GetHeight() - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight()
self.pageSize = realHeight
def SetScrollBarSize(self, height):
self.SetSize(self.SCROLLBAR_WIDTH, height)
self.pageSize = height - self.SCROLL_BTN_YDIST*2 - self.middleBar.GetHeight()
middleImageScale = float((height - self.SCROLL_BTN_YDIST*2) - self.middleImage.GetHeight()) / float(self.middleImage.GetHeight())
self.middleImage.SetRenderingRect(0, 0, 0, middleImageScale)
self.bottomImage.SetPosition(0, height - self.bottomImage.GetHeight())
self.middleBar.SetRestrictMovementArea(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST, \
self.middleBar.GetWidth(), height - self.SCROLL_BTN_YDIST * 2)
self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, self.SCROLL_BTN_YDIST)
def SetScrollStep(self, step):
self.scrollStep = step
def GetScrollStep(self):
return self.scrollStep
def GetPos(self):
return self.curPos
def OnUp(self):
self.SetPos(self.curPos-self.scrollStep)
def OnDown(self):
self.SetPos(self.curPos+self.scrollStep)
def SetPos(self, pos, moveEvent = True):
pos = max(0.0, pos)
pos = min(1.0, pos)
newPos = float(self.pageSize) * pos
self.middleBar.SetPosition(self.SCROLL_BTN_XDIST, int(newPos) + self.SCROLL_BTN_YDIST)
if moveEvent == True:
self.OnMove()
def OnMove(self):
if self.lockFlag:
return
if 0 == self.pageSize:
return
(xLocal, yLocal) = self.middleBar.GetLocalPosition()
self.curPos = float(yLocal - self.SCROLL_BTN_YDIST) / float(self.pageSize)
if self.eventScroll:
apply(self.eventScroll, self.eventArgs)
def OnMouseLeftButtonDown(self):
(xMouseLocalPosition, yMouseLocalPosition) = self.GetMouseLocalPosition()
newPos = float(yMouseLocalPosition) / float(self.GetHeight())
self.SetPos(newPos)
def LockScroll(self):
self.lockFlag = True
def UnlockScroll(self):
self.lockFlag = False
class ListBoxWiki(ui.Window):
def __init__(self):
ui.Window.__init__(self)
self.viewItemCount=10
self.basePos=0
self.itemHeight=16
self.itemStep=20
self.selItem=0
self.itemList=[]
self.onSelectItemEvent = lambda *arg: None
self.itemWidth=100
self.scrollBar=None
def __del__(self):
ui.Window.__del__(self)
def __UpdateSize(self):
height=self.itemStep*self.__GetViewItemCount()
pass
#self.SetSize(self.itemWidth, height)
def GetItemIndex(self, argItem):
return self.itemList.index(argItem)
def GetSelectedItem(self):
return self.selItem
def IsEmpty(self):
if self.__GetItemCount()==0:
return 1
return 0
def __GetViewItemCount(self):
return self.viewItemCount
def __GetItemCount(self):
return len(self.itemList)
def SetItemStep(self, itemStep):
self.itemStep=itemStep
def SetItemSize(self, itemWidth, itemHeight):
self.itemWidth=itemWidth
self.itemHeight=itemHeight
def SetViewItemCount(self, viewItemCount):
self.viewItemCount=viewItemCount
def SetSelectEvent(self, event):
self.onSelectItemEvent = event
def SelectIndex(self, index):
if index >= len(self.itemList) or index < 0:
self.selItem = None
return
try:
self.selItem=self.itemList[index]
except:
pass
def SelectItem(self, selItem):
self.selItem=selItem
self.onSelectItemEvent(selItem)
def RemoveAllItems(self):
self.selItem=None
for j in xrange(len(self.itemList)):
self.itemList[j].Destroy()
self.itemList=[]
if self.scrollBar:
self.scrollBar.SetPos(0)
if app.ENABLE_SWITCHBOT:
def GetItems(self):
return self.itemList
def RemoveItem(self, delItem):
if delItem==self.selItem:
self.selItem=None
self.itemList.remove(delItem)
def AppendItem(self, newItem):
self.itemList.append(newItem)
def OnMouseWheel(self, nLen):
if self.scrollBar:
self.scrollBar.OnMouseWheel(nLen)
def SetScrollBar(self, scrollBar):
scrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScroll))
self.scrollBar=scrollBar
def __OnScroll(self):
self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen()))
def __GetScrollLen(self):
if self.__GetItemCount() == 0:
return 0
(lx,ly) = self.itemList[len(self.itemList)-1].exPos
return ly
def GetItemViewCoord(self, pos, itemWidth):
return (0, (pos-self.basePos)*self.itemStep)
def __IsInViewRange(self, pos):
if pos<self.basePos:
return 0
if pos>=self.basePos+self.viewItemCount:
return 0
return 1
def SetBasePos(self, basePos):
if self.basePos == basePos:
return
for j in xrange(len(self.itemList)):
(ex,ey) = self.itemList[j].exPos
self.itemList[j].SetPosition(0,ey-(basePos))
self.itemList[j].OnRender()
self.basePos=basePos
class EquipmentItem(ui.ExpandedImageBox):
def __del__(self):
ui.ExpandedImageBox.__del__(self)
def __init__(self, index, parent, listbox, itemVnum, isFirst):
ui.ExpandedImageBox.__init__(self)
self.childrenTextLine = []
self.childrenImages = []
self.refineItems = []
self.refineStepText = []
self.priceStepText = []
self.refineInfos = []
self.refinenNumberline = []
self.parent = parent
self.listbox = listbox
self.listIndex = index
self.itemVnum = itemVnum
self.isFirst = isFirst
self.overLine =False
self.IsLoaded = False
self.refineCount = 2
self.isType=0
item.SelectItem(self.itemVnum)
for j in xrange(wiki.GetRefineMaxLevel(self.itemVnum,item.GetItemType(),item.GetItemSubType())+1):
if item.SelectItemWiki(self.itemVnum+j) == 1:
argv = wiki.GetRefineItems(item.GetRefineSet())
if argv != 0:
(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) = argv
self.InsertRefine(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)
if refine_count > self.refineCount:
self.refineCount = refine_count
else:
self.InsertRefine(0,0,0,0,0,0,0,0,0,0,0,0,0,0)
else:
self.InsertRefine(0,0,0,0,0,0,0,0,0,0,0,0,0,0)
x,y= 0,5
if self.isFirst:
getList = self.listbox.GetItems()
j = len(getList)
(xT,realY) = getList[j-1].GetLocalPosition()
if getList[j-1].refineCount == 2:
y= realY+(156+5)
elif getList[j-1].refineCount == 3:
y= realY+(200+5)
elif getList[j-1].refineCount == 4:
y= realY+(255+5)
elif getList[j-1].refineCount == 5:
y= realY+(296+5)
self.SetParent(listbox)
self.LoadImage(IMG_DIR+"slot/slot_%d.tga"%self.refineCount)
if index == 99:
x,y= 0,200
self.SetPosition(x,y, True)
self.childrenImages.append(self)
def ClearData(self):
if self.IsLoaded == True:
self.IsLoaded=False
self.childrenTextLine = []
self.childrenImages = []
self.childrenTextLine = []
self.refineStepText = []
self.priceStepText = []
self.refineInfos = []
self.refinenNumberline = []
self.childrenImages.append(self)
self.itemName= None
self.itemLevel= None
self.upgradeCost= None
self.itemIcon= None
self.yangCost= None
def LoadItemInfos(self):
if self.IsLoaded == False:
self.IsLoaded=True
item.SelectItem(self.itemVnum)
self.itemName = ui.TextLine()
self.itemName.SetParent(self)
self.itemName.SetText("%s"%item.GetItemName()[:-2])
self.itemName.SetPosition(5,5)
self.itemName.Show()
self.itemLevel = ui.TextLine()
self.itemLevel.SetParent(self)
for i in xrange(item.LIMIT_MAX_NUM):
(limitType, limitValue) = item.GetLimit(i)
if item.LIMIT_LEVEL == limitType:
if limitValue == 0:
self.itemLevel.SetText(localeInfo.WIKI_LEVEL_TEXT%1)
else:
self.itemLevel.SetText(localeInfo.WIKI_LEVEL_TEXT%limitValue)
self.itemLevel.SetPosition(480,5)
self.itemLevel.Show()
self.itemIcon = ui.ExpandedImageBox()
self.itemIcon.SetParent(self)
if item.GetIconImageFileName().find("gr2") == -1:
self.itemIcon.LoadImage(item.GetIconImageFileName())
else:
self.itemIcon.LoadImage("icon/item/27995.tga")
itemLevelCoordinates = [ [0,0],[0,0],[10,55],[10,85],[10,100],[10,115]]
self.itemIcon.SetPosition(itemLevelCoordinates[self.refineCount][0],itemLevelCoordinates[self.refineCount][1])
self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,self.itemVnum+wiki.GetRefineMaxLevel(self.itemVnum,item.GetItemType(),item.GetItemSubType()))
self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem)
self.itemIcon.SetEvent(ui.__mem_func__(self.OnClickItem),"mouse_click")
self.itemIcon.Show()
self.upgradeCost = ui.TextLine()
self.upgradeCost.SetParent(self)
self.upgradeCost.SetText(localeInfo.WIKI_UPGRADE_COSTS)
self.upgradeCost.SetPosition(58,24)
self.upgradeCost.Show()
self.yangCost = ui.TextLine()
self.yangCost.SetParent(self)
self.yangCost.SetText(localeInfo.WIKI_YANG_COSTS)
list = [140,140,140,180,230,275]
self.yangCost.SetPosition(58,list[self.refineCount])
self.yangCost.Show()
for j in xrange(10):
step_refine = ui.TextLine()
step_refine.SetParent(self)
step_refine.SetText("+%d"%j)
step_refine.SetPosition(145+(j*41),24)
step_refine.Show()
self.refineStepText.append(step_refine)
self.childrenTextLine.append(step_refine)
step_price = ui.TextLine()
step_price.SetParent(self)
if len(str(self.refineItems[j]["cost"])) >= 7:
step_price.SetText(str(self.refineItems[j]["cost"]).replace("000","k"))
else:
step_price.SetText(localeInfo.MoneyFormat(self.refineItems[j]["cost"]))
step_price.SetPosition(135+(j*42),list[self.refineCount])
step_price.Show()
self.priceStepText.append(step_price)
self.childrenTextLine.append(step_price)
step_slot0,step_slot1,step_slot2,step_slot3,step_slot4 = None,None,None,None,None
step_numberline0,step_numberline1,step_numberline2,step_numberline3,step_numberline4 = None,None,None,None,None
l = [step_slot0,step_slot1,step_slot2,step_slot3,step_slot4]
x = [step_numberline0,step_numberline1,step_numberline2,step_numberline3,step_numberline4]
for i in xrange(self.refineCount):
l[i] = ui.ExpandedImageBox()
l[i].SetParent(self)
refineItem = self.refineItems[j]["item_vnum_%d"%i]
if refineItem != 0:
item.SelectItem(refineItem)
l[i].LoadImage(item.GetIconImageFileName())
l[i].SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,refineItem)
l[i].SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem)
else:
l[i].LoadImage(IMG_DIR+"slot/empty_slot.tga")
l[i].SetPosition(135+(j*41),45+(i*47))
l[i].Show()
if refineItem != 0:
x[i] = ui.NumberLine()
x[i].SetParent(self)
x[i].SetNumber(str(self.refineItems[j]["item_count_%d"%i]))
x[i].SetPosition(165+(j*41),70+(i*47))
x[i].Show()
self.childrenTextLine.append(x[i])
self.childrenImages.append(l[i])
ptr = (step_slot0,step_slot1,step_slot2,step_slot3,step_slot4)
ptrex = (step_numberline0,step_numberline1,step_numberline2,step_numberline3,step_numberline4)
self.refineInfos.extend(ptr)
self.refinenNumberline.extend(ptrex)
self.childrenTextLine.append(self.yangCost)
self.childrenTextLine.append(self.itemName)
self.childrenTextLine.append(self.itemLevel)
self.childrenTextLine.append(self.upgradeCost)
self.childrenImages.append(self.itemIcon)
self.Show()
self.OnRender()
def OnClickItem(self):
try:
self.parent.tooltipItem.HideToolTip()
except:
pass
self.parent.ShowItemInfo(self.itemVnum,0)
def OverOutItem(self):
try:
self.parent.tooltipItem.HideToolTip()
except:
pass
def OverInItem(self, index):
try:
self.parent.tooltipItem.SetItemToolTip(index)
self.parent.tooltipItem.ShowToolTip()
except:
pass
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),\
},
)
def OnMouseOverIn(self):
self.overLine = True
def OnMouseOverOut(self):
self.overLine = False
def OnRender(self):
if not self.IsShow():
return
(pgx,pgy) = self.listbox.GetGlobalPosition()
for j in xrange(len(self.childrenTextLine)):
item = self.childrenTextLine[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
else:
item.Show()
for j in xrange(len(self.childrenImages)):
item = self.childrenImages[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
if igy < pgy:
item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0)
elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if calculate == 0:
return
item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
def Destroy(self):
self.childrenTextLine = []
self.childrenImages = []
self.refineItems = []
self.refineStepText = []
self.priceStepText = []
self.refineInfos = []
self.refinenNumberline = []
self.parent = 0
self.listbox = 0
self.listIndex = 0
self.itemVnum = 0
self.isFirst = 0
self.overLine =0
self.refineCount = 0
del self
class EquipmentItemSpecial(ui.ExpandedImageBox):
def __del__(self):
ui.ExpandedImageBox.__del__(self)
def __init__(self, parent, listbox, itemVnum):
ui.ExpandedImageBox.__init__(self)
self.childrenTextLine = []
self.childrenImages = []
self.parent = parent
self.listbox = listbox
self.itemVnum = itemVnum
self.overLine =False
self.IsLoaded =False
self.SetParent(listbox)
self.LoadImage(IMG_DIR+"slot/special_slot.tga")
self.SetPosition(0,0, True)
self.isType=0
def LoadItemInfos(self):
if self.IsLoaded == False:
self.IsLoaded=True
item.SelectItem(self.itemVnum)
self.itemIcon = ui.ExpandedImageBox()
self.itemIcon.SetParent(self)
if item.GetIconImageFileName().find("gr2") == -1:
self.itemIcon.LoadImage(item.GetIconImageFileName())
else:
self.itemIcon.LoadImage("icon/item/27995.tga")
self.itemIcon.SetPosition(70,45)
self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,self.itemVnum+wiki.GetRefineMaxLevel(self.itemVnum,item.GetItemType(),item.GetItemSubType()))
self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem)
self.itemIcon.Show()
self.avaible = ui.TextLine()
self.avaible.SetParent(self)
self.avaible.SetText(localeInfo.WIKI_AVAIBLE_AT)
self.avaible.SetPosition(350,6)
self.avaible.Show()
self.refine = ui.TextLine()
self.refine.SetParent(self)
self.refine.SetText(localeInfo.WIKI_IMPROVEMENT_INFO%item.GetItemName()[:-2])
self.refine.SetPosition(180,170)
self.refine.Show()
self.childrenTextLine.append(self.refine)
self.childrenTextLine.append(self.avaible)
self.childrenImages.append(self)
self.childrenImages.append(self.itemIcon)
self.Show()
self.OnRender()
def OverOutItem(self):
if self.parent:
if self.parent.tooltipItem:
self.parent.tooltipItem.HideToolTip()
def OverInItem(self, index):
if self.parent:
if self.parent.tooltipItem:
self.parent.tooltipItem.SetItemToolTip(index)
self.parent.tooltipItem.ShowToolTip()
def OnMouseOverIn(self):
self.overLine = True
def OnMouseOverOut(self):
self.overLine = False
def OnRender(self):
if not self.IsShow():
return
(pgx,pgy) = self.listbox.GetGlobalPosition()
for j in xrange(len(self.childrenTextLine)):
item = self.childrenTextLine[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
else:
item.Show()
for j in xrange(len(self.childrenImages)):
item = self.childrenImages[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
if igy < pgy:
item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0)
elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if calculate == 0:
return
item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
def Destroy(self):
self.childrenTextLine = []
self.childrenImages = []
self.parent = 0
self.listbox = 0
self.itemVnum = 0
self.overLine =0
self.IsLoaded =0
del self
class MonsterItemSpecial(ui.ExpandedImageBox):
def __del__(self):
ui.ExpandedImageBox.__del__(self)
def __init__(self, parent, listbox, itemVnum):
ui.ExpandedImageBox.__init__(self)
self.childrenTextLine = []
self.childrenImages = []
self.childrenItems = []
self.childrenNumberline = []
self.parent = parent
self.listbox = listbox
self.itemVnum = itemVnum
self.overLine =False
self.IsLoaded =False
self.SetParent(listbox)
self.LoadImage(IMG_DIR+"slot/special_slot.tga")
self.SetPosition(0,0, True)
self.childrenImages.append(self)
self.grid = Grid(width = 10, height = 50)
self.renterTarget=None
self.GridListbox=None
self.GridScrollbar=None
self.isType=0
def LoadItemInfos(self):
if self.IsLoaded == False:
self.IsLoaded=True
self.renterTarget = ui.RenderTarget()
self.renterTarget.SetParent(self)
self.renterTarget.SetPosition(1,1)
self.renterTarget.SetSize(187,163)
self.renterTarget.SetRenderTarget(21)
self.renterTarget.Show()
self.childrenImages.append(self.renterTarget)
renderTarget.SelectModel(21, self.itemVnum)
renderTarget.SetVisibility(21, True)
self.GridListbox = ListBoxGrid(self.listbox, self)
self.GridListbox.SetParent(self)
self.GridListbox.SetPosition(190,25)
self.GridListbox.SetSize(351, 142)
self.GridListbox.Show()
dropList = ui.TextLine()
dropList.SetParent(self)
dropList.SetText(localeInfo.WIKI_DROPLIST_INFO%nonplayer.GetMonsterName(self.itemVnum))
dropList.SetPosition(300,6)
dropList.Show()
self.childrenTextLine.append(dropList)
monsterInfo = ui.TextLine()
monsterInfo.SetParent(self)
monsterInfo.SetText(localeInfo.WIKI_STATICS_INFO%nonplayer.GetMonsterName(self.itemVnum))
monsterInfo.SetPosition(180,170)
monsterInfo.Show()
self.childrenTextLine.append(monsterInfo)
for j in xrange(wiki.GetMobInfoSize(self.itemVnum)):
vnum, count = 0,0
(vnum,count) = wiki.GetMobInfoData(self.itemVnum,j)
if vnum == 0:
continue
item.SelectItem(vnum)
item_new = ui.ExpandedImageBox()
item_new.SetParent(self.GridListbox)
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)
(width,height) = item.GetItemSize()
pos = self.grid.find_blank(width, height)
self.grid.put(pos,width,height)
(x,y) = calculatePos(pos,10)
item_new.SetPosition(x,y,True)
item_new.Show()
if count>1:
itemNumberline = ui.NumberLine()
itemNumberline.SetParent(self.GridListbox)
itemNumberline.SetNumber(str(count))
itemNumberline.SetPosition(x+15,y+item_new.GetHeight()-10,True)
itemNumberline.Show()
self.GridListbox.AppendItem(itemNumberline)
self.childrenNumberline.append(itemNumberline)
self.GridListbox.AppendItem(item_new)
self.childrenItems.append(item_new)
# Scrollbar
if self.GridScrollbar == None:
(gx,gy)=item_new.GetGlobalPosition()
(sx,sy)=self.GridListbox.GetGlobalPosition()
if gy+item_new.GetHeight() > sy+self.GridListbox.GetHeight():
self.GridScrollbar= ScrollBarNew()
self.GridScrollbar.SetParent(self)
self.GridScrollbar.SetPosition(525,23)
self.GridScrollbar.SetScrollBarSize(140)
self.GridListbox.SetScrollBar(self.GridScrollbar)
self.GridScrollbar.Show()
self.childrenImages.append(self.GridScrollbar.topImage)
self.childrenImages.append(self.GridScrollbar.bottomImage)
self.childrenImages.append(self.GridScrollbar.middleBar.top)
self.childrenImages.append(self.GridScrollbar.middleBar.topScale)
self.childrenImages.append(self.GridScrollbar.middleBar.bottom)
self.childrenImages.append(self.GridScrollbar.middleBar.bottomScale)
self.childrenImages.append(self.GridScrollbar.middleBar.middle)
self.Show()
self.OnRender()
def OverOutItem(self):
if self.parent:
if self.parent.tooltipItem:
self.parent.tooltipItem.HideToolTip()
def OverInItem(self, index):
if self.parent:
if self.parent.tooltipItem:
self.parent.tooltipItem.SetItemToolTip(index)
self.parent.tooltipItem.ShowToolTip()
def OnMouseOverIn(self):
self.overLine = True
def OnMouseOverOut(self):
self.overLine = False
def OnRender(self):
if not self.IsShow():
return
(pgx,pgy) = self.listbox.GetGlobalPosition()
(lgx,lgy) = self.GridListbox.GetGlobalPosition()
for j in xrange(len(self.childrenTextLine)):
item = self.childrenTextLine[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
else:
item.Show()
for j in xrange(len(self.childrenImages)):
item = self.childrenImages[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
if igy < pgy:
item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0)
elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if calculate == 0:
return
item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
for j in xrange(len(self.childrenNumberline)):
item = self.childrenNumberline[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy < lgy:
item.Hide()
elif igy > lgy+self.GridListbox.GetHeight():
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
else:
item.Show()
if self.GridScrollbar !=None:
scroll = self.GridScrollbar.middleImage
(igx,igy) = scroll.GetGlobalPosition()
if igy < pgy:
scroll.Hide()
elif igy > (pgy+self.listbox.GetHeight()-60):
scroll.Hide()
else:
scroll.Show()
if self.GridListbox != None:
for j in xrange(len(self.childrenItems)):
item = self.childrenItems[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
calculate = 0
calculatefirst = 0
if igy < lgy:
calculatefirst +=abs(igy-lgy)
if igy < pgy:
calculatefirst += abs(igy-pgy)
if igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()+100):
calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight())
elif igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()):
calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight())
item.SetRenderingRect(0,calculateRect(item.GetHeight()-calculatefirst,item.GetHeight()),0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
def Destroy(self):
self.grid.reset()
self.grid=0
self.GridListbox.RemoveAllItems()
self.GridListbox=0
self.childrenTextLine = []
self.childrenImages = []
self.childrenItems = []
self.childrenNumberline = []
self.parent = 0
self.listbox = 0
self.itemVnum = 0
self.overLine =0
self.IsLoaded =0
self.renterTarget=0
self.GridScrollbar=0
self.isType=0
del self
class MonsterStatics(ui.ExpandedImageBox):
def __del__(self):
ui.ExpandedImageBox.__del__(self)
def __init__(self, parent, listbox, itemVnum):
ui.ExpandedImageBox.__init__(self)
self.childrenTextLine = []
self.childrenImages = []
self.parent = parent
self.listbox = listbox
self.itemVnum = itemVnum
self.overLine =False
self.IsLoaded =False
self.SetParent(listbox)
self.LoadImage(IMG_DIR+"slot/big_empty.tga")
self.SetPosition(0,188, True)
self.childrenImages.append(self)
self.GridListbox=None
self.GridScrollbar=None
self.isType=0
def LoadItemInfos(self):
if self.IsLoaded == False:
self.IsLoaded=True
self.GridListbox = ListBoxGrid(self.listbox, self)
self.GridListbox.SetParent(self)
self.GridListbox.SetPosition(0,0)
self.GridListbox.SetSize(541, 159)
self.GridListbox.Show()
self.GridScrollbar= ScrollBarNew()
self.GridScrollbar.SetParent(self)
self.GridScrollbar.SetPosition(525,5)
self.GridScrollbar.SetScrollBarSize(150)
self.GridListbox.SetScrollBar(self.GridScrollbar)
self.GridScrollbar.Show()
monsterLevel = ui.TextLine()
monsterLevel.SetParent(self.GridListbox)
monsterLevel.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_LEVEL_TEXT%nonplayer.GetMonsterLevel(self.itemVnum))
monsterLevel.SetPosition(5,3,True)
monsterLevel.Show()
self.GridListbox.AppendItem(monsterLevel)
self.childrenTextLine.append(monsterLevel)
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.itemVnum)
for i in xrange(18):
curFlag = 1 << i
if HAS_FLAG(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.itemVnum):
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]
monsterType = ui.TextLine()
monsterType.SetParent(self.GridListbox)
monsterType.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_TYPE%(mainrace,subrace))
monsterType.SetPosition(5,3*(7*1),True)
monsterType.Show()
self.GridListbox.AppendItem(monsterType)
self.childrenTextLine.append(monsterType)
(mindmg,maxdmg) = nonplayer.GetMonsterDamage(self.itemVnum)
hp = nonplayer.GetMonsterMaxHP(self.itemVnum)
monsterDmgandHp = ui.TextLine()
monsterDmgandHp.SetParent(self.GridListbox)
monsterDmgandHp.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_DMG%(mindmg,maxdmg,hp))
monsterDmgandHp.SetPosition(5,3*(7*2),True)
monsterDmgandHp.Show()
self.GridListbox.AppendItem(monsterDmgandHp)
self.childrenTextLine.append(monsterDmgandHp)
(minyang,maxyang) = nonplayer.GetMonsterPrice(self.itemVnum)
exp = nonplayer.GetMonsterExp(self.itemVnum)
monsterYangandExp = ui.TextLine()
monsterYangandExp.SetParent(self.GridListbox)
monsterYangandExp.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_YNG%(minyang,maxyang,exp))
monsterYangandExp.SetPosition(5,3*(7*3),True)
monsterYangandExp.Show()
self.GridListbox.AppendItem(monsterYangandExp)
self.childrenTextLine.append(monsterYangandExp)
monsterDefencesText = ui.TextLine()
monsterDefencesText.SetParent(self.GridListbox)
monsterDefencesText.SetText("|Eemoji/e_wiki|e "+localeInfo.WIKI_STATICS_INFO_DEFENSES)
monsterDefencesText.SetPosition(5,3*(7*4),True)
monsterDefencesText.Show()
self.GridListbox.AppendItem(monsterDefencesText)
self.childrenTextLine.append(monsterDefencesText)
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_FIRE : localeInfo.TARGET_INFO_RESIST_FIRE,
# nonplayer.MOB_RESIST_ELECT : localeInfo.TARGET_INFO_RESIST_ELECT,
nonplayer.MOB_RESIST_MAGIC : localeInfo.TARGET_INFO_RESIST_MAGIC,
# nonplayer.MOB_RESIST_WIND : localeInfo.TARGET_INFO_RESIST_WIND,
# nonplayer.MOB_RESIST_POISON : localeInfo.TARGET_INFO_RESIST_POISON,
}
c = 0
for resist, label in resists.items():
value = nonplayer.GetMonsterResist(self.itemVnum, resist)
item = ui.TextLine()
item.SetParent(self.GridListbox)
text = label % value
item.SetText("|Eemoji/e_wiki|e %s"%text)
resistStrings = []
item.SetPosition(5+8,3*(7*(5+c)),True)
item.Show()
self.GridListbox.AppendItem(item)
self.childrenTextLine.append(item)
c+=1
self.Show()
self.OnRender()
def OnMouseOverIn(self):
self.overLine = True
def OnMouseOverOut(self):
self.overLine = False
def OnRender(self):
if not self.IsShow():
return
(pgx,pgy) = self.listbox.GetGlobalPosition()
(ggx,ggy) = self.GridListbox.GetGlobalPosition()
for j in xrange(len(self.childrenTextLine)):
item = self.childrenTextLine[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy < ggy:
item.Hide()
elif igy > (ggy+self.GridListbox.GetHeight()-10):
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
else:
item.Show()
for j in xrange(len(self.childrenImages)):
item = self.childrenImages[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
if igy < pgy:
item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0)
elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if calculate == 0:
return
item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
def Destroy(self):
self.GridListbox.RemoveAllItems()
self.GridListbox=None
self.GridScrollbar=None
self.childrenTextLine = []
self.childrenImages = []
self.parent = 0
self.listbox = 0
self.itemVnum = 0
self.overLine =0
self.IsLoaded =0
self.isType=0
del self
class ListBoxItemSpecial(ui.ExpandedImageBox):
def __del__(self):
ui.ExpandedImageBox.__del__(self)
def __init__(self, index, parent, listbox, itemVnum, mobVnum, type):
ui.ExpandedImageBox.__init__(self)
self.childrenTextLine = []
self.childrenNumberline = []
self.childrenItems = []
self.childrenImages = []
self.parent = parent
self.listbox = listbox
self.listIndex = index
self.itemVnum = itemVnum
self.mobVnum = mobVnum
self.isType = type
self.overLine =False
self.IsLoaded = False
self.SetParent(listbox)
self.LoadImage(IMG_DIR+"slot/slot.tga")
self.SetPosition(0,len(self.listbox.GetItems())*(89+5), True)
self.grid = Grid(width = 12, height = 50)
self.GridListbox = None
self.GridScrollbar= None
self.itemName= None
self.origin= None
self.bossVnum= None
self.itemIcon= None
self.childrenImages.append(self)
def ClearData(self):
if self.IsLoaded == True:
self.IsLoaded=False
self.childrenTextLine = []
self.childrenNumberline = []
self.childrenItems = []
self.childrenImages = []
self.childrenImages.append(self)
self.grid.reset()
self.GridListbox.RemoveAllItems()
self.GridListbox = None
self.GridScrollbar= None
self.itemName= None
self.origin= None
self.bossVnum= None
self.itemIcon= None
if self.isType != 0:
renderTarget.SetVisibility(20+self.listIndex, False)
renderTarget.ResetModel(20+self.listIndex)
self.renterTarget=None
def LoadItemInfos(self):
if self.IsLoaded == False:
self.IsLoaded=True
self.GridListbox = ListBoxGrid(self.listbox, self)
self.GridListbox.SetParent(self)
self.GridListbox.SetPosition(52,25)
self.GridListbox.SetSize(541, 65)
self.GridListbox.Show()
name = "-"
if self.isType == 0:
item.SelectItem(self.itemVnum)
name = nonplayer.GetMonsterName(self.mobVnum)
else:
name = nonplayer.GetMonsterName(self.itemVnum)
self.itemName = ui.TextLine()
self.itemName.SetParent(self)
if self.isType == 0:
self.itemName.SetText(localeInfo.WIKI_CONTENT_INFO%item.GetItemName())
else:
self.itemName.SetText(localeInfo.WIKI_DROPLIST_INFO%name)
self.itemName.SetPosition(180,5)
self.itemName.Show()
self.childrenTextLine.append(self.itemName)
self.origin = ui.TextLine()
self.origin.SetParent(self)
self.origin.SetText(localeInfo.WIKI_ORIGIN)
self.origin.SetPosition(480,5)
self.origin.Show()
self.childrenTextLine.append(self.origin)
self.bossVnum = ui.TextLine()
self.bossVnum.SetParent(self)
if self.isType == 0:
self.bossVnum.SetText(name)
self.bossVnum.SetPosition(465,45)
else:
self.bossVnum.SetPosition(495,45)
self.bossVnum.SetText("-")
self.bossVnum.Show()
self.childrenTextLine.append(self.bossVnum)
if self.isType == 0:
self.itemIcon = ui.ExpandedImageBox()
self.itemIcon.SetParent(self)
if item.GetIconImageFileName().find("gr2") == -1:
self.itemIcon.LoadImage(item.GetIconImageFileName())
else:
self.itemIcon.LoadImage("icon/item/27995.tga")
self.itemIcon.SetPosition(10,25)
self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.OverInItem,self.itemVnum)
self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.OverOutItem)
self.itemIcon.Show()
self.childrenImages.append(self.itemIcon)
else:
self.renterTarget = ui.RenderTarget()
self.renterTarget.SetParent(self)
self.renterTarget.SetPosition(1,1)
self.renterTarget.SetSize(47,87)
self.renterTarget.SetRenderTarget(20+self.listIndex)
self.renterTarget.Show()
self.renterTarget.SetOnMouseLeftButtonUpEvent(ui.__mem_func__(self.OnClickItem))
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:
self.GridListbox.Hide()
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()
pos = self.grid.find_blank(width, height)
self.grid.put(pos,width,height)
(x,y) = calculatePos(pos,12)
item_new = ui.ExpandedImageBox()
item_new.SetParent(self.GridListbox)
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.SetPosition(x,y,True)
item_new.Show()
if count>1:
itemNumberline = ui.NumberLine()
itemNumberline.SetParent(self.GridListbox)
itemNumberline.SetNumber(str(count))
itemNumberline.SetPosition(x+15,y+item_new.GetHeight()-10,True)
itemNumberline.Show()
self.GridListbox.AppendItem(itemNumberline)
self.childrenNumberline.append(itemNumberline)
self.GridListbox.AppendItem(item_new)
self.childrenItems.append(item_new)
# Scrollbar
if self.GridScrollbar ==None:
(gx,gy)=item_new.GetGlobalPosition()
(sx,sy)=self.GridListbox.GetGlobalPosition()
if gy+item_new.GetHeight() > sy+self.GridListbox.GetHeight():
self.GridScrollbar= ScrollBarNew()
self.GridScrollbar.SetParent(self)
self.GridScrollbar.SetPosition(435,23)
self.GridScrollbar.SetScrollBarSize(65)
self.GridListbox.SetScrollBar(self.GridScrollbar)
self.GridScrollbar.Show()
self.childrenImages.append(self.GridScrollbar.topImage)
self.childrenImages.append(self.GridScrollbar.bottomImage)
self.childrenImages.append(self.GridScrollbar.middleBar.top)
self.childrenImages.append(self.GridScrollbar.middleBar.topScale)
self.childrenImages.append(self.GridScrollbar.middleBar.bottom)
self.childrenImages.append(self.GridScrollbar.middleBar.bottomScale)
self.childrenImages.append(self.GridScrollbar.middleBar.middle)
self.Show()
self.OnRender()
def OnClickItem(self):
self.parent.ShowItemInfo(self.itemVnum,1)
def OverOutItem(self):
try:
self.parent.tooltipItem.HideToolTip()
except:
pass
def OverInItem(self, index):
try:
self.parent.tooltipItem.SetItemToolTip(index)
self.parent.tooltipItem.ShowToolTip()
except:
pass
def OnMouseOverIn(self):
self.overLine = True
def OnMouseOverOut(self):
self.overLine = False
def OnRender(self):
if not self.IsShow():
return
(pgx,pgy) = self.listbox.GetGlobalPosition()
(sgx,sgy) = self.GetGlobalPosition()
(lgx,lgy) = self.GridListbox.GetGlobalPosition()
for j in xrange(len(self.childrenImages)):
item = self.childrenImages[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
if igy < pgy:
item.SetRenderingRect(0,calculateRect(item.GetHeight()-abs(igy-pgy),item.GetHeight()),0,0)
elif igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if calculate == 0:
return
item.SetRenderingRect(0.0,0.0,0.0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
if self.GridListbox != None:
for j in xrange(len(self.childrenItems)):
item = self.childrenItems[j]
(igx,igy) = item.GetGlobalPosition()
item.SetRenderingRect(0,0,0,0)
calculate = 0
calculatefirst = 0
if igy < lgy:
calculatefirst +=abs(igy-lgy)
if igy < pgy:
calculatefirst += abs(igy-pgy)
if igy+item.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (igy+item.GetHeight())
if igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()+100):
calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight())
elif igy+item.GetHeight() > (lgy+self.GridListbox.GetHeight()):
calculate += (lgy+self.GridListbox.GetHeight()) - (igy+item.GetHeight())
item.SetRenderingRect(0,calculateRect(item.GetHeight()-calculatefirst,item.GetHeight()),0,calculateRect(item.GetHeight()-abs(calculate),item.GetHeight()))
if self.GridScrollbar !=None:
scroll = self.GridScrollbar.middleImage
(igx,igy) = scroll.GetGlobalPosition()
if igy < pgy:
scroll.Hide()
elif igy > (pgy+self.listbox.GetHeight()-60):
scroll.Hide()
else:
scroll.Show()
for j in xrange(len(self.childrenTextLine)):
item = self.childrenTextLine[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
else:
item.Show()
for j in xrange(len(self.childrenNumberline)):
item = self.childrenNumberline[j]
(igx,igy) = item.GetGlobalPosition()
if igy < pgy:
item.Hide()
elif igy < lgy:
item.Hide()
elif igy > (pgy+self.listbox.GetHeight()-15):
item.Hide()
elif igy > (lgy+self.GridListbox.GetHeight()-10):
item.Hide()
else:
item.Show()
if self.isType != 0:
(rgx,rgy) = self.renterTarget.GetGlobalPosition()
self.renterTarget.SetRenderingRect(0.0,0.0,0.0,0.0)
if rgy < pgy:
self.renterTarget.SetRenderingRect(0,calculateRect(self.renterTarget.GetHeight()-abs(rgy-pgy),self.renterTarget.GetHeight()),0,0)
elif rgy+self.renterTarget.GetHeight() > (pgy+self.listbox.GetHeight()-15):
calculate = (pgy+self.listbox.GetHeight()-15) - (rgy+self.renterTarget.GetHeight())
if calculate == 0:
return
self.renterTarget.SetRenderingRect(0.0,0.0,0.0,calculateRect(self.renterTarget.GetHeight()-abs(calculate),self.renterTarget.GetHeight()))
def Destroy(self):
self.GridScrollbar=None
if self.GridListbox:
self.GridListbox.RemoveAllItems()
self.GridListbox=None
self.childrenNumberline = []
self.childrenTextLine = []
self.childrenItems = []
self.childrenImages = []
self.renterTarget=0
self.parent = 0
self.listbox = 0
self.listIndex = 0
self.itemVnum = 0
self.isType = 0
self.overLine =0
self.IsLoaded = 0
self.grid.reset()
self.grid=None
del self
class Grid: # from KeN
def __init__(self, width, height):
self.width = width
self.height = height
self.reset()
def find_blank(self, width, height):
if width > self.width or height > self.height:
return -1
for row in range(self.height):
for col in range(self.width):
index = row * self.width + col
if self.is_empty(index, width, height):
return index
return -1
def put(self, pos, width, height):
if not self.is_empty(pos, width, height):
return False
for row in range(height):
start = pos + (row * self.width)
self.grid[start] = True
col = 1
while col < width:
self.grid[start + col] = True
col += 1
return True
def clear(self, pos, width, height):
if pos < 0 or pos >= (self.width * self.height):
return
for row in range(height):
start = pos + (row * self.width)
self.grid[start] = True
col = 1
while col < width:
self.grid[start + col] = False
col += 1
def is_empty(self, pos, width, height):
if pos < 0:
return False
row = pos // self.width
if (row + height) > self.height:
return False
if (pos + width) > ((row * self.width) + self.width):
return False
for row in range(height):
start = pos + (row * self.width)
if self.grid[start]:
return False
col = 1
while col < width:
if self.grid[start + col]:
return False
col += 1
return True
def get_size(self):
return self.width * self.height
def reset(self):
self.grid = [False] * (self.width * self.height)
self.put(self.width,1,1)
class ListBoxGrid(ui.Window):
def __init__(self, listbox,mainParent):
ui.Window.__init__(self)
self.basePos=0
self.listbox=listbox
self.mainParent=mainParent
self.itemList=[]
self.scrollBar=None
def __del__(self):
ui.Window.__del__(self)
def IsEmpty(self):
if self.__GetItemCount()==0:
return 1
return 0
def __GetItemCount(self):
return len(self.itemList)
def RemoveAllItems(self):
for j in xrange(len(self.itemList)):
self.itemList[j].Destroy()
self.itemList=[]
if self.scrollBar:
self.scrollBar.SetPos(0)
def GetItems(self):
return self.itemList
def RemoveItem(self, delItem):
self.itemList.remove(delItem)
def AppendItem(self, newItem):
self.itemList.append(newItem)
def OnMouseWheel(self, nLen):
if self.scrollBar:
self.scrollBar.OnMouseWheel(nLen)
def SetScrollBar(self, scrollBar):
scrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScroll))
self.scrollBar=scrollBar
def __OnScroll(self):
self.SetBasePos(int(self.scrollBar.GetPos()*self.__GetScrollLen()))
def __GetScrollLen(self):
if self.__GetItemCount() == 0:
return 0
(lx,ly) = self.itemList[len(self.itemList)-1].exPos
return ly
def SetBasePos(self, basePos):
if self.basePos == basePos:
return
for j in xrange(len(self.itemList)):
(ex,ey) = self.itemList[j].exPos
self.itemList[j].SetPosition(ex,ey-(basePos))
self.mainParent.OnRender()
self.basePos=basePos

