From 561e83b869157c8f91305baf4ff1095161ac9960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 13 May 2021 12:36:18 +0200 Subject: [PATCH] ksys/world: Implement EnvMgr::isWaterRelicRainOn --- data/uking_functions.csv | 2 +- src/KingSystem/World/worldEnvMgr.cpp | 13 +++++++++++++ src/KingSystem/World/worldEnvMgr.h | 4 ++++ src/KingSystem/World/worldTimeMgr.h | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index b83ac2f4..fd6b1742 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89278,7 +89278,7 @@ 0x00000071010dc2c8,nullsub_6151,4, 0x00000071010dc2cc,wm::SkyMgr::x_8,508, 0x00000071010dc4c8,wm::SkyMgr::getPaletteSel,36, -0x00000071010dc4ec,wm::SkyMgr::isWaterRelicRainOn,164, +0x00000071010dc4ec,wm::SkyMgr::isWaterRelicRainOn,164,_ZNK4ksys5world6EnvMgr18isWaterRelicRainOnENS0_7ClimateE 0x00000071010dc590,wm::SkyMgr::x_0,32, 0x00000071010dc5b0,wm::SkyMgr::setPaletteSel,92, 0x00000071010dc60c,wm::SkyMgr::x_1,68, diff --git a/src/KingSystem/World/worldEnvMgr.cpp b/src/KingSystem/World/worldEnvMgr.cpp index dba1502e..48a6d7a4 100644 --- a/src/KingSystem/World/worldEnvMgr.cpp +++ b/src/KingSystem/World/worldEnvMgr.cpp @@ -1,4 +1,5 @@ #include "KingSystem/World/worldEnvMgr.h" +#include "KingSystem/GameData/gdtManager.h" #include "KingSystem/World/worldManager.h" namespace ksys::world { @@ -321,4 +322,16 @@ void EnvMgr::setBloodMoonProhibition(bool prohibited) { mBloodMoonProhibited = prohibited; } +bool EnvMgr::isWaterRelicRainOn(Climate climate) const { + if (climate != Climate::ZoraTemperateClimate) + return false; + + bool on = false; + const auto flag = Manager::instance()->getTimeMgr()->getWaterRelicRainStopFlag(); + if (flag == gdt::InvalidHandle) + return false; + gdt::Manager::instance()->getBool(flag, &on, true); + return !on; +} + } // namespace ksys::world diff --git a/src/KingSystem/World/worldEnvMgr.h b/src/KingSystem/World/worldEnvMgr.h index a0be4ce7..e21ec21a 100644 --- a/src/KingSystem/World/worldEnvMgr.h +++ b/src/KingSystem/World/worldEnvMgr.h @@ -10,6 +10,8 @@ namespace ksys::world { +enum class Climate; + // TODO class EnvMgr : public Job { SEAD_RTTI_OVERRIDE(EnvMgr, Job) @@ -186,6 +188,8 @@ public: void activateForcedBloodMoon(); void setBloodMoonProhibition(bool prohibited); + bool isWaterRelicRainOn(Climate climate) const; + protected: void init_(sead::Heap* heap) override; void calc_() override; diff --git a/src/KingSystem/World/worldTimeMgr.h b/src/KingSystem/World/worldTimeMgr.h index cb156938..10ed6126 100644 --- a/src/KingSystem/World/worldTimeMgr.h +++ b/src/KingSystem/World/worldTimeMgr.h @@ -103,6 +103,8 @@ public: } bool wasBloodyDay() const { return mWasBloodyDay; } + gdt::FlagHandle getWaterRelicRainStopFlag() const { return mWaterRelicRainStopFlag; } + protected: void init_(sead::Heap* heap) override; void calc_() override;