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
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 20 additions and 1 deletions

View File

@ -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,

Can't render this file because it is too large.

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

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;

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;