import ui import snd import systemSetting import net import chat import app import locale import constInfo import chrmgr import player MOBILE = FALSE if locale.IsYMIR(): MOBILE = TRUE blockMode = 0 class OptionDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.__Initialize() self.__LoadDialog() def __del__(self): ui.ScriptWindow.__del__(self) print " -------------------------------------- DELETE OPTION DIALOG" def __Initialize(self): self.titleBar = 0 self.ctrlMusicVolume = 0 self.ctrlSoundVolume = 0 self.nameColorModeButtonList = [] self.viewTargetBoardButtonList = [] self.cameraModeButtonList = [] self.pvpModeButtonDict = {} self.fogModeButtonList = [] self.blockButtonList = [] def Destroy(self): self.ClearDictionary() self.__Initialize() print " -------------------------------------- DESTROY OPTION DIALOG" def __LoadDialog(self): global NO_MOBILE try: pyScriptLoader = ui.PythonScriptLoader() if MOBILE: pyScriptLoader.LoadScriptFile(self, "uiscript/optiondialog_formobile.py") else: pyScriptLoader.LoadScriptFile(self, "uiscript/optiondialog.py") except: import exception exception.Abort("OptionDialog.__LoadDialog.LoadObject") try: GetObject = self.GetChild self.titleBar = GetObject("titlebar") self.ctrlMusicVolume = GetObject("music_volume_controller") self.ctrlSoundVolume = GetObject("sound_volume_controller") 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.cameraModeButtonList.append(GetObject("camera_short")) self.cameraModeButtonList.append(GetObject("camera_long")) self.fogModeButtonList.append(GetObject("fog_level0")) self.fogModeButtonList.append(GetObject("fog_level1")) self.fogModeButtonList.append(GetObject("fog_level2")) 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")) if MOBILE: self.inputMobileButton = GetObject("input_mobile_button") self.deleteMobileButton = GetObject("delete_mobile_button") except: import exception exception.Abort("OptionDialog.__LoadDialog.BindObject") self.SetCenterPosition() self.ctrlMusicVolume.SetSliderPos(float(systemSetting.GetMusicVolume())) self.ctrlSoundVolume.SetSliderPos(float(systemSetting.GetSoundVolume()) / 5.0) self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close)) self.ctrlMusicVolume.SetEvent(ui.__mem_func__(self.OnChangeMusicVolume)) self.ctrlSoundVolume.SetEvent(ui.__mem_func__(self.OnChangeSoundVolume)) 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.cameraModeButtonList[0].SAFE_SetEvent(self.__OnClickCameraModeShortButton) self.cameraModeButtonList[1].SAFE_SetEvent(self.__OnClickCameraModeLongButton) 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.fogModeButtonList[0].SAFE_SetEvent(self.__OnClickFogModeLevel0Button) self.fogModeButtonList[1].SAFE_SetEvent(self.__OnClickFogModeLevel1Button) self.fogModeButtonList[2].SAFE_SetEvent(self.__OnClickFogModeLevel2Button) 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[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.__ClickRadioButton(self.fogModeButtonList, constInfo.GET_FOG_LEVEL_INDEX()) self.__ClickRadioButton(self.cameraModeButtonList, constInfo.GET_CAMERA_MAX_DISTANCE_INDEX()) self.__ClickRadioButton(self.nameColorModeButtonList, constInfo.GET_CHRNAME_COLOR_INDEX()) self.__ClickRadioButton(self.viewTargetBoardButtonList, constInfo.GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD()) self.__SetPeacePKMode() 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 __SetCameraMode(self, index): constInfo.SET_CAMERA_MAX_DISTANCE_INDEX(index) self.__ClickRadioButton(self.cameraModeButtonList, index) def __SetFogLevel(self, index): constInfo.SET_FOG_LEVEL_INDEX(index) self.__ClickRadioButton(self.fogModeButtonList, index) 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 __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 OnChangeMusicVolume(self): pos = self.ctrlMusicVolume.GetSliderPos() snd.SetMusicVolume(pos * net.GetFieldMusicVolume()) systemSetting.SetMusicVolume(pos) def OnChangeSoundVolume(self): pos = self.ctrlSoundVolume.GetSliderPos() snd.SetSoundVolumef(pos) systemSetting.SetSoundVolumef(pos) def __OnChangeMobilePhoneNumber(self): 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): 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): text = self.inputDialog.GetText() if not text: return text.replace('-', '') net.SendChatPacket("/mobile " + text) self.OnCloseInputDialog() return TRUE def OnInputMobileAuthorityCode(self): text = self.inputDialog.GetText() net.SendChatPacket("/mobile_auth " + text) self.OnCloseInputDialog() return TRUE def OnDeleteMobile(self): 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): 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 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() if __name__ == "__main__": import app import wndMgr import systemSetting import mouseModule import grp import ui import chr import background import player #wndMgr.SetOutlineFlag(TRUE) app.SetMouseHandler(mouseModule.mouseController) app.SetHairColorEnable(TRUE) wndMgr.SetMouseHandler(mouseModule.mouseController) wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight()) app.Create("METIN2 CLOSED BETA", systemSetting.GetWidth(), systemSetting.GetHeight(), 1) mouseModule.mouseController.Create() wnd = OptionDialog() wnd.Show() app.Loop()