#pragma once #include #include #include "RetroTypes.hpp" namespace urde { class CTweakValue { public: struct Audio { float x0_fadeIn, x4_fadeOut, x8_volume; std::string xc_fileName; CAssetId x1c_res; Audio(float fadeIn, float fadeOut, float vol, std::string_view fileName, u32 handle) : x0_fadeIn(fadeIn), x4_fadeOut(fadeOut), x8_volume(vol), xc_fileName(fileName), x1c_res(handle) {} float GetFadeIn() const { return x0_fadeIn; } float GetFadeOut() const { return x4_fadeOut; } float GetVolume() const { return x8_volume; } std::string_view GetFileName() const { return xc_fileName; } CAssetId GetResId() const { return x1c_res; } static Audio None() { return Audio{0.f, 0.f, 0.f, "", 0}; } }; enum class EType { }; EType x0_type; std::string x4_key; std::string x14_str; Audio x24_audio; union { u32 x44_int; float x44_flt; }; public: CTweakValue()=default; //CTweakValue(CTextInputStream&); //void PutTo(CTextOutStream&); std::string_view GetName() const { return x4_key; } std::string_view GetValueAsString() const; void SetValueFromString(std::string_view); const Audio& GetAudio() const { return x24_audio; } EType GetType() const { return x0_type; } }; class CInGameTweakManagerBase { protected: std::vector x0_values; public: bool HasTweakValue(std::string_view name) const { for (const CTweakValue& val : x0_values) if (val.GetName() == name) return true; return false; } const CTweakValue* GetTweakValue(std::string_view name) const { for (const CTweakValue& val : x0_values) if (val.GetName() == name) return &val; return nullptr; } bool ReadFromMemoryCard(std::string_view name) { return true; } static std::string GetIdentifierForMidiEvent(CAssetId world, CAssetId area, std::string_view midiObj) { return hecl::Format("World %8.8x Area %8.8x MidiObject: %s", u32(world.Value()), u32(area.Value()), midiObj.data()); } }; }