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