Files
m2dev-client/assets/root/uisystemoption.py
2026-04-16 10:37:13 +02:00

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)