-------------------------------------------------------------------------------- -- AtmosFear options dialog ---------------------------------------------------- -- Made by Cromm Cruac --------------------------------------------------------- -- for AtmosFear 3 ------------------------------------------------------------- -- 25.06.2011 ------------------------------------------------------------------ -- Modified by Alundaio -- added INI support to remove dependency on savegame -- removed fallout manager --=============================================================================== -- Modified by Tronex -- Last Edit: 17.04.2018 -- Added necessary UI elements for the global weather --=============================================================================== config = nil -- contains current atmosfear parameters weather_tbl = {"clear","partly","cloudy","rain","storm","foggy"} class "af_options_dialog" (CUIScriptWnd) function af_options_dialog:__init() super() config = config or ini_file_ex("atmosfear_options.ltx",true) level_weathers.atmosfear_init() -- fill "atmosfear_options" with current atmosfear parameters local function file_exists(name) local f=io.open(name,"r") if f~=nil then f:close() return true else return false end end self.default_settings = ini_file_ex("atmosfear_default_settings.ltx",true) -- Create INI if sections are missing local need_save if (not self.default_settings:section_exist("atmosfear_default_parameters")) then for i=1,#weather_tbl do self.default_settings:w_value("atmosfear_default_parameters","opt_weather_"..weather_tbl[i].."_period",random_choice(4,6,8)) self.default_settings:w_value("atmosfear_default_parameters","opt_weather_"..weather_tbl[i].."_occur",math.random(2,3)) end self.default_settings:w_value("atmosfear_default_parameters","opt_enable_blowout",1) self.default_settings:w_value("atmosfear_default_parameters","opt_blowout_freq",48) self.default_settings:w_value("atmosfear_default_parameters","opt_blowout_fate","turntozombie") self.default_settings:w_value("atmosfear_default_parameters","opt_blowout_warning","radio_siren") self.default_settings:w_value("atmosfear_default_parameters","opt_blowout_task","give") self.default_settings:w_value("atmosfear_default_parameters","opt_enable_psi_storm",1) self.default_settings:w_value("atmosfear_default_parameters","opt_psi_storm_freq",24) self.default_settings:w_value("atmosfear_default_parameters","opt_psi_storm_fate","kill") self.default_settings:w_value("atmosfear_default_parameters","opt_psi_storm_warning","siren") self.default_settings:w_value("atmosfear_default_parameters","opt_psi_storm_task","give") self.default_settings:w_value("atmosfear_default_parameters","opt_moon_phase","8days") self.default_settings:w_value("atmosfear_default_parameters","opt_night_brightness","slight") self.default_settings:w_value("atmosfear_default_parameters","opt_god_mode","false") need_save = true end if (not self.default_settings:section_exist("atmosfear_option_names")) then self.default_settings:w_value("atmosfear_option_names","kill","st_list_fate_kill") self.default_settings:w_value("atmosfear_option_names","explode","st_list_fate_explode") self.default_settings:w_value("atmosfear_option_names","nowarning","st_list_warning_none") self.default_settings:w_value("atmosfear_option_names","siren","st_list_warning_siren") self.default_settings:w_value("atmosfear_option_names","slight","st_list_night_brightness_slight") self.default_settings:w_value("atmosfear_option_names","turntozombie","st_list_fate_turntozombie") self.default_settings:w_value("atmosfear_option_names","balance_bad","st_list_weather_balance_preset_bad") self.default_settings:w_value("atmosfear_option_names","dontgive","st_list_task_none") self.default_settings:w_value("atmosfear_option_names","balance_good","st_list_weather_balance_preset_good") self.default_settings:w_value("atmosfear_option_names","96","st_list_freq_96") self.default_settings:w_value("atmosfear_option_names","48","st_list_freq_48") self.default_settings:w_value("atmosfear_option_names","24","st_list_freq_24") self.default_settings:w_value("atmosfear_option_names","12","st_list_freq_12") self.default_settings:w_value("atmosfear_option_names","unhurt","st_list_fate_none") self.default_settings:w_value("atmosfear_option_names","poison","st_list_fate_poison") self.default_settings:w_value("atmosfear_option_names","killatwave","st_list_fate_killatwave") self.default_settings:w_value("atmosfear_option_names","length_custom","st_list_weather_length_preset_custom") self.default_settings:w_value("atmosfear_option_names","medium","st_list_night_brightness_medium") self.default_settings:w_value("atmosfear_option_names","balance_custom","st_list_weather_balance_preset_custom") self.default_settings:w_value("atmosfear_option_names","length_default","st_list_weather_length_preset_default") self.default_settings:w_value("atmosfear_option_names","killatend","st_list_fate_killatend") self.default_settings:w_value("atmosfear_option_names","radio","st_list_warning_radio") self.default_settings:w_value("atmosfear_option_names","killorturn","st_list_fate_killorturn") self.default_settings:w_value("atmosfear_option_names","dark","st_list_night_brightness_dark") self.default_settings:w_value("atmosfear_option_names","balance_default","st_list_weather_balance_preset_default") self.default_settings:w_value("atmosfear_option_names","bright","st_list_night_brightness_bright") self.default_settings:w_value("atmosfear_option_names","length_long","st_list_weather_length_preset_long") self.default_settings:w_value("atmosfear_option_names","length_short","st_list_weather_length_preset_short") self.default_settings:w_value("atmosfear_option_names","radio_siren","st_list_warning_radio_siren") self.default_settings:w_value("atmosfear_option_names","give","st_list_task_give") self.default_settings:w_value("atmosfear_option_names","rain","st_list_periods_rain") self.default_settings:w_value("atmosfear_option_names","foggy","st_list_periods_foggy") self.default_settings:w_value("atmosfear_option_names","storm","st_list_periods_storm") self.default_settings:w_value("atmosfear_option_names","clear","st_list_periods_clear") self.default_settings:w_value("atmosfear_option_names","cloudy","st_list_periods_cloudy") self.default_settings:w_value("atmosfear_option_names","partly","st_list_periods_partly") need_save = true end if (not self.default_settings:section_exist("list_blowout_fate")) then self.default_settings:w_value("list_blowout_fate","list_fate_killatwave",1) self.default_settings:w_value("list_blowout_fate","list_fate_killatend",0) self.default_settings:w_value("list_blowout_fate","list_fate_explode",3) self.default_settings:w_value("list_blowout_fate","list_fate_turntozombie",2) need_save = true end if (not self.default_settings:section_exist("list_psi_storm_fate")) then self.default_settings:w_value("list_psi_storm_fate","list_fate_kill",0) self.default_settings:w_value("list_psi_storm_fate","list_fate_turntozombie",1) self.default_settings:w_value("list_psi_storm_fate","list_fate_none",2) need_save = true end if (not self.default_settings:section_exist("list_blowout_task")) then self.default_settings:w_value("list_blowout_task","list_task_give",0) self.default_settings:w_value("list_blowout_task","list_task_none",1) need_save = true end if (not self.default_settings:section_exist("list_psi_storm_task")) then self.default_settings:w_value("list_psi_storm_task","list_task_give",0) self.default_settings:w_value("list_psi_storm_task","list_task_none",1) need_save = true end if (not self.default_settings:section_exist("list_blowout_freq")) then self.default_settings:w_value("list_blowout_freq","list_freq_48",2) self.default_settings:w_value("list_blowout_freq","list_freq_24",1) self.default_settings:w_value("list_blowout_freq","list_freq_12",0) self.default_settings:w_value("list_blowout_freq","list_freq_96",3) need_save = true end if (not self.default_settings:section_exist("list_psi_storm_freq")) then self.default_settings:w_value("list_psi_storm_freq","list_freq_48",2) self.default_settings:w_value("list_psi_storm_freq","list_freq_24",1) self.default_settings:w_value("list_psi_storm_freq","list_freq_12",0) self.default_settings:w_value("list_psi_storm_freq","list_freq_96",3) need_save = true end if (not self.default_settings:section_exist("list_psi_storm_warning")) then self.default_settings:w_value("list_psi_storm_warning","list_warning_siren",0) self.default_settings:w_value("list_psi_storm_warning","list_warning_none",1) need_save = true end if (not self.default_settings:section_exist("list_blowout_warning")) then self.default_settings:w_value("list_blowout_warning","list_warning_radio_siren",0) self.default_settings:w_value("list_blowout_warning","list_warning_radio",1) self.default_settings:w_value("list_blowout_warning","list_warning_siren",2) self.default_settings:w_value("list_blowout_warning","list_warning_none",3) need_save = true end if (not self.default_settings:section_exist("list_night_brightness")) then self.default_settings:w_value("list_night_brightness","list_night_brightness_bright",3) self.default_settings:w_value("list_night_brightness","list_night_brightness_dark",0) self.default_settings:w_value("list_night_brightness","list_night_brightness_slight",1) self.default_settings:w_value("list_night_brightness","list_night_brightness_medium",2) need_save = true end if (need_save) then self.default_settings:save() end --self.m_preconditions = {} self:InitControls() self:InitCallBacks() end function af_options_dialog:__finalize() end function af_options_dialog:InitControls() self:SetWndRect (Frect():set(0,0,1024,768)) self:Enable (true) local xml = CScriptXmlInit() xml:ParseFile ("ui_mm_atmosfear_options.xml") xml:InitStatic ("background", self) self.dialog = xml:InitStatic("main_dialog:dialog", self) -- main dialog local btn btn = xml:Init3tButton ("main_dialog:btn_accept", self.dialog) self:Register (btn, "btn_accept") btn = xml:Init3tButton ("main_dialog:btn_cancel", self.dialog) self:Register (btn, "btn_cancel") btn = xml:Init3tButton ("main_dialog:btn_weather_options", self.dialog) self:Register (btn, "btn_weather_options") btn = xml:Init3tButton ("main_dialog:btn_event_options", self.dialog) self:Register (btn, "btn_event_options") btn = xml:Init3tButton ("main_dialog:btn_moon_options", self.dialog) self:Register (btn, "btn_moon_options") btn = xml:Init3tButton ("main_dialog:btn_default_options", self.dialog) self:Register (btn, "btn_default_options") self.dlg_event = af_opt_event() self.dlg_event:InitControls (0,0, xml, self) self.dlg_event:Show (false) self.dialog:AttachChild (self.dlg_event) xml:InitWindow ("tab_size", 0, self.dlg_event) self.dlg_weather = af_opt_weather() self.dlg_weather:InitControls (0,0, xml, self) self.dlg_weather:Show (false) self.dialog:AttachChild (self.dlg_weather) xml:InitWindow ("tab_size", 0, self.dlg_weather) self.dlg_moon = af_opt_moon() self.dlg_moon:InitControls (0,0, xml, self) self.dlg_moon:Show (false) self.dialog:AttachChild (self.dlg_moon) xml:InitWindow ("tab_size", 0, self.dlg_moon) self.dlg_default = af_opt_default() self.dlg_default:InitControls (0,0, xml, self) self.dlg_default:Show (false) self.dialog:AttachChild (self.dlg_default) xml:InitWindow ("tab_size", 0, self.dlg_default) self.message_box_save = CUIMessageBoxEx() self:Register (self.message_box_save, "message_box_save") self.message_box_user = CUIMessageBoxEx() self:Register (self.message_box_user, "message_box_user") self.message_box_load_default = CUIMessageBoxEx() self:Register (self.message_box_load_default, "message_box_load_default") self.message_box_user_done = CUIMessageBoxEx() self:Register (self.message_box_user_done, "message_box_user_done") self.message_box_load_default_done = CUIMessageBoxEx() self:Register (self.message_box_load_default_done, "message_box_load_default_done") self.b_restart_system_shown = false self:SetCurrentValues() end --###################################################################################################################### --# REGISTER OPTIONS --###################################################################################################################### function af_options_dialog:OptionsFromIni(combo, section) combo:ClearList() local options = self.default_settings:collect_section(section) local inv_options = {} if options~=nil then for option, value in pairs(options) do inv_options[value+1]=option end --table.sort(inv_options) for value, option in pairs(inv_options) do combo:AddItem(game.translate_string("st_"..option), value-1) end end end function af_options_dialog:RegisterCheck(xml, dialog, name, dialogObj) self["check_"..name] = xml:InitCheck(dialog..":check_"..name, dialogObj) self:Register (self["check_"..name], "check_"..name) end function af_options_dialog:RegisterCombo(xml, dialog, name, ini_section, dialogObj) self["list_"..name] = xml:InitComboBox (dialog..":list_"..name, dialogObj) self["list_"..name]:ClearList() self["list_"..name]:SetAutoDelete(true) if ini_section == nil then ini_section = name end self:OptionsFromIni(self["list_"..name], "list_"..ini_section) self:Register (self["list_"..name], "list_"..name) end function af_options_dialog:RegisterPeriodCombo(xml, dialog, name, ini_section, dialogObj) self["list_"..name] = xml:InitComboBox (dialog..":list_period", dialogObj) self["list_"..name]:ClearList() self["list_"..name]:SetAutoDelete(true) if ini_section == nil then ini_section = name end self:OptionsFromIni(self["list_"..name], "list_"..ini_section) self:Register (self["list_"..name], "list_"..name) self["list_"..name]:SetText("list_"..name) end function af_options_dialog:RegisterTrack(xml, dialog, name, dialogObj) local combo = xml:InitTrackBar (dialog..":"..name, dialogObj) self:Register (combo, name) return combo end function af_options_dialog:RegisterLengthRadio(xml, element, name, dialogObj, x, y) self["radio_"..name] = xml:InitTab(element, dialogObj) self["radio_"..name]:SetWndPos(vector2():set(x,y)) self:Register(self["radio_"..name], "radio_"..name) end --###################################################################################################################### --# GET/SET FUNCTIONS --###################################################################################################################### function af_options_dialog:SetComboValue(option_name,af_option) local combo = self["list_"..option_name] if af_option==nil then af_option=self.default_settings:r_value("atmosfear_option_names","opt_"..option_name) end if af_option and self.default_settings:line_exist("atmosfear_option_names",af_option) then local option = self.default_settings:r_value("atmosfear_option_names",af_option) combo:SetText(game.translate_string(option)) else combo:SetText("option not found") end end function af_options_dialog:SetRadioValue(radio_name,af_option) local radio = self["radio_"..radio_name] if af_option==nil then af_option=config:r_value("atmosfear_current_parameters","opt_"..radio_name) end if radio~=nil and af_option~=nil then radio:SetActiveTab(af_option) end end function af_options_dialog:SetLengthRadioValue(radio_name,af_option) local radio = self["radio_"..radio_name] if af_option==nil then af_option=config:r_value("atmosfear_current_parameters","opt_"..radio_name) end if radio~=nil and af_option~=nil then radio:SetActiveTab(af_option) end end function af_options_dialog:SetCheckValue(name,af_option) local checkbox = self["check_"..name] if af_option==nil then af_option=config:r_value("atmosfear_current_parameters","opt_"..name) end if checkbox~=nil and af_option~=nil then if (tonumber(af_option)==1) then checkbox:SetCheck(true) else checkbox:SetCheck(false) end end end function af_options_dialog:GetComboValue(option_name) local selected = self["list_"..option_name]:GetText() local parameters = self.default_settings:collect_section("atmosfear_option_names") for option, name in pairs(parameters) do if game.translate_string(name)==selected then return option end end end function af_options_dialog:GetRadioValue(option_name) local selected = self["radio_"..option_name]:GetActiveId() return selected end function af_options_dialog:GetCheckValue(option_name) local selected = self["check_"..option_name]:GetCheck() if selected then return 1 else return 0 end end function af_options_dialog:SetComboOption(option_name, number) config:w_value("atmosfear_current_parameters","opt_"..option_name,number and tonumber(self:GetComboValue(option_name)) or self:GetComboValue(option_name)) end function af_options_dialog:SetRadioOption(option_name, number) config:w_value("atmosfear_current_parameters","opt_"..option_name,number and tonumber(self:GetRadioValue(option_name)) or self:GetRadioValue(option_name)) end function af_options_dialog:SetCheckOption(option_name, number) config:w_value("atmosfear_current_parameters","opt_"..option_name,self:GetCheckValue(option_name)) end --###################################################################################################################### --# SETTING VALUES --###################################################################################################################### function af_options_dialog:SetCurrentValues() -- read values from "atmosfear_current_parameters", show it on UI for i=1,#weather_tbl do --? self:SetRadioValue("weather_"..weather_tbl[i].."_period", config:r_value("atmosfear_current_parameters","opt_weather_"..weather_tbl[i].."_period",0,"6")) self:SetRadioValue("weather_"..weather_tbl[i].."_occur", config:r_value("atmosfear_current_parameters","opt_weather_"..weather_tbl[i].."_occur",0,"3")) end self:SetCheckValue("enable_blowout", config:r_value("atmosfear_current_parameters","opt_enable_blowout",0,"1")) self:SetComboValue("blowout_freq", config:r_value("atmosfear_current_parameters","opt_blowout_freq",0,"48")) self:SetComboValue("blowout_fate", config:r_value("atmosfear_current_parameters","opt_blowout_fate",0,"turntozombie")) self:SetComboValue("blowout_warning", config:r_value("atmosfear_current_parameters","opt_blowout_warning",0,"radio_siren")) self:SetComboValue("blowout_task", config:r_value("atmosfear_current_parameters","opt_blowout_task",0,"give")) self:SetCheckValue("enable_psi_storm", config:r_value("atmosfear_current_parameters","opt_enable_psi_storm",0,"1")) self:SetComboValue("psi_storm_freq", config:r_value("atmosfear_current_parameters","opt_psi_storm_freq",0,"24")) self:SetComboValue("psi_storm_fate", config:r_value("atmosfear_current_parameters","opt_psi_storm_fate",0,"kill")) self:SetComboValue("psi_storm_warning", config:r_value("atmosfear_current_parameters","opt_psi_storm_warning",0,"siren")) self:SetComboValue("psi_storm_task", config:r_value("atmosfear_current_parameters","opt_psi_storm_task",0,"give")) self:SetRadioValue("moon_phase", config:r_value("atmosfear_current_parameters","opt_moon_phase",0,"8days")) self:SetComboValue("night_brightness", config:r_value("atmosfear_current_parameters","opt_night_brightness",0,"slight")) self.dlg_weather:Show (true) end function af_options_dialog:SetDefaultValues() -- read values from "atmosfear_default_parameters", show it on UI for i=1,#weather_tbl do --? self:SetRadioValue("weather_"..weather_tbl[i].."_period", self.default_settings:r_value("atmosfear_default_parameters","opt_weather_"..weather_tbl[i].."_period",0,"6")) self:SetRadioValue("weather_"..weather_tbl[i].."_occur", self.default_settings:r_value("atmosfear_default_parameters","opt_weather_"..weather_tbl[i].."_occur",0,"3")) end self:SetCheckValue("enable_blowout", self.default_settings:r_value("atmosfear_default_parameters","opt_enable_blowout",0,"1")) self:SetComboValue("blowout_freq", self.default_settings:r_value("atmosfear_default_parameters","opt_blowout_freq",0,"48")) self:SetComboValue("blowout_fate", self.default_settings:r_value("atmosfear_default_parameters","opt_blowout_fate",0,"turntozombie")) self:SetComboValue("blowout_warning", self.default_settings:r_value("atmosfear_default_parameters","opt_blowout_warning",0,"radio_siren")) self:SetComboValue("blowout_task", self.default_settings:r_value("atmosfear_default_parameters","opt_blowout_task",0,"give")) self:SetCheckValue("enable_psi_storm", self.default_settings:r_value("atmosfear_default_parameters","opt_enable_psi_storm",0,"1")) self:SetComboValue("psi_storm_freq", self.default_settings:r_value("atmosfear_default_parameters","opt_psi_storm_freq",0,"24")) self:SetComboValue("psi_storm_fate", self.default_settings:r_value("atmosfear_default_parameters","opt_psi_storm_fate",0,"kill")) self:SetComboValue("psi_storm_warning", self.default_settings:r_value("atmosfear_default_parameters","opt_psi_storm_warning",0,"siren")) self:SetComboValue("psi_storm_task", self.default_settings:r_value("atmosfear_default_parameters","opt_psi_storm_task",0,"give")) self:SetRadioValue("moon_phase", self.default_settings:r_value("atmosfear_default_parameters","opt_moon_phase",0,"8days")) self:SetComboValue("night_brightness", self.default_settings:r_value("atmosfear_default_parameters","opt_night_brightness",0,"slight")) --[[ self:SetComboValue("weather_balance_presets", self.default_settings:r_value("atmosfear_default_parameters","opt_weather_balance_presets",0,"balance_default")) self:SetComboValue("weather_length_presets", self.default_settings:r_value("atmosfear_default_parameters","opt_weather_length_presets",0,"length_default")) --]] end function af_options_dialog:InitCallBacks() self:AddCallback("btn_accept", ui_events.BUTTON_CLICKED, self.OnBtnAccept, self) self:AddCallback("btn_cancel", ui_events.BUTTON_CLICKED, self.OnBtnCancel, self) self:AddCallback("btn_weather_options", ui_events.BUTTON_CLICKED, self.OnBtnWeatherOptions, self) self:AddCallback("btn_event_options", ui_events.BUTTON_CLICKED, self.OnBtnEventOptions, self) self:AddCallback("btn_moon_options", ui_events.BUTTON_CLICKED, self.OnBtnMoonOptions, self) self:AddCallback("btn_default_options", ui_events.BUTTON_CLICKED, self.OnBtnDefaultOptions, self) self:AddCallback("btn_load_color_balance", ui_events.BUTTON_CLICKED, self.OnBtnLoadColorBalance, self) self:AddCallback("btn_load_default_settings", ui_events.BUTTON_CLICKED, self.OnBtnLoadDefaultSettings, self) self:AddCallback("message_box_user", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgUserYes, self) self:AddCallback("message_box_load_default", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgLoadDefaultYes, self) end --###################################################################################################################### --# CALLBACK FUNCTIONS --###################################################################################################################### function af_options_dialog:OnBtnWeatherOptions() self.dlg_weather:Show (true) self.dlg_event:Show (false) self.dlg_moon:Show (false) self.dlg_default:Show (false) end function af_options_dialog:OnBtnEventOptions() self.dlg_weather:Show (false) self.dlg_event:Show (true) self.dlg_moon:Show (false) self.dlg_default:Show (false) end function af_options_dialog:OnBtnMoonOptions() self.dlg_weather:Show (false) self.dlg_event:Show (false) self.dlg_moon:Show (true) self.dlg_default:Show (false) end function af_options_dialog:OnBtnDefaultOptions() self.dlg_weather:Show (false) self.dlg_event:Show (false) self.dlg_moon:Show (false) self.dlg_default:Show (true) end function af_options_dialog:OnBtnLoadColorBalance() self.message_box_user:InitMessageBox ("message_box_yes_no") self.message_box_user:SetText("st_msg_load_user") self.message_box_user:ShowDialog(true) end function af_options_dialog:OnBtnLoadDefaultSettings() self.message_box_load_default:InitMessageBox("message_box_yes_no") self.message_box_load_default:SetText("st_msg_load_default_settings") self.message_box_load_default:ShowDialog(true) end function af_options_dialog:OnMsgUserYes() self.message_box_user_done:InitMessageBox("message_box_ok") self.message_box_user_done:SetText("st_msg_load_user_done") self.message_box_user_done:ShowDialog(true) end function af_options_dialog:OnMsgLoadDefaultYes() self:SetDefaultValues() self.dlg_default:Show(false) self.dlg_weather:Show(true) self.message_box_load_default_done:InitMessageBox("message_box_ok") self.message_box_load_default_done:SetText("st_msg_load_default_settings_done") self.message_box_load_default_done:ShowDialog(true) end function af_options_dialog:OnBtnAccept() -- update the values in "atmosfear_current_parameters" basic on UI checks local update_period for i=1,#weather_tbl do self:SetRadioOption("weather_"..weather_tbl[i].."_period", false) self:SetRadioOption("weather_"..weather_tbl[i].."_occur", false) if (not update_period) and (config:r_value("atmosfear_current_parameters","weather_"..weather_tbl[i].."_period") ~= self:GetRadioValue("weather_"..weather_tbl[i].."_period") or config:r_value("weather_"..weather_tbl[i].."_occur") ~= self:GetRadioValue("weather_"..weather_tbl[i].."_occur")) then update_period = true end end if (update_period and level.present()) then level_weathers.get_weather_manager():get_next_period_change_hour(level_weathers.get_weather_manager().period) end if (config:r_value("atmosfear_current_parameters","opt_enable_blowout") and self:GetCheckValue("enable_blowout")==1) or config:r_value("atmosfear_current_parameters","opt_blowout_freq")~=tonumber(self:GetComboValue("blowout_freq")) then self:SetComboOption("blowout_freq",true) if (level.present()) then surge_manager.SurgeManager:new_surge_time(true) end end if (config:r_value("atmosfear_current_parameters","opt_enable_psi_storm") == 0 and self:GetCheckValue("enable_psi_storm")==1) or config:r_value("atmosfear_current_parameters","opt_psi_storm_freq")~=tonumber(self:GetComboValue("psi_storm_freq")) then self:SetComboOption("psi_storm_freq",true) if (level.present()) then if (psi_storm_manager) then psi_storm_manager.PsiStormManager:new_psi_storm_time(true) end end end self:SetCheckOption("enable_blowout",true) self:SetCheckOption("enable_psi_storm",true) self:SetComboOption("blowout_fate",false) self:SetComboOption("blowout_warning",false) self:SetComboOption("blowout_task",false) self:SetComboOption("psi_storm_fate",false) self:SetComboOption("psi_storm_warning",false) self:SetComboOption("psi_storm_task",false) if config:r_value("atmosfear_current_parameters","opt_moon_phase") ~= self:GetRadioValue("moon_phase") then self:SetRadioOption("moon_phase",false) if (level.present()) then level_weathers.get_weather_manager():select_weather(true) end end if config:r_value("atmosfear_current_parameters","opt_night_brightness") ~= self:GetComboValue("night_brightness") then self:SetComboOption("night_brightness",false) if (level.present()) then level_weathers.get_weather_manager():select_weather(true) end end self.dlg_weather:Show (false) self.dlg_event:Show (false) self.dlg_moon:Show (false) self.dlg_default:Show (false) self.owner:ShowDialog(true) self:HideDialog() self.owner:Show(true) config:save() end function af_options_dialog:OnBtnCancel() self.dlg_weather:Show (false) self.dlg_event:Show (false) self.dlg_moon:Show (false) self.dlg_default:Show (false) self.owner:ShowDialog(true) self:HideDialog() self.owner:Show(true) end function af_options_dialog:OnKeyboard(dik, keyboard_action) local res = CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if res==false then local bind = dik_to_bind(dik) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self.dlg_weather:Show (false) self.dlg_event:Show (false) self.dlg_moon:Show (false) self.dlg_default:Show (false) self.owner:ShowDialog(true) self:HideDialog() self.owner:Show(true) end if dik==DIK_keys.DIK_RETURN then self:OnBtnAccept() end end end return res end function af_options_dialog:Update() CUIScriptWnd.Update(self) end --###################################################################################################################### --# af_opt_event # --###################################################################################################################### class "af_opt_event" (CUIWindow) function af_opt_event:__init() super() end function af_opt_event:__finalize() end function af_opt_event:InitControls(x, y, xml, handler) self:SetWndPos(vector2():set(x,y)) self:SetWndSize(vector2():set(624,411)) self:SetAutoDelete(true) xml:InitStatic ("event_dialog:div_1", self) xml:InitStatic ("event_dialog:div_2", self) xml:InitStatic ("event_dialog:cap_af_blowout", self) xml:InitStatic ("event_dialog:cap_af_psi_storm", self) xml:InitStatic ("event_dialog:cap_check_enable_blowout", self) xml:InitStatic ("event_dialog:cap_check_enable_psi_storm", self) xml:InitStatic ("event_dialog:cap_blowout_freq", self) xml:InitStatic ("event_dialog:cap_blowout_fate", self) xml:InitStatic ("event_dialog:cap_blowout_warning", self) xml:InitStatic ("event_dialog:cap_blowout_task", self) xml:InitStatic ("event_dialog:cap_psi_storm_freq", self) xml:InitStatic ("event_dialog:cap_psi_storm_fate", self) xml:InitStatic ("event_dialog:cap_psi_storm_warning", self) xml:InitStatic ("event_dialog:cap_psi_storm_task", self) handler:RegisterCheck(xml, "event_dialog", "enable_blowout", self) handler:RegisterCheck(xml, "event_dialog", "enable_psi_storm", self) handler:RegisterCombo(xml, "event_dialog", "blowout_freq", nil, self) handler:RegisterCombo(xml, "event_dialog", "psi_storm_freq", nil, self) handler:RegisterCombo(xml, "event_dialog", "blowout_fate", nil, self) handler:RegisterCombo(xml, "event_dialog", "blowout_warning", nil, self) handler:RegisterCombo(xml, "event_dialog", "blowout_task", nil, self) handler:RegisterCombo(xml, "event_dialog", "psi_storm_fate", nil, self) handler:RegisterCombo(xml, "event_dialog", "psi_storm_warning", nil, self) handler:RegisterCombo(xml, "event_dialog", "psi_storm_task", nil, self) end --###################################################################################################################### --# af_opt_weather # --###################################################################################################################### class "af_opt_weather" (CUIWindow) function af_opt_weather:__init() super() end function af_opt_weather:__finalize() end function af_opt_weather:InitControls(x, y, xml, handler) local step=77 local _st local _el self:SetWndPos(vector2():set(x,y)) self:SetWndSize(vector2():set(624,411)) self:SetAutoDelete(true) self.scroll_v = xml:InitScrollView("weather_dialog:scroll_v", self) local aspectRatio = 1 local lil = 0 if(device().width/device().height>(1024/768+0.01)) then aspectRatio = 0.8 lil = 10 end for i=1,#weather_tbl do _st = xml:InitStatic("weather_dialog:templ_item", nil) _el = xml:InitStatic("weather_dialog:div_1", _st) _el:SetWndPos(vector2():set(0,0)) _el = xml:InitStatic("weather_dialog:text_item", _st) _el:SetWndPos(vector2():set(0,10)) local _txt = game.translate_string("st_wthr_" .. weather_tbl[i]) _el:TextControl():SetTextST(_txt) _el = xml:InitStatic("weather_dialog:cap_weather_period", _st) _el:SetWndPos(vector2():set(131*aspectRatio,20)) _el = xml:InitStatic("weather_dialog:cap_weather_occurrence", _st) _el:SetWndPos(vector2():set(390*aspectRatio,20)) _el = xml:InitStatic("weather_dialog:icon_weather_" .. weather_tbl[i], _st) _el:SetWndPos(vector2():set(30*aspectRatio - lil,15)) handler:RegisterLengthRadio(xml, "weather_dialog:radio_period_length", "weather_"..weather_tbl[i].."_period", _st, 131*aspectRatio, 48) handler:RegisterLengthRadio(xml, "weather_dialog:radio_occurrence", "weather_"..weather_tbl[i].."_occur", _st, 360*aspectRatio, 48) self.scroll_v:AddWindow(_st, true) end end --###################################################################################################################### --# af_opt_moon # --###################################################################################################################### class "af_opt_moon" (CUIWindow) function af_opt_moon:__init() super() end function af_opt_moon:__finalize() end function af_opt_moon:InitControls(x, y, xml, handler) self:SetWndPos(vector2():set(x,y)) self:SetWndSize(vector2():set(624,411)) self:SetAutoDelete(true) xml:InitStatic ("moon_dialog:cap_moon_phases", self) xml:InitStatic ("moon_dialog:cap_moon_frequency", self) xml:InitStatic ("moon_dialog:cap_moon_static", self) xml:InitStatic ("moon_dialog:cap_night_brightness", self) handler.radio_moon_phase = xml:InitTab("moon_dialog:radio_moon_phase", self) handler:Register(handler.radio_moon_phase , "radio_moon_phase") handler:RegisterCombo (xml, "moon_dialog", "night_brightness", nil, self) end --###################################################################################################################### --# af_opt_default # --###################################################################################################################### class "af_opt_default" (CUIWindow) function af_opt_default:__init() super() end function af_opt_default:__finalize() end function af_opt_default:InitControls(x, y, xml, handler) self:SetWndPos(vector2():set(x,y)) self:SetWndSize(vector2():set(624,411)) self:SetAutoDelete(true) btn = xml:Init3tButton ("defaults_dialog:btn_load_color_balance", self) handler:Register (btn, "btn_load_color_balance") btn = xml:Init3tButton ("defaults_dialog:btn_load_default_settings", self) handler:Register (btn, "btn_load_default_settings") end