forked from metin2/client
1
0
Fork 0
client/bin_original/uiGameOption.py

492 lines
15 KiB
Python
Raw Normal View History

import ui
import snd
import systemSetting
import net
import chat
import app
import locale
import constInfo
import chrmgr
import player
import uiPrivateShopBuilder # <20><><EFBFBD><EFBFBD>ȣ
import interfaceModule # <20><><EFBFBD><EFBFBD>ȣ
blockMode = 0
viewChatMode = 0
MOBILE = FALSE
if locale.IsYMIR():
MOBILE = TRUE
class OptionDialog(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__Initialize()
self.__Load()
self.RefreshViewChat()
self.RefreshAlwaysShowName()
self.RefreshShowDamage()
self.RefreshShowSalesText()
def __del__(self):
ui.ScriptWindow.__del__(self)
print " -------------------------------------- DELETE GAME OPTION DIALOG"
def __Initialize(self):
self.titleBar = 0
self.nameColorModeButtonList = []
self.viewTargetBoardButtonList = []
self.pvpModeButtonDict = {}
self.blockButtonList = []
self.viewChatButtonList = []
self.alwaysShowNameButtonList = []
self.showDamageButtonList = []
self.showsalesTextButtonList = []
def Destroy(self):
self.ClearDictionary()
self.__Initialize()
print " -------------------------------------- DESTROY GAME OPTION DIALOG"
def __Load_LoadScript(self, fileName):
try:
pyScriptLoader = ui.PythonScriptLoader()
pyScriptLoader.LoadScriptFile(self, fileName)
except:
import exception
exception.Abort("OptionDialog.__Load_LoadScript")
def __Load_BindObject(self):
try:
GetObject = self.GetChild
self.titleBar = GetObject("titlebar")
self.nameColorModeButtonList.append(GetObject("name_color_normal"))
self.nameColorModeButtonList.append(GetObject("name_color_empire"))
self.viewTargetBoardButtonList.append(GetObject("target_board_no_view"))
self.viewTargetBoardButtonList.append(GetObject("target_board_view"))
self.pvpModeButtonDict[player.PK_MODE_PEACE] = GetObject("pvp_peace")
self.pvpModeButtonDict[player.PK_MODE_REVENGE] = GetObject("pvp_revenge")
self.pvpModeButtonDict[player.PK_MODE_GUILD] = GetObject("pvp_guild")
self.pvpModeButtonDict[player.PK_MODE_FREE] = GetObject("pvp_free")
self.blockButtonList.append(GetObject("block_exchange_button"))
self.blockButtonList.append(GetObject("block_party_button"))
self.blockButtonList.append(GetObject("block_guild_button"))
self.blockButtonList.append(GetObject("block_whisper_button"))
self.blockButtonList.append(GetObject("block_friend_button"))
self.blockButtonList.append(GetObject("block_party_request_button"))
self.viewChatButtonList.append(GetObject("view_chat_on_button"))
self.viewChatButtonList.append(GetObject("view_chat_off_button"))
self.alwaysShowNameButtonList.append(GetObject("always_show_name_on_button"))
self.alwaysShowNameButtonList.append(GetObject("always_show_name_off_button"))
self.showDamageButtonList.append(GetObject("show_damage_on_button"))
self.showDamageButtonList.append(GetObject("show_damage_off_button"))
self.showsalesTextButtonList.append(GetObject("salestext_on_button"))
self.showsalesTextButtonList.append(GetObject("salestext_off_button"))
global MOBILE
if MOBILE:
self.inputMobileButton = GetObject("input_mobile_button")
self.deleteMobileButton = GetObject("delete_mobile_button")
except:
import exception
exception.Abort("OptionDialog.__Load_BindObject")
def __Load(self):
global MOBILE
if MOBILE:
self.__Load_LoadScript("uiscript/gameoptiondialog_formobile.py")
else:
self.__Load_LoadScript("uiscript/gameoptiondialog.py")
self.__Load_BindObject()
self.SetCenterPosition()
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
self.nameColorModeButtonList[0].SAFE_SetEvent(self.__OnClickNameColorModeNormalButton)
self.nameColorModeButtonList[1].SAFE_SetEvent(self.__OnClickNameColorModeEmpireButton)
self.viewTargetBoardButtonList[0].SAFE_SetEvent(self.__OnClickTargetBoardViewButton)
self.viewTargetBoardButtonList[1].SAFE_SetEvent(self.__OnClickTargetBoardNoViewButton)
self.pvpModeButtonDict[player.PK_MODE_PEACE].SAFE_SetEvent(self.__OnClickPvPModePeaceButton)
self.pvpModeButtonDict[player.PK_MODE_REVENGE].SAFE_SetEvent(self.__OnClickPvPModeRevengeButton)
self.pvpModeButtonDict[player.PK_MODE_GUILD].SAFE_SetEvent(self.__OnClickPvPModeGuildButton)
self.pvpModeButtonDict[player.PK_MODE_FREE].SAFE_SetEvent(self.__OnClickPvPModeFreeButton)
self.blockButtonList[0].SetToggleUpEvent(self.__OnClickBlockExchangeButton)
self.blockButtonList[1].SetToggleUpEvent(self.__OnClickBlockPartyButton)
self.blockButtonList[2].SetToggleUpEvent(self.__OnClickBlockGuildButton)
self.blockButtonList[3].SetToggleUpEvent(self.__OnClickBlockWhisperButton)
self.blockButtonList[4].SetToggleUpEvent(self.__OnClickBlockFriendButton)
self.blockButtonList[5].SetToggleUpEvent(self.__OnClickBlockPartyRequest)
self.blockButtonList[0].SetToggleDownEvent(self.__OnClickBlockExchangeButton)
self.blockButtonList[1].SetToggleDownEvent(self.__OnClickBlockPartyButton)
self.blockButtonList[2].SetToggleDownEvent(self.__OnClickBlockGuildButton)
self.blockButtonList[3].SetToggleDownEvent(self.__OnClickBlockWhisperButton)
self.blockButtonList[4].SetToggleDownEvent(self.__OnClickBlockFriendButton)
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockPartyRequest)
self.viewChatButtonList[0].SAFE_SetEvent(self.__OnClickViewChatOnButton)
self.viewChatButtonList[1].SAFE_SetEvent(self.__OnClickViewChatOffButton)
self.alwaysShowNameButtonList[0].SAFE_SetEvent(self.__OnClickAlwaysShowNameOnButton)
self.alwaysShowNameButtonList[1].SAFE_SetEvent(self.__OnClickAlwaysShowNameOffButton)
self.showDamageButtonList[0].SAFE_SetEvent(self.__OnClickShowDamageOnButton)
self.showDamageButtonList[1].SAFE_SetEvent(self.__OnClickShowDamageOffButton)
self.showsalesTextButtonList[0].SAFE_SetEvent(self.__OnClickSalesTextOnButton)
self.showsalesTextButtonList[1].SAFE_SetEvent(self.__OnClickSalesTextOffButton)
self.__ClickRadioButton(self.nameColorModeButtonList, constInfo.GET_CHRNAME_COLOR_INDEX())
self.__ClickRadioButton(self.viewTargetBoardButtonList, constInfo.GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD())
self.__SetPeacePKMode()
#global MOBILE
if MOBILE:
self.inputMobileButton.SetEvent(ui.__mem_func__(self.__OnChangeMobilePhoneNumber))
self.deleteMobileButton.SetEvent(ui.__mem_func__(self.__OnDeleteMobilePhoneNumber))
def __ClickRadioButton(self, buttonList, buttonIndex):
try:
selButton=buttonList[buttonIndex]
except IndexError:
return
for eachButton in buttonList:
eachButton.SetUp()
selButton.Down()
def __SetNameColorMode(self, index):
constInfo.SET_CHRNAME_COLOR_INDEX(index)
self.__ClickRadioButton(self.nameColorModeButtonList, index)
def __SetTargetBoardViewMode(self, flag):
constInfo.SET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD(flag)
self.__ClickRadioButton(self.viewTargetBoardButtonList, flag)
def __OnClickNameColorModeNormalButton(self):
self.__SetNameColorMode(0)
def __OnClickNameColorModeEmpireButton(self):
self.__SetNameColorMode(1)
def __OnClickTargetBoardViewButton(self):
self.__SetTargetBoardViewMode(0)
def __OnClickTargetBoardNoViewButton(self):
self.__SetTargetBoardViewMode(1)
def __OnClickCameraModeShortButton(self):
self.__SetCameraMode(0)
def __OnClickCameraModeLongButton(self):
self.__SetCameraMode(1)
def __OnClickFogModeLevel0Button(self):
self.__SetFogLevel(0)
def __OnClickFogModeLevel1Button(self):
self.__SetFogLevel(1)
def __OnClickFogModeLevel2Button(self):
self.__SetFogLevel(2)
def __OnClickBlockExchangeButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_EXCHANGE))
def __OnClickBlockPartyButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY))
def __OnClickBlockGuildButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_GUILD))
def __OnClickBlockWhisperButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_WHISPER))
def __OnClickBlockFriendButton(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_FRIEND))
def __OnClickBlockPartyRequest(self):
self.RefreshBlock()
global blockMode
net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY_REQUEST))
def __OnClickViewChatOnButton(self):
global viewChatMode
viewChatMode = 1
systemSetting.SetViewChatFlag(viewChatMode)
self.RefreshViewChat()
def __OnClickViewChatOffButton(self):
global viewChatMode
viewChatMode = 0
systemSetting.SetViewChatFlag(viewChatMode)
self.RefreshViewChat()
def __OnClickAlwaysShowNameOnButton(self):
systemSetting.SetAlwaysShowNameFlag(TRUE)
self.RefreshAlwaysShowName()
def __OnClickAlwaysShowNameOffButton(self):
systemSetting.SetAlwaysShowNameFlag(FALSE)
self.RefreshAlwaysShowName()
def __OnClickShowDamageOnButton(self):
systemSetting.SetShowDamageFlag(TRUE)
self.RefreshShowDamage()
def __OnClickShowDamageOffButton(self):
systemSetting.SetShowDamageFlag(FALSE)
self.RefreshShowDamage()
def __OnClickSalesTextOnButton(self):
systemSetting.SetShowSalesTextFlag(TRUE)
self.RefreshShowSalesText()
uiPrivateShopBuilder.UpdateADBoard()
def __OnClickSalesTextOffButton(self):
systemSetting.SetShowSalesTextFlag(FALSE)
self.RefreshShowSalesText()
def __CheckPvPProtectedLevelPlayer(self):
if player.GetStatus(player.LEVEL)<constInfo.PVPMODE_PROTECTED_LEVEL:
self.__SetPeacePKMode()
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OPTION_PVPMODE_PROTECT % (constInfo.PVPMODE_PROTECTED_LEVEL))
return 1
return 0
def __SetPKMode(self, mode):
for btn in self.pvpModeButtonDict.values():
btn.SetUp()
if self.pvpModeButtonDict.has_key(mode):
self.pvpModeButtonDict[mode].Down()
def __SetPeacePKMode(self):
self.__SetPKMode(player.PK_MODE_PEACE)
def __RefreshPVPButtonList(self):
self.__SetPKMode(player.GetPKMode())
def __OnClickPvPModePeaceButton(self):
if self.__CheckPvPProtectedLevelPlayer():
return
self.__RefreshPVPButtonList()
if constInfo.PVPMODE_ENABLE:
net.SendChatPacket("/pkmode 0", chat.CHAT_TYPE_TALKING)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OPTION_PVPMODE_NOT_SUPPORT)
def __OnClickPvPModeRevengeButton(self):
if self.__CheckPvPProtectedLevelPlayer():
return
self.__RefreshPVPButtonList()
if constInfo.PVPMODE_ENABLE:
net.SendChatPacket("/pkmode 1", chat.CHAT_TYPE_TALKING)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OPTION_PVPMODE_NOT_SUPPORT)
def __OnClickPvPModeFreeButton(self):
if self.__CheckPvPProtectedLevelPlayer():
return
self.__RefreshPVPButtonList()
if constInfo.PVPMODE_ENABLE:
net.SendChatPacket("/pkmode 2", chat.CHAT_TYPE_TALKING)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OPTION_PVPMODE_NOT_SUPPORT)
def __OnClickPvPModeGuildButton(self):
if self.__CheckPvPProtectedLevelPlayer():
return
self.__RefreshPVPButtonList()
if 0 == player.GetGuildID():
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OPTION_PVPMODE_CANNOT_SET_GUILD_MODE)
return
if constInfo.PVPMODE_ENABLE:
net.SendChatPacket("/pkmode 4", chat.CHAT_TYPE_TALKING)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OPTION_PVPMODE_NOT_SUPPORT)
def OnChangePKMode(self):
self.__RefreshPVPButtonList()
def __OnChangeMobilePhoneNumber(self):
global MOBILE
if not MOBILE:
return
import uiCommon
inputDialog = uiCommon.InputDialog()
inputDialog.SetTitle(locale.MESSENGER_INPUT_MOBILE_PHONE_NUMBER_TITLE)
inputDialog.SetMaxLength(13)
inputDialog.SetAcceptEvent(ui.__mem_func__(self.OnInputMobilePhoneNumber))
inputDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseInputDialog))
inputDialog.Open()
self.inputDialog = inputDialog
def __OnDeleteMobilePhoneNumber(self):
global MOBILE
if not MOBILE:
return
import uiCommon
questionDialog = uiCommon.QuestionDialog()
questionDialog.SetText(locale.MESSENGER_DO_YOU_DELETE_PHONE_NUMBER)
questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDeleteMobile))
questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
questionDialog.Open()
self.questionDialog = questionDialog
def OnInputMobilePhoneNumber(self):
global MOBILE
if not MOBILE:
return
text = self.inputDialog.GetText()
if not text:
return
text.replace('-', '')
net.SendChatPacket("/mobile " + text)
self.OnCloseInputDialog()
return TRUE
def OnInputMobileAuthorityCode(self):
global MOBILE
if not MOBILE:
return
text = self.inputDialog.GetText()
net.SendChatPacket("/mobile_auth " + text)
self.OnCloseInputDialog()
return TRUE
def OnDeleteMobile(self):
global MOBILE
if not MOBILE:
return
net.SendChatPacket("/mobile")
self.OnCloseQuestionDialog()
return TRUE
def OnCloseInputDialog(self):
self.inputDialog.Close()
self.inputDialog = None
return TRUE
def OnCloseQuestionDialog(self):
self.questionDialog.Close()
self.questionDialog = None
return TRUE
def OnPressEscapeKey(self):
self.Close()
return TRUE
def RefreshMobile(self):
global MOBILE
if not MOBILE:
return
if player.HasMobilePhoneNumber():
self.inputMobileButton.Hide()
self.deleteMobileButton.Show()
else:
self.inputMobileButton.Show()
self.deleteMobileButton.Hide()
def OnMobileAuthority(self):
global MOBILE
if not MOBILE:
return
import uiCommon
inputDialog = uiCommon.InputDialogWithDescription()
inputDialog.SetTitle(locale.MESSENGER_INPUT_MOBILE_AUTHORITY_TITLE)
inputDialog.SetDescription(locale.MESSENGER_INPUT_MOBILE_AUTHORITY_DESCRIPTION)
inputDialog.SetAcceptEvent(ui.__mem_func__(self.OnInputMobileAuthorityCode))
inputDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseInputDialog))
inputDialog.SetMaxLength(4)
inputDialog.SetBoardWidth(310)
inputDialog.Open()
self.inputDialog = inputDialog
def RefreshBlock(self):
global blockMode
for i in xrange(len(self.blockButtonList)):
if 0 != (blockMode & (1 << i)):
self.blockButtonList[i].Down()
else:
self.blockButtonList[i].SetUp()
def RefreshViewChat(self):
if systemSetting.IsViewChat():
self.viewChatButtonList[0].Down()
self.viewChatButtonList[1].SetUp()
else:
self.viewChatButtonList[0].SetUp()
self.viewChatButtonList[1].Down()
def RefreshAlwaysShowName(self):
if systemSetting.IsAlwaysShowName():
self.alwaysShowNameButtonList[0].Down()
self.alwaysShowNameButtonList[1].SetUp()
else:
self.alwaysShowNameButtonList[0].SetUp()
self.alwaysShowNameButtonList[1].Down()
def RefreshShowDamage(self):
if systemSetting.IsShowDamage():
self.showDamageButtonList[0].Down()
self.showDamageButtonList[1].SetUp()
else:
self.showDamageButtonList[0].SetUp()
self.showDamageButtonList[1].Down()
def RefreshShowSalesText(self):
if systemSetting.IsShowSalesText():
self.showsalesTextButtonList[0].Down()
self.showsalesTextButtonList[1].SetUp()
else:
self.showsalesTextButtonList[0].SetUp()
self.showsalesTextButtonList[1].Down()
def OnBlockMode(self, mode):
global blockMode
blockMode = mode
self.RefreshBlock()
def Show(self):
self.RefreshMobile()
self.RefreshBlock()
ui.ScriptWindow.Show(self)
def Close(self):
self.Hide()