333 lines
10 KiB
Python
333 lines
10 KiB
Python
import dbg
|
|
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.renderFPSButtonList = []
|
|
self.renderFPSValues = [60, 120, 144, 240, 0]
|
|
self.performanceHUDButtonList = []
|
|
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.renderFPSButtonList.append(GetObject("render_fps_60"))
|
|
self.renderFPSButtonList.append(GetObject("render_fps_120"))
|
|
self.renderFPSButtonList.append(GetObject("render_fps_144"))
|
|
self.renderFPSButtonList.append(GetObject("render_fps_240"))
|
|
self.renderFPSButtonList.append(GetObject("render_fps_max"))
|
|
self.performanceHUDButtonList.append(GetObject("performance_hud_off"))
|
|
self.performanceHUDButtonList.append(GetObject("performance_hud_on"))
|
|
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()))
|
|
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.renderFPSButtonList[0].SAFE_SetEvent(self.__OnClickRenderFPS60Button)
|
|
self.renderFPSButtonList[1].SAFE_SetEvent(self.__OnClickRenderFPS120Button)
|
|
self.renderFPSButtonList[2].SAFE_SetEvent(self.__OnClickRenderFPS144Button)
|
|
self.renderFPSButtonList[3].SAFE_SetEvent(self.__OnClickRenderFPS240Button)
|
|
self.renderFPSButtonList[4].SAFE_SetEvent(self.__OnClickRenderFPSMaxButton)
|
|
self.performanceHUDButtonList[0].SAFE_SetEvent(self.__OnClickPerformanceHUDOffButton)
|
|
self.performanceHUDButtonList[1].SAFE_SetEvent(self.__OnClickPerformanceHUDOnButton)
|
|
|
|
self.tilingApplyButton.SAFE_SetEvent(self.__OnClickTilingApplyButton)
|
|
|
|
self.__SetCurTilingMode()
|
|
|
|
# MR-14: Fog update by Alaric
|
|
self.__ClickRadioButton(self.fogModeButtonList, systemSetting.GetFogLevel())
|
|
# MR-14: -- END OF -- Fog update by Alaric
|
|
self.__ClickRadioButton(self.cameraModeButtonList, constInfo.GET_CAMERA_MAX_DISTANCE_INDEX())
|
|
self.RefreshRenderSettings()
|
|
|
|
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):
|
|
# MR-14: Fog update by Alaric
|
|
# constInfo.SET_FOG_LEVEL_INDEX(index)
|
|
systemSetting.SetFogLevel(index)
|
|
# MR-14: -- END OF -- Fog update by Alaric
|
|
|
|
self.__ClickRadioButton(self.fogModeButtonList, index)
|
|
|
|
def __ApplyAndSaveConfig(self):
|
|
systemSetting.ApplyConfig()
|
|
systemSetting.SaveConfig()
|
|
|
|
def __GetRenderFPSButtonIndex(self):
|
|
renderFPS = systemSetting.GetRenderFPS()
|
|
if renderFPS <= 0:
|
|
return len(self.renderFPSValues) - 1
|
|
|
|
try:
|
|
return self.renderFPSValues.index(renderFPS)
|
|
except ValueError:
|
|
bestIndex = 0
|
|
bestDistance = abs(self.renderFPSValues[0] - renderFPS)
|
|
for index in xrange(len(self.renderFPSValues) - 1):
|
|
distance = abs(self.renderFPSValues[index] - renderFPS)
|
|
if distance < bestDistance:
|
|
bestIndex = index
|
|
bestDistance = distance
|
|
return bestIndex
|
|
|
|
def RefreshRenderSettings(self):
|
|
self.__ClickRadioButton(self.renderFPSButtonList, self.__GetRenderFPSButtonIndex())
|
|
self.__ClickRadioButton(self.performanceHUDButtonList, 1 if systemSetting.IsShowPerformanceHUD() else 0)
|
|
|
|
def __SetRenderFPS(self, fps):
|
|
systemSetting.SetRenderFPS(fps)
|
|
self.__ApplyAndSaveConfig()
|
|
self.RefreshRenderSettings()
|
|
|
|
def __SetPerformanceHUD(self, isVisible):
|
|
systemSetting.SetShowPerformanceHUDFlag(1 if isVisible else 0)
|
|
self.__ApplyAndSaveConfig()
|
|
self.RefreshRenderSettings()
|
|
|
|
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 __OnClickRenderFPS60Button(self):
|
|
self.__SetRenderFPS(60)
|
|
|
|
def __OnClickRenderFPS120Button(self):
|
|
self.__SetRenderFPS(120)
|
|
|
|
def __OnClickRenderFPS144Button(self):
|
|
self.__SetRenderFPS(144)
|
|
|
|
def __OnClickRenderFPS240Button(self):
|
|
self.__SetRenderFPS(240)
|
|
|
|
def __OnClickRenderFPSMaxButton(self):
|
|
self.__SetRenderFPS(0)
|
|
|
|
def __OnClickPerformanceHUDOffButton(self):
|
|
self.__SetPerformanceHUD(False)
|
|
|
|
def __OnClickPerformanceHUDOnButton(self):
|
|
self.__SetPerformanceHUD(True)
|
|
|
|
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)
|
|
systemSetting.SetMusicVolume(pos)
|
|
|
|
def OnChangeSoundVolume(self):
|
|
pos = self.ctrlSoundVolume.GetSliderPos()
|
|
snd.SetSoundVolume(pos)
|
|
systemSetting.SetSoundVolume(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):
|
|
self.RefreshRenderSettings()
|
|
self.__SetCurTilingMode()
|
|
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)
|
|
|