ksys/world: Add more EnvMgr functions

This commit is contained in:
Léo Lam 2021-05-14 19:25:54 +02:00
parent d090c3881b
commit 84b14bc8f2
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 136 additions and 34 deletions

View File

@ -89271,22 +89271,22 @@
0x00000071010db9fc,wm::SkyMgr::isFadeOrFadeDemoScreenOpened,352, 0x00000071010db9fc,wm::SkyMgr::isFadeOrFadeDemoScreenOpened,352,
0x00000071010dbb5c,wm::SkyMgr::updateBloodMoon,792, 0x00000071010dbb5c,wm::SkyMgr::updateBloodMoon,792,
0x00000071010dbe74,wm::SkyMgr::updateBloodMoonFlags,964,_ZN4ksys5world6EnvMgr20updateBloodMoonFlagsEv 0x00000071010dbe74,wm::SkyMgr::updateBloodMoonFlags,964,_ZN4ksys5world6EnvMgr20updateBloodMoonFlagsEv
0x00000071010dc238,wm::SkyMgr::return0,8, 0x00000071010dc238,wm::SkyMgr::return0,8,_ZNK4ksys5world6EnvMgr11returnFalseEv
0x00000071010dc240,wm::SkyMgr::x_4,56, 0x00000071010dc240,wm::SkyMgr::x_4,56,_ZNK4ksys5world6EnvMgr13isInSandstormEv
0x00000071010dc278,wm::SkyMgr::x,52, 0x00000071010dc278,wm::SkyMgr::x,52,_ZNK4ksys5world6EnvMgr23isInYigaClanHideoutAreaEv
0x00000071010dc2ac,wm::SkyMgr::getConcentrationDarkness,28, 0x00000071010dc2ac,wm::SkyMgr::getConcentrationDarkness,28,_ZNK4ksys5world6EnvMgr24getConcentrationDarknessEv
0x00000071010dc2c8,nullsub_6151,4, 0x00000071010dc2c8,nullsub_6151,4,_ZN4ksys5world6EnvMgr13worldMgrCalc2Ev
0x00000071010dc2cc,wm::SkyMgr::x_8,508, 0x00000071010dc2cc,wm::SkyMgr::x_8,508,
0x00000071010dc4c8,wm::SkyMgr::getPaletteSel,36, 0x00000071010dc4c8,wm::SkyMgr::getPaletteSel,36,_ZNK4ksys5world6EnvMgr13getPaletteSetEv
0x00000071010dc4ec,wm::SkyMgr::isWaterRelicRainOn,164,_ZNK4ksys5world6EnvMgr18isWaterRelicRainOnENS0_7ClimateE 0x00000071010dc4ec,wm::SkyMgr::isWaterRelicRainOn,164,_ZNK4ksys5world6EnvMgr18isWaterRelicRainOnENS0_7ClimateE
0x00000071010dc590,wm::SkyMgr::x_0,32, 0x00000071010dc590,wm::SkyMgr::x_0,32,_ZN4ksys5world6EnvMgr18setPaletteSelSpeedEi
0x00000071010dc5b0,wm::SkyMgr::setPaletteSel,92, 0x00000071010dc5b0,wm::SkyMgr::setPaletteSel,92,_ZN4ksys5world6EnvMgr13setPaletteSetEi
0x00000071010dc60c,wm::SkyMgr::x_1,68, 0x00000071010dc60c,wm::SkyMgr::x_1,68,_ZN4ksys5world6EnvMgr19setCharAmbientScaleEN4sead7Color4fE
0x00000071010dc650,wm::SkyMgr::x_2,68, 0x00000071010dc650,wm::SkyMgr::x_2,68,_ZN4ksys5world6EnvMgr21setCharMainLightScaleEN4sead7Color4fE
0x00000071010dc694,wm::SkyMgr::setWarpMistTimer,68, 0x00000071010dc694,wm::SkyMgr::setWarpMistTimer,68,_ZN4ksys5world6EnvMgr20setWarpMistIntensityEf
0x00000071010dc6d8,wm::SkyMgr::setFogDirect,104, 0x00000071010dc6d8,wm::SkyMgr::setFogDirect,104,_ZN4ksys5world6EnvMgr12setFogDirectEbbbfff
0x00000071010dc740,wm::SkyMgr::getBloodMoonProgress,56,_ZNK4ksys5world6EnvMgr20getBloodMoonProgressEv 0x00000071010dc740,wm::SkyMgr::getBloodMoonProgress,56,_ZNK4ksys5world6EnvMgr20getBloodMoonProgressEv
0x00000071010dc778,sub_71010DC778,16, 0x00000071010dc778,sub_71010DC778,16,_ZN4ksys5world6EnvMgr20allowPaletteOverrideEv
0x00000071010dc788,wm::SkyMgr::rtti1,204,_ZNK4ksys5world6EnvMgr27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071010dc788,wm::SkyMgr::rtti1,204,_ZNK4ksys5world6EnvMgr27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071010dc854,wm::SkyMgr::rtti2,92,_ZNK4ksys5world6EnvMgr18getRuntimeTypeInfoEv 0x00000071010dc854,wm::SkyMgr::rtti2,92,_ZNK4ksys5world6EnvMgr18getRuntimeTypeInfoEv
0x00000071010dc8b0,wm::SkyMgr::getType,8,_ZNK4ksys5world6EnvMgr7getTypeEv 0x00000071010dc8b0,wm::SkyMgr::getType,8,_ZNK4ksys5world6EnvMgr7getTypeEv

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

View File

@ -456,6 +456,45 @@ void EnvMgr::updateBloodMoonFlags() {
mConcentrationBM = concentration; mConcentrationBM = concentration;
} }
bool EnvMgr::returnFalse() const {
return false;
}
bool EnvMgr::isInSandstorm() const {
if (mActivePaletteSet != 4 && mActivePaletteSet != 8)
return false;
return isPaletteSetTransitionDone();
}
bool EnvMgr::isInYigaClanHideoutArea() const {
if (mActivePaletteSet != 15)
return false;
return isPaletteSetTransitionDone();
}
float EnvMgr::getConcentrationDarkness() const {
if (mActivePaletteSet == 7)
return mPaletteSetTransition;
return 0.0f;
}
bool EnvMgr::isPaletteSetTransitionDone() const {
if (mPaletteSetTransition >= 1.0f)
return true;
#ifdef MATCHING_HACK_NX_CLANG
asm("");
#endif
return false;
}
void EnvMgr::worldMgrCalc2() {}
int EnvMgr::getPaletteSet() const {
if (mPaletteSetOverride >= 0)
return mPaletteSetOverride;
return mPaletteSetForClimate;
}
bool EnvMgr::isWaterRelicRainOn(Climate climate) const { bool EnvMgr::isWaterRelicRainOn(Climate climate) const {
if (climate != Climate::ZoraTemperateClimate) if (climate != Climate::ZoraTemperateClimate)
return false; return false;
@ -468,6 +507,49 @@ bool EnvMgr::isWaterRelicRainOn(Climate climate) const {
return !on; return !on;
} }
void EnvMgr::setPaletteSelSpeed(int speed) {
mPaletteSelSpeed = speed;
mPaletteSelSpeedTimer = 4;
}
void EnvMgr::setPaletteSet(int palette) {
if (mBlockPaletteSetOverride)
return;
mPaletteSetOverride = palette;
mPaletteSetOverrideTimer = 4;
_6b5c8 = 1;
_6b5cc = 1;
_6b550 = 1.0;
}
void EnvMgr::setCharAmbientScale(sead::Color4f color) {
mCharAmbientScaleTimer = 2;
mCharAmbientScale = color;
}
void EnvMgr::setCharMainLightScale(sead::Color4f color) {
mCharMainLightScaleTimer = 2;
mCharMainLightScale = color;
}
void EnvMgr::setWarpMistIntensity(float intensity) {
if (mWarpMistIntensity <= intensity && !(intensity >= 1.0 && mWarpMistIntensity <= 0.0)) {
mWarpMistIntensity = intensity;
mWarpMistTimer = 4;
}
}
void EnvMgr::setFogDirect(bool fog_near_use, bool fog_instant_sw, bool fog_far_use, float fog_ratio,
float fog_near, float fog_far) {
mFogSetDirectTimer = 2;
mFogRatio = fog_ratio;
mFogNear = fog_near;
mFogNearUse = fog_near_use;
mFogFar = fog_far;
mFogFagUse = fog_far_use;
mFogInstantSW = fog_instant_sw;
}
float EnvMgr::getBloodMoonProgress() const { float EnvMgr::getBloodMoonProgress() const {
if (mBloodMoonStartState == 2) if (mBloodMoonStartState == 2)
return mBloodMoonProgress; return mBloodMoonProgress;
@ -476,4 +558,8 @@ float EnvMgr::getBloodMoonProgress() const {
return 0.0f; return 0.0f;
} }
void EnvMgr::allowPaletteOverride() {
mBlockPaletteSetOverride = false;
}
} // namespace ksys::world } // namespace ksys::world

View File

@ -180,8 +180,6 @@ public:
void reset(); void reset();
void resetForStageUnload(); void resetForStageUnload();
bool checkConcentrationDarkness() const;
bool isBloodMoonNight() const; bool isBloodMoonNight() const;
bool isInBloodMoonTimeRange() const; bool isInBloodMoonTimeRange() const;
float getConcentrationBM() const; float getConcentrationBM() const;
@ -189,9 +187,26 @@ public:
void setBloodMoonProhibition(bool prohibited); void setBloodMoonProhibition(bool prohibited);
bool isLoadingScreenOpened() const; bool isLoadingScreenOpened() const;
bool returnFalse() const;
bool isInSandstorm() const;
bool isInYigaClanHideoutArea() const;
float getConcentrationDarkness() const;
bool isPaletteSetTransitionDone() const;
void worldMgrCalc2();
int getPaletteSet() const;
bool isWaterRelicRainOn(Climate climate) const; bool isWaterRelicRainOn(Climate climate) const;
void setPaletteSelSpeed(int speed);
void setPaletteSet(int palette);
void setCharAmbientScale(sead::Color4f color);
void setCharMainLightScale(sead::Color4f color);
void setWarpMistIntensity(float intensity);
void setFogDirect(bool fog_near_use, bool fog_instant_sw, bool fog_far_use, float fog_ratio,
float fog_near, float fog_far);
float getBloodMoonProgress() const; float getBloodMoonProgress() const;
void allowPaletteOverride();
protected: protected:
void init_(sead::Heap* heap) override; void init_(sead::Heap* heap) override;
void calc_() override; void calc_() override;
@ -217,9 +232,9 @@ private:
u32 mBloodMoonEndState = 0; u32 mBloodMoonEndState = 0;
u32 mBloodMoonStartState = 0; u32 mBloodMoonStartState = 0;
float mBloodMoonProgress = 0.0; float mBloodMoonProgress = 0.0;
u32 _2b0 = 0; int mPreviousPaletteSet = 0;
u32 _2b4 = 0; int mActivePaletteSet = 0;
float mConcentrationDarkness = 0.0; float mPaletteSetTransition = 0.0;
sead::SafeArray<EnvPalette, 207> mEnvPalettes; sead::SafeArray<EnvPalette, 207> mEnvPalettes;
sead::SafeArray<CdanAddFog, 4> mCdanAddFog; sead::SafeArray<CdanAddFog, 4> mCdanAddFog;
EnvPaletteStatic mEnvPaletteStaticUnused; EnvPaletteStatic mEnvPaletteStaticUnused;
@ -231,8 +246,8 @@ private:
sead::Color4f _6b4f8; sead::Color4f _6b4f8;
sead::Color4f _6b508; sead::Color4f _6b508;
sead::Color4f _6b518; sead::Color4f _6b518;
sead::Color4f _6b528; sead::Color4f mCharAmbientScale;
sead::Color4f _6b538; sead::Color4f mCharMainLightScale;
float _6b548; float _6b548;
float _6b54c; float _6b54c;
float _6b550; float _6b550;
@ -247,7 +262,7 @@ private:
float _6b574; float _6b574;
float _6b578; float _6b578;
float _6b57c; float _6b57c;
float mWarpMistTimer; float mWarpMistIntensity;
float mExposure; float mExposure;
float mForcedBloodMoonTimer; float mForcedBloodMoonTimer;
float _6b58c; float _6b58c;
@ -261,25 +276,25 @@ private:
float mFogFar; float mFogFar;
float _6b5b0; float _6b5b0;
float _6b5b4; float _6b5b4;
int mPaletteSelMaybe; int mPaletteSetOverride;
u32 _6b5bc; int mPaletteSetOverrideTimer;
u32 _6b5c0; int mPaletteSetForClimate;
u32 _6b5c4; int mPaletteSetForClimateTimer;
u32 _6b5c8; u32 _6b5c8;
u32 _6b5cc; u32 _6b5cc;
u32 _6b5d0; u32 _6b5d0;
u32 _6b5d4; u32 _6b5d4;
u32 _6b5d8; int mWarpMistTimer;
u32 _6b5dc; u32 _6b5dc;
u32 _6b5e0; u32 _6b5e0;
u32 _6b5e4; u32 _6b5e4;
u32 _6b5e8; u32 _6b5e8;
u32 _6b5ec; int mPaletteSelSpeed;
u32 _6b5f0; int mPaletteSelSpeedTimer;
int mForcedBloodMoonStatus; int mForcedBloodMoonStatus;
u32 _6b5f8; int mCharAmbientScaleTimer;
u32 _6b5fc; int mCharMainLightScaleTimer;
u32 mFogMode; int mFogSetDirectTimer;
u8 mDungeonSizeType; u8 mDungeonSizeType;
bool mForcedBloodMoonRequested; bool mForcedBloodMoonRequested;
bool mForcedBloodMoonReady; bool mForcedBloodMoonReady;
@ -290,9 +305,10 @@ private:
bool _6b60b; bool _6b60b;
bool mBloodMoonProhibited; bool mBloodMoonProhibited;
bool mDeactivateForcedBloodMoon; bool mDeactivateForcedBloodMoon;
u16 _6b60e; bool _6b60e;
bool _6b60f;
bool _6b610; bool _6b610;
bool _6b611; bool mBlockPaletteSetOverride;
u32 _6b614; u32 _6b614;
}; };
KSYS_CHECK_SIZE_NX150(EnvMgr, 0x6b618); KSYS_CHECK_SIZE_NX150(EnvMgr, 0x6b618);

View File

@ -188,7 +188,7 @@ bool TimeMgr::isInRelicBattle() const {
in_battle = true; in_battle = true;
} }
if (wm->getSkyMgr()->checkConcentrationDarkness()) if (wm->getSkyMgr()->isInYigaClanHideoutArea())
in_battle = true; in_battle = true;
return in_battle; return in_battle;