From 34ee3df3181a90ca6cf83ccd8cc67d81637305b0 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Wed, 20 Sep 2017 20:00:49 +0200 Subject: [PATCH] Refactor intent --- src/openrct2/windows/Intent.cpp | 36 +++++++++++++++++++++++++-------- src/openrct2/windows/Intent.h | 15 ++++++++++---- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/openrct2/windows/Intent.cpp b/src/openrct2/windows/Intent.cpp index 4c01f5b449..70c52654e9 100644 --- a/src/openrct2/windows/Intent.cpp +++ b/src/openrct2/windows/Intent.cpp @@ -7,28 +7,44 @@ Intent::Intent(rct_windowclass windowclass) Intent * Intent::putExtra(uint32 key, uint32 value) { - _UInts.insert(std::make_pair(key, value)); + IntentData data = {}; + data.uintVal = value; + data.type = IntentData::DT_UINT; + + _Data.insert(std::make_pair(key, data)); return this; } Intent * Intent::putExtra(uint32 key, void * value) { - _Pointers.insert(std::make_pair(key, (uintptr_t) value)); + IntentData data = {}; + data.pointerVal = value; + data.type = IntentData::DT_POINTER; + + _Data.insert(std::make_pair(key, data)); return this; } Intent * Intent::putExtra(uint32 key, sint32 value) { - _Pointers.insert(std::make_pair(key, value)); + IntentData data = {}; + data.sintVal = value; + data.type = IntentData::DT_SINT; + + _Data.insert(std::make_pair(key, data)); return this; } Intent * Intent::putExtra(uint32 key, utf8string value) { - _Strings.insert(std::make_pair(key, value)); + IntentData data = {}; + data.stringVal = value; + data.type = IntentData::DT_STRING; + + _Data.insert(std::make_pair(key, data)); return this; } @@ -40,22 +56,26 @@ rct_windowclass Intent::GetWindowClass() void * Intent::GetPointerExtra(uint32 key) { - return (void *) _Pointers.at(key); + auto data = _Data.at(key); + return (void *) data.pointerVal; } uint32 Intent::GetUIntExtra(uint32 key) { - return _UInts.at(key); + auto data = _Data.at(key); + return data.uintVal; } sint32 Intent::GetSIntExtra(uint32 key) { - return _SInts.at(key); + auto data = _Data.at(key); + return data.sintVal; } utf8string Intent::GetStringExtra(uint32 key) { - return _Strings.at(key); + auto data = _Data.at(key); + return data.stringVal; } extern "C" { diff --git a/src/openrct2/windows/Intent.h b/src/openrct2/windows/Intent.h index ba94a34bd0..35a2459b57 100644 --- a/src/openrct2/windows/Intent.h +++ b/src/openrct2/windows/Intent.h @@ -15,14 +15,21 @@ extern "C" { #include +struct IntentData +{ + enum DATATYPE { DT_UINT, DT_SINT, DT_STRING, DT_POINTER } type; + + uint32 uintVal; + sint32 sintVal; + utf8string stringVal; + void * pointerVal; +}; + class Intent { private: rct_windowclass _Class; - std::map _UInts; - std::map _SInts; - std::map _Strings; - std::map _Pointers; + std::map _Data; public: explicit Intent(rct_windowclass windowclass); rct_windowclass GetWindowClass();