Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import app
- import ui
- import player
- import net
- import wndMgr
- import messenger
- import guild
- import chr
- import nonplayer
- import localeInfo
- import constInfo
- import uiChatBlock
- import uiHealth
- import constInfo
- import event
- class TargetBoard(ui.ThinBoard3):
- BUTTON_NAME_LIST = (
- localeInfo.TARGET_BUTTON_WHISPER,
- localeInfo.TARGET_BUTTON_EXCHANGE,
- localeInfo.TARGET_BUTTON_FIGHT,
- localeInfo.TARGET_BUTTON_ACCEPT_FIGHT,
- localeInfo.TARGET_BUTTON_AVENGE,
- localeInfo.TARGET_BUTTON_FRIEND,
- localeInfo.TARGET_BUTTON_INVITE_PARTY,
- localeInfo.TARGET_BUTTON_LEAVE_PARTY,
- localeInfo.TARGET_BUTTON_EXCLUDE,
- localeInfo.TARGET_BUTTON_INVITE_GUILD,
- localeInfo.TARGET_BUTTON_DISMOUNT,
- localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
- localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
- localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
- localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
- localeInfo.TARGET_BUTTON_EMOTION_ALLOW,
- "Kidobás",
- "Chat Tiltás",
- "Megölés",
- "Felszerelés",
- )
- GRADE_NAME = {
- nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
- nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
- nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
- nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
- nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
- nonplayer.KING : localeInfo.TARGET_LEVEL_KING,
- }
- EXCHANGE_LIMIT_RANGE = 3000
- def __init__(self):
- self.healthBoard = uiHealth.HealthBoard()
- ui.ThinBoard3.__init__(self)
- name = ui.TextLine()
- name.SetParent(self)
- name.SetDefaultFontName()
- name.SetOutline()
- name.Show()
- hpGauge = ui.Gauge()
- hpGauge.SetParent(self)
- hpGauge.MakeGauge(130, "red")
- hpGauge.Hide()
- hpPercenttxt = ui.TextLine()
- hpPercenttxt.SetParent(self)
- hpPercenttxt.SetPosition(160, 13)
- hpPercenttxt.SetText("")
- hpPercenttxt.Hide()
- closeButton = ui.Button()
- closeButton.SetParent(self)
- closeButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
- closeButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
- closeButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
- closeButton.SetPosition(30, 13)
- if localeInfo.IsARABIC():
- hpGauge.SetPosition(55, 17)
- hpGauge.SetWindowHorizontalAlignLeft()
- closeButton.SetWindowHorizontalAlignLeft()
- else:
- hpGauge.SetPosition(175, 17)
- hpGauge.SetWindowHorizontalAlignRight()
- closeButton.SetWindowHorizontalAlignRight()
- closeButton.SetEvent(ui.__mem_func__(self.OnPressedCloseButton))
- closeButton.Show()
- self.buttonDict = {}
- self.showingButtonList = []
- for buttonName in self.BUTTON_NAME_LIST:
- button = ui.Button()
- button.SetParent(self)
- if localeInfo.IsARABIC():
- button.SetUpVisual("d:/ymir work/ui/public/Small_Button_01.sub")
- button.SetOverVisual("d:/ymir work/ui/public/Small_Button_02.sub")
- button.SetDownVisual("d:/ymir work/ui/public/Small_Button_03.sub")
- else:
- button.SetUpVisual("d:/ymir work/ui/public/small_thin_button_01.sub")
- button.SetOverVisual("d:/ymir work/ui/public/small_thin_button_02.sub")
- button.SetDownVisual("d:/ymir work/ui/public/small_thin_button_03.sub")
- button.SetWindowHorizontalAlignCenter()
- button.SetText(buttonName)
- button.Hide()
- self.buttonDict[buttonName] = button
- self.showingButtonList.append(button)
- self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))
- self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE].SetEvent(ui.__mem_func__(self.OnExchange))
- self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyInvite))
- self.buttonDict[localeInfo.TARGET_BUTTON_LEAVE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyExit))
- self.buttonDict[localeInfo.TARGET_BUTTON_EXCLUDE].SetEvent(ui.__mem_func__(self.OnPartyRemove))
- self.buttonDict["Kidobás"].SetEvent(ui.__mem_func__(self.OnKick))
- self.buttonDict["Megölés"].SetEvent(ui.__mem_func__(self.OnKill))
- self.buttonDict["Chat Tiltás"].SetEvent(ui.__mem_func__(self.OnChatBlock))
- self.buttonDict["Felszerelés"].SAFE_SetEvent(self.__OnViewEquipment)
- self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_GUILD].SAFE_SetEvent(self.__OnGuildAddMember)
- self.buttonDict[localeInfo.TARGET_BUTTON_DISMOUNT].SAFE_SetEvent(self.__OnDismount)
- self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
- self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
- self.buttonDict[localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY].SAFE_SetEvent(self.__OnRequestParty)
- self.buttonDict[localeInfo.TARGET_BUTTON_BUILDING_DESTROY].SAFE_SetEvent(self.__OnDestroyBuilding)
- self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW].SAFE_SetEvent(self.__OnEmotionAllow)
- self.name = name
- dlgChatBlock = uiChatBlock.ChatBlockDialog()
- dlgChatBlock.LoadDialog()
- dlgChatBlock.SetTitleName("Chat Tiltás")
- dlgChatBlock.Hide()
- self.dlgChatBlock = dlgChatBlock
- self.dlgChatBlock = dlgChatBlock
- self.hpGauge = hpGauge
- self.hpPercenttxt = hpPercenttxt
- self.closeButton = closeButton
- self.nameString = 0
- self.nameLength = 0
- self.vid = 0
- self.eventWhisper = None
- self.isShowButton = False
- self.__Initialize()
- self.ResetTargetBoard()
- def __del__(self):
- ui.ThinBoard3.__del__(self)
- print "===================================================== DESTROYED TARGET BOARD"
- def __Initialize(self):
- self.nameString = ""
- self.nameLength = 0
- self.vid = 0
- self.isShowButton = False
- def Destroy(self):
- self.dlgChatBlock.Destroy()
- self.dlgChatBlock = 0
- self.eventWhisper = None
- self.closeButton = None
- self.showingButtonList = None
- self.buttonDict = None
- self.name = None
- self.hpGauge = None
- self.__Initialize()
- def OnKick(self):
- net.SendChatPacket("/dc " + str(chr.GetNameByVID(self.vid)))
- def OnKill(self):
- net.SendChatPacket("/kill " + str(chr.GetNameByVID(self.vid)))
- def OnChatBlock(self):
- if str(player.GetName())[0] == "[":
- self.dlgChatBlock.SetTitleName("Chat Tiltás: " + str(chr.GetNameByVID(self.vid)))
- self.dlgChatBlock.Open(str(chr.GetNameByVID(self.vid)))
- def OnPressedCloseButton(self):
- player.ClearTarget()
- self.Close()
- def Close(self):
- self.healthBoard.Hide()
- self.__Initialize()
- self.Hide()
- def Open(self, vid, name):
- if vid:
- if not constInfo.GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD():
- if not player.IsSameEmpire(vid):
- self.Hide()
- return
- if vid != self.GetTargetVID():
- self.ResetTargetBoard()
- self.SetTargetVID(vid)
- self.SetTargetName(name)
- if player.IsMainCharacterIndex(vid):
- self.__ShowMainCharacterMenu()
- elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
- self.Hide()
- else:
- self.RefreshButton()
- self.Show()
- else:
- self.HideAllButton()
- self.__ShowButton(localeInfo.TARGET_BUTTON_WHISPER)
- self.__ShowButton("VOTE_BLOCK_CHAT")
- self.__ArrangeButtonPosition()
- self.SetTargetName(name)
- self.Show()
- def Refresh(self):
- if self.IsShow():
- if self.IsShowButton():
- self.RefreshButton()
- def RefreshByVID(self, vid):
- if vid == self.GetTargetVID():
- self.Refresh()
- def RefreshByName(self, name):
- if name == self.GetTargetName():
- self.Refresh()
- def __ShowMainCharacterMenu(self):
- canShow=0
- self.HideAllButton()
- if player.IsMountingHorse():
- self.__ShowButton(localeInfo.TARGET_BUTTON_DISMOUNT)
- canShow=1
- if player.IsObserverMode():
- self.__ShowButton(localeInfo.TARGET_BUTTON_EXIT_OBSERVER)
- canShow=1
- if canShow:
- self.__ArrangeButtonPosition()
- self.Show()
- else:
- self.Hide()
- def __ShowNameOnlyMenu(self):
- self.HideAllButton()
- def SetWhisperEvent(self, event):
- self.eventWhisper = event
- def UpdatePosition(self):
- self.SetPosition(wndMgr.GetScreenWidth()/2 - self.GetWidth()/2, 10)
- def ResetTargetBoard(self):
- for btn in self.buttonDict.values():
- btn.Hide()
- self.__Initialize()
- self.name.SetPosition(0, 13)
- self.name.SetHorizontalAlignCenter()
- self.name.SetWindowHorizontalAlignCenter()
- self.hpGauge.Hide()
- self.SetSize(250, 40)
- def SetTargetVID(self, vid):
- self.vid = vid
- def SetEnemyVID(self, vid):
- self.SetTargetVID(vid)
- name = chr.GetNameByVID(vid)
- level = nonplayer.GetLevelByVID(vid)
- grade = nonplayer.GetGradeByVID(vid)
- nameFront = ""
- if -1 != level:
- nameFront += "Lv." + str(level) + " "
- if self.GRADE_NAME.has_key(grade):
- nameFront += "(" + self.GRADE_NAME[grade] + ") "
- self.SetTargetName(nameFront + name)
- def GetTargetVID(self):
- return self.vid
- def GetTargetName(self):
- return self.nameString
- def SetTargetName(self, name):
- self.nameString = name
- self.nameLength = len(name)
- self.name.SetText(name)
- def SetHP(self, hpPercentage):
- if not self.hpGauge.IsShow():
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- if localeInfo.IsARABIC():
- self.name.SetPosition( self.GetWidth()-23, 13)
- else:
- self.name.SetPosition(23, 13)
- self.name.SetWindowHorizontalAlignLeft()
- self.name.SetHorizontalAlignLeft()
- self.hpGauge.Show()
- self.UpdatePosition()
- self.hpPercenttxt.SetPosition(200 + 7*self.nameLength-205, 13)
- self.hpPercenttxt.Show()
- if player.IsPVPInstance(self.vid):
- self.hpPercenttxt.Hide()
- self.hpGauge.SetPercentage(hpPercentage, 100)
- self.hpPercenttxt.SetText("%d%%" % (hpPercentage))
- def ShowDefaultButton(self):
- self.isShowButton = True
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW])
- #self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT])
- for button in self.showingButtonList:
- button.Show()
- def HideAllButton(self):
- self.isShowButton = False
- for button in self.showingButtonList:
- button.Hide()
- self.showingButtonList = []
- def __ShowButton(self, name):
- if not self.buttonDict.has_key(name):
- return
- self.buttonDict[name].Show()
- self.showingButtonList.append(self.buttonDict[name])
- def __HideButton(self, name):
- if not self.buttonDict.has_key(name):
- return
- button = self.buttonDict[name]
- button.Hide()
- for btnInList in self.showingButtonList:
- if btnInList == button:
- self.showingButtonList.remove(button)
- break
- def OnWhisper(self):
- if None != self.eventWhisper:
- self.eventWhisper(self.nameString)
- def OnExchange(self):
- net.SendExchangeStartPacket(self.vid)
- def OnPVP(self):
- net.SendChatPacket("/pvp %d" % (self.vid))
- def OnAppendToMessenger(self):
- net.SendMessengerAddByVIDPacket(self.vid)
- def OnPartyInvite(self):
- net.SendPartyInvitePacket(self.vid)
- def OnPartyExit(self):
- net.SendPartyExitPacket()
- def OnPartyRemove(self):
- net.SendPartyRemovePacket(self.vid)
- def __OnGuildAddMember(self):
- net.SendGuildAddMemberPacket(self.vid)
- def __OnDismount(self):
- net.SendChatPacket("/unmount")
- def __OnExitObserver(self):
- net.SendChatPacket("/observer_exit")
- def __OnViewEquipment(self):
- net.SendChatPacket("/view_equip " + str(self.vid))
- def __OnRequestParty(self):
- net.SendChatPacket("/party_request " + str(self.vid))
- def __OnDestroyBuilding(self):
- net.SendChatPacket("/build d %d" % (self.vid))
- def __OnEmotionAllow(self):
- net.SendChatPacket("/emotion_allow %d" % (self.vid))
- def __OnVoteBlockChat(self):
- cmd = "/vote_block_chat %s" % (self.nameString)
- net.SendChatPacket(cmd)
- def OnPressEscapeKey(self):
- self.OnPressedCloseButton()
- return True
- def IsShowButton(self):
- return self.isShowButton
- def RefreshButton(self):
- self.HideAllButton()
- if chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
- #self.__ShowButton(localeInfo.TARGET_BUTTON_BUILDING_DESTROY)
- #self.__ArrangeButtonPosition()
- return
- if player.IsPVPInstance(self.vid) or player.IsObserverMode():
- # PVP_INFO_SIZE_BUG_FIX
- self.SetSize(200 + 7*self.nameLength, 40)
- self.UpdatePosition()
- # END_OF_PVP_INFO_SIZE_BUG_FIX
- return
- self.ShowDefaultButton()
- if str(player.GetName())[0] == "[":
- self.__ShowButton("Megölés")
- self.__ShowButton("Kidobás")
- self.__ShowButton("Chat Tiltás")
- self.__ShowButton("Felszerelés")
- if guild.MainPlayerHasAuthority(guild.AUTH_ADD_MEMBER):
- if not guild.IsMemberByName(self.nameString):
- if 0 == chr.GetGuildID(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_GUILD)
- if not messenger.IsFriendByName(self.nameString):
- self.__ShowButton(localeInfo.TARGET_BUTTON_FRIEND)
- if player.IsPartyMember(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- if player.IsPartyLeader(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_LEAVE_PARTY)
- elif player.IsPartyLeader(player.GetMainCharacterIndex()):
- self.__ShowButton(localeInfo.TARGET_BUTTON_EXCLUDE)
- else:
- if player.IsPartyMember(player.GetMainCharacterIndex()):
- if player.IsPartyLeader(player.GetMainCharacterIndex()):
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- else:
- if chr.IsPartyMember(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY)
- else:
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- if player.IsRevengeInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- self.__ShowButton(localeInfo.TARGET_BUTTON_AVENGE)
- elif player.IsChallengeInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- self.__ShowButton(localeInfo.TARGET_BUTTON_ACCEPT_FIGHT)
- elif player.IsCantFightInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- if not player.IsSameEmpire(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- self.__HideButton(localeInfo.TARGET_BUTTON_FRIEND)
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- distance = player.GetCharacterDistance(self.vid)
- if distance > self.EXCHANGE_LIMIT_RANGE:
- self.__HideButton(localeInfo.TARGET_BUTTON_EXCHANGE)
- self.__ArrangeButtonPosition()
- self.__ArrangeButtonPosition()
- def __ArrangeButtonPosition(self):
- showingButtonCount = len(self.showingButtonList)
- pos = -(showingButtonCount / 2) * 68
- if 0 == showingButtonCount % 2:
- pos += 34
- for button in self.showingButtonList:
- button.SetPosition(pos, 33)
- pos += 68
- self.SetSize(max(150, showingButtonCount * 75), 65)
- self.UpdatePosition()
- def OnUpdate(self):
- if player.IsPVPInstance(self.vid):
- constInfo.VID = self.vid
- event.QuestButtonClick(constInfo.STHX)
- if not self.healthBoard.IsShow() and self.vid != 0:
- self.healthBoard.Show()
- else:
- self.healthBoard.Hide()
- if self.isShowButton:
- exchangeButton = self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE]
- distance = player.GetCharacterDistance(self.vid)
- if distance < 0:
- return
- if exchangeButton.IsShow():
- if distance > self.EXCHANGE_LIMIT_RANGE:
- self.RefreshButton()
- else:
- if distance < self.EXCHANGE_LIMIT_RANGE:
- self.RefreshButton()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement