forked from metin2/client
249 lines
7.2 KiB
Python
249 lines
7.2 KiB
Python
import ui
|
|
import snd
|
|
import systemSetting
|
|
import net
|
|
import chat
|
|
import app
|
|
import localeInfo
|
|
import constInfo
|
|
import chrmgr
|
|
import player
|
|
import musicInfo
|
|
import uiSelectMusic
|
|
import background
|
|
|
|
MUSIC_FILENAME_MAX_LEN = 25
|
|
|
|
blockMode = 0
|
|
|
|
class OptionDialog(ui.ScriptWindow):
|
|
|
|
def __init__(self):
|
|
ui.ScriptWindow.__init__(self)
|
|
self.__Initialize()
|
|
self.__Load()
|
|
|
|
def __del__(self):
|
|
ui.ScriptWindow.__del__(self)
|
|
print " -------------------------------------- DELETE SYSTEM OPTION DIALOG"
|
|
|
|
def __Initialize(self):
|
|
self.tilingMode = 0
|
|
self.titleBar = 0
|
|
self.changeMusicButton = 0
|
|
self.selectMusicFile = 0
|
|
self.ctrlMusicVolume = 0
|
|
self.ctrlSoundVolume = 0
|
|
self.musicListDlg = 0
|
|
self.tilingApplyButton = 0
|
|
self.cameraModeButtonList = []
|
|
self.fogModeButtonList = []
|
|
self.tilingModeButtonList = []
|
|
self.ctrlShadowQuality = 0
|
|
|
|
def Destroy(self):
|
|
self.ClearDictionary()
|
|
|
|
self.__Initialize()
|
|
print " -------------------------------------- DESTROY SYSTEM OPTION DIALOG"
|
|
|
|
def __Load_LoadScript(self, fileName):
|
|
try:
|
|
pyScriptLoader = ui.PythonScriptLoader()
|
|
pyScriptLoader.LoadScriptFile(self, fileName)
|
|
except:
|
|
import exception
|
|
exception.Abort("System.OptionDialog.__Load_LoadScript")
|
|
|
|
def __Load_BindObject(self):
|
|
try:
|
|
GetObject = self.GetChild
|
|
self.titleBar = GetObject("titlebar")
|
|
self.selectMusicFile = GetObject("bgm_file")
|
|
self.changeMusicButton = GetObject("bgm_button")
|
|
self.ctrlMusicVolume = GetObject("music_volume_controller")
|
|
self.ctrlSoundVolume = GetObject("sound_volume_controller")
|
|
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.tilingModeButtonList.append(GetObject("tiling_cpu"))
|
|
self.tilingModeButtonList.append(GetObject("tiling_gpu"))
|
|
self.tilingApplyButton=GetObject("tiling_apply")
|
|
#self.ctrlShadowQuality = GetObject("shadow_bar")
|
|
except:
|
|
import exception
|
|
exception.Abort("OptionDialog.__Load_BindObject")
|
|
|
|
def __Load(self):
|
|
self.__Load_LoadScript("uiscript/systemoptiondialog.py")
|
|
self.__Load_BindObject()
|
|
|
|
self.SetCenterPosition()
|
|
|
|
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
|
|
|
|
self.ctrlMusicVolume.SetSliderPos(float(systemSetting.GetMusicVolume()))
|
|
self.ctrlMusicVolume.SetEvent(ui.__mem_func__(self.OnChangeMusicVolume))
|
|
|
|
self.ctrlSoundVolume.SetSliderPos(float(systemSetting.GetSoundVolume()) / 5.0)
|
|
self.ctrlSoundVolume.SetEvent(ui.__mem_func__(self.OnChangeSoundVolume))
|
|
|
|
# self.ctrlShadowQuality.SetSliderPos(float(systemSetting.GetShadowLevel()) / 5.0)
|
|
# self.ctrlShadowQuality.SetEvent(ui.__mem_func__(self.OnChangeShadowQuality))
|
|
|
|
self.changeMusicButton.SAFE_SetEvent(self.__OnClickChangeMusicButton)
|
|
|
|
self.cameraModeButtonList[0].SAFE_SetEvent(self.__OnClickCameraModeShortButton)
|
|
self.cameraModeButtonList[1].SAFE_SetEvent(self.__OnClickCameraModeLongButton)
|
|
|
|
self.fogModeButtonList[0].SAFE_SetEvent(self.__OnClickFogModeLevel0Button)
|
|
self.fogModeButtonList[1].SAFE_SetEvent(self.__OnClickFogModeLevel1Button)
|
|
self.fogModeButtonList[2].SAFE_SetEvent(self.__OnClickFogModeLevel2Button)
|
|
|
|
self.tilingModeButtonList[0].SAFE_SetEvent(self.__OnClickTilingModeCPUButton)
|
|
self.tilingModeButtonList[1].SAFE_SetEvent(self.__OnClickTilingModeGPUButton)
|
|
|
|
self.tilingApplyButton.SAFE_SetEvent(self.__OnClickTilingApplyButton)
|
|
|
|
self.__SetCurTilingMode()
|
|
|
|
self.__ClickRadioButton(self.fogModeButtonList, constInfo.GET_FOG_LEVEL_INDEX())
|
|
self.__ClickRadioButton(self.cameraModeButtonList, constInfo.GET_CAMERA_MAX_DISTANCE_INDEX())
|
|
|
|
if musicInfo.fieldMusic==musicInfo.METIN2THEMA:
|
|
self.selectMusicFile.SetText(uiSelectMusic.DEFAULT_THEMA)
|
|
else:
|
|
self.selectMusicFile.SetText(musicInfo.fieldMusic[:MUSIC_FILENAME_MAX_LEN])
|
|
|
|
def __OnClickTilingModeCPUButton(self):
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_CPU_TILING_1)
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_CPU_TILING_2)
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_CPU_TILING_3)
|
|
self.__SetTilingMode(0)
|
|
|
|
def __OnClickTilingModeGPUButton(self):
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_GPU_TILING_1)
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_GPU_TILING_2)
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_GPU_TILING_3)
|
|
self.__SetTilingMode(1)
|
|
|
|
def __OnClickTilingApplyButton(self):
|
|
self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_TILING_EXIT)
|
|
if 0==self.tilingMode:
|
|
background.EnableSoftwareTiling(1)
|
|
else:
|
|
background.EnableSoftwareTiling(0)
|
|
|
|
net.ExitGame()
|
|
|
|
def __OnClickChangeMusicButton(self):
|
|
if not self.musicListDlg:
|
|
|
|
self.musicListDlg=uiSelectMusic.FileListDialog()
|
|
self.musicListDlg.SAFE_SetSelectEvent(self.__OnChangeMusic)
|
|
|
|
self.musicListDlg.Open()
|
|
|
|
|
|
def __ClickRadioButton(self, buttonList, buttonIndex):
|
|
try:
|
|
selButton=buttonList[buttonIndex]
|
|
except IndexError:
|
|
return
|
|
|
|
for eachButton in buttonList:
|
|
eachButton.SetUp()
|
|
|
|
selButton.Down()
|
|
|
|
|
|
def __SetTilingMode(self, index):
|
|
self.__ClickRadioButton(self.tilingModeButtonList, index)
|
|
self.tilingMode=index
|
|
|
|
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 __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 __OnChangeMusic(self, fileName):
|
|
self.selectMusicFile.SetText(fileName[:MUSIC_FILENAME_MAX_LEN])
|
|
|
|
if musicInfo.fieldMusic != "":
|
|
snd.FadeOutMusic("BGM/"+ musicInfo.fieldMusic)
|
|
|
|
if fileName==uiSelectMusic.DEFAULT_THEMA:
|
|
musicInfo.fieldMusic=musicInfo.METIN2THEMA
|
|
else:
|
|
musicInfo.fieldMusic=fileName
|
|
|
|
musicInfo.SaveLastPlayFieldMusic()
|
|
|
|
if musicInfo.fieldMusic != "":
|
|
snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)
|
|
|
|
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 OnChangeShadowQuality(self):
|
|
pos = self.ctrlShadowQuality.GetSliderPos()
|
|
systemSetting.SetShadowLevel(int(pos / 0.2))
|
|
|
|
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 Show(self):
|
|
ui.ScriptWindow.Show(self)
|
|
|
|
def Close(self):
|
|
self.__SetCurTilingMode()
|
|
self.Hide()
|
|
|
|
def __SetCurTilingMode(self):
|
|
if background.IsSoftwareTiling():
|
|
self.__SetTilingMode(0)
|
|
else:
|
|
self.__SetTilingMode(1)
|
|
|
|
def __NotifyChatLine(self, text):
|
|
chat.AppendChat(chat.CHAT_TYPE_INFO, text)
|
|
|