mirror of https://github.com/AxioDL/metaforce.git
42 lines
1002 B
C++
42 lines
1002 B
C++
#include "Runtime/GuiSys/CGuiWidgetIdDB.hpp"
|
|
|
|
namespace metaforce {
|
|
|
|
CGuiWidgetIdDB::CGuiWidgetIdDB() {
|
|
AddWidget("kGSYS_DummyWidgetID", 0);
|
|
AddWidget("kGSYS_HeadWidgetID", 1);
|
|
AddWidget("kGSYS_DefaultCameraID");
|
|
AddWidget("kGSYS_DefaultLightID");
|
|
}
|
|
|
|
s16 CGuiWidgetIdDB::FindWidgetID(std::string_view name) const {
|
|
// TODO: Heterogeneous lookup when C++20 available
|
|
auto search = x0_dbMap.find(name.data());
|
|
if (search == x0_dbMap.cend())
|
|
return -1;
|
|
return search->second;
|
|
}
|
|
|
|
s16 CGuiWidgetIdDB::AddWidget(std::string_view name, s16 id) {
|
|
s16 findId = FindWidgetID(name);
|
|
if (findId == -1) {
|
|
if (id >= x14_lastPoolId)
|
|
x14_lastPoolId = id;
|
|
x0_dbMap.emplace(name, id);
|
|
findId = id;
|
|
}
|
|
return findId;
|
|
}
|
|
|
|
s16 CGuiWidgetIdDB::AddWidget(std::string_view name) {
|
|
s16 findId = FindWidgetID(name);
|
|
if (findId == -1) {
|
|
++x14_lastPoolId;
|
|
x0_dbMap.emplace(name, x14_lastPoolId);
|
|
findId = x14_lastPoolId;
|
|
}
|
|
return findId;
|
|
}
|
|
|
|
} // namespace metaforce
|