ksys/world: Implement EnvMgr::isWaterRelicRainOn

This commit is contained in:
Léo Lam
2021-05-13 12:36:18 +02:00
parent 2d5a3e7c93
commit 561e83b869
4 changed files with 20 additions and 1 deletions
+13
View File
@@ -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
+4
View File
@@ -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;
+2
View File
@@ -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;