#pragma once #include struct WindowInfo { wxSize size; wxPoint position; WindowInfo(const wxSize _size = wxDefaultSize, const wxPoint _position = wxDefaultPosition) : size(_size) , position(_position) { } static WindowInfo& GetDefault() { return *new WindowInfo(wxDefaultSize, wxDefaultPosition); } }; class Ini { protected: wxConfigBase* m_Config; Ini(); virtual void Save(wxString key, int value); virtual void Save(wxString key, bool value); virtual void Save(wxString key, wxSize value); virtual void Save(wxString key, wxPoint value); virtual void Save(wxString key, wxString value); virtual void Save(wxString key, WindowInfo value); virtual int Load(wxString key, const int def_value); virtual bool Load(wxString key, const bool def_value); virtual wxSize Load(wxString key, const wxSize def_value); virtual wxPoint Load(wxString key, const wxPoint def_value); virtual wxString Load(wxString key, const wxString& def_value); virtual WindowInfo Load(wxString key, const WindowInfo& def_value); }; template struct IniEntry : public Ini { T m_value; wxString m_key; IniEntry() : Ini() { } void Init(const wxString& key, const wxString& path) { m_key = key; m_Config->SetPath(path); } void SetValue(const T& value) { m_value = value; } T GetValue() { return m_value; } T LoadValue(const T& defvalue) { return Ini::Load(m_key, defvalue); } void SaveValue(const T& value) { Ini::Save(m_key, value); } void Save() { Ini::Save(m_key, m_value); } T Load(const T& defvalue) { return (m_value = Ini::Load(m_key, defvalue)); } }; class Inis { private: const wxString DefPath; public: IniEntry CPUDecoderMode; IniEntry CPUIgnoreRWErrors; IniEntry GSRenderMode; IniEntry GSResolution; IniEntry GSAspectRatio; IniEntry GSVSyncEnable; IniEntry GSLogPrograms; IniEntry GSDumpColorBuffers; IniEntry GSDumpDepthBuffer; IniEntry PadHandlerMode; IniEntry KeyboardHandlerMode; IniEntry MouseHandlerMode; IniEntry AudioOutMode; IniEntry HLELogging; IniEntry PadHandlerLeft; IniEntry PadHandlerDown; IniEntry PadHandlerRight; IniEntry PadHandlerUp; IniEntry PadHandlerStart; IniEntry PadHandlerR3; IniEntry PadHandlerL3; IniEntry PadHandlerSelect; IniEntry PadHandlerSquare; IniEntry PadHandlerCross; IniEntry PadHandlerCircle; IniEntry PadHandlerTriangle; IniEntry PadHandlerR1; IniEntry PadHandlerL1; IniEntry PadHandlerR2; IniEntry PadHandlerL2; public: Inis() : DefPath("EmuSettings") { wxString path; path = DefPath + "\\" + "CPU"; CPUDecoderMode.Init("DecoderMode", path); CPUIgnoreRWErrors.Init("IgnoreRWErrors", path); path = DefPath + "\\" + "GS"; GSRenderMode.Init("RenderMode", path); GSResolution.Init("Resolution", path); GSAspectRatio.Init("AspectRatio", path); GSVSyncEnable.Init("VSyncEnable", path); GSLogPrograms.Init("LogPrograms", path); GSDumpColorBuffers.Init("DumpColorBuffers", path); GSDumpDepthBuffer.Init("DumpDepthBuffer", path); path = DefPath + "\\" + "IO"; PadHandlerMode.Init("PadHandlerMode", path); KeyboardHandlerMode.Init("KeyboardHandlerMode", path); MouseHandlerMode.Init("MouseHandlerMode", path); path = DefPath + "\\" + "ControlSetings"; PadHandlerLeft.Init("PadHandlerLeft", path); PadHandlerDown.Init("PadHandlerDown", path); PadHandlerRight.Init("PadHandlerRight", path); PadHandlerUp.Init("PadHandlerUp", path); PadHandlerStart.Init("PadHandlerStart", path); PadHandlerR3.Init("PadHandlerR3", path); PadHandlerL3.Init("PadHandlerL3", path); PadHandlerSelect.Init("PadHandlerSelect", path); PadHandlerSquare.Init("PadHandlerSquare", path); PadHandlerCross.Init("PadHandlerCross", path); PadHandlerCircle.Init("PadHandlerCircle", path); PadHandlerTriangle.Init("PadHandlerTriangle", path); PadHandlerR1.Init("PadHandlerR1", path); PadHandlerL1.Init("PadHandlerL1", path); PadHandlerR2.Init("PadHandlerR2", path); PadHandlerL2.Init("PadHandlerL2", path); path = DefPath + "\\" + "Audio"; AudioOutMode.Init("AudioOutMode", path); path = DefPath + "\\" + "HLE"; HLELogging.Init("HLELogging", path); } void Load() { CPUDecoderMode.Load(2); CPUIgnoreRWErrors.Load(false); GSRenderMode.Load(1); GSResolution.Load(4); GSAspectRatio.Load(2); GSVSyncEnable.Load(false); GSLogPrograms.Load(false); GSDumpColorBuffers.Load(true); GSDumpDepthBuffer.Load(true); PadHandlerMode.Load(1); KeyboardHandlerMode.Load(0); MouseHandlerMode.Load(0); AudioOutMode.Load(0); HLELogging.Load(false); PadHandlerLeft.Load(static_cast('A')); PadHandlerDown.Load(static_cast('S')); PadHandlerRight.Load(static_cast('D')); PadHandlerUp.Load(static_cast('W')); PadHandlerStart.Load(0); PadHandlerR3.Load(static_cast('C')); PadHandlerL3.Load(static_cast('Z')); PadHandlerSelect.Load(0); PadHandlerSquare.Load(static_cast('L')); PadHandlerCross.Load(static_cast('K')); PadHandlerCircle.Load(static_cast('J')); PadHandlerTriangle.Load(static_cast('I')); PadHandlerR1.Load(static_cast('3')); PadHandlerL1.Load(static_cast('1')); PadHandlerR2.Load(static_cast('E')); PadHandlerL2.Load(static_cast('Q')); } void Save() { CPUDecoderMode.Save(); CPUIgnoreRWErrors.Save(); GSRenderMode.Save(); GSResolution.Save(); GSAspectRatio.Save(); GSVSyncEnable.Save(); GSLogPrograms.Save(); GSDumpColorBuffers.Save(); GSDumpDepthBuffer.Save(); PadHandlerMode.Save(); KeyboardHandlerMode.Save(); MouseHandlerMode.Save(); AudioOutMode.Save(); HLELogging.Save(); PadHandlerLeft.Save(); PadHandlerDown.Save(); PadHandlerRight.Save(); PadHandlerUp.Save(); PadHandlerStart.Save(); PadHandlerR3.Save(); PadHandlerL3.Save(); PadHandlerSelect.Save(); PadHandlerSquare.Save(); PadHandlerCross.Save(); PadHandlerCircle.Save(); PadHandlerTriangle.Save(); PadHandlerR1.Save(); PadHandlerL1.Save(); PadHandlerR2.Save(); PadHandlerL2.Save(); } }; extern Inis Ini;