Fix GI overruling link size over anything else (#2424)

This commit is contained in:
aMannus 2023-01-31 13:21:16 +01:00 committed by GitHub
parent 612700c2ab
commit e14fcf92d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 8 deletions

View File

@ -233,7 +233,7 @@ namespace GameInteractionEffect {
GameInteractor::State::LinkSize = (GILinkSize)parameter;
}
void ModifyLinkSize::_Remove() {
GameInteractor::State::LinkSize = GI_LINK_SIZE_NORMAL;
GameInteractor::State::LinkSize = GI_LINK_SIZE_RESET;
}
// MARK: - InvisibleLink

View File

@ -10,6 +10,7 @@ typedef enum {
/* 0x01 */ GI_LINK_SIZE_GIANT,
/* 0x02 */ GI_LINK_SIZE_MINISH,
/* 0x03 */ GI_LINK_SIZE_PAPER,
/* 0x04 */ GI_LINK_SIZE_RESET
} GILinkSize;
typedef enum {
@ -22,9 +23,9 @@ typedef enum {
extern "C" {
#endif
uint8_t GameInteractor_NoUIActive();
GILinkSize GameInteractor_LinkSize();
GILinkSize GameInteractor_GetLinkSize();
void GameInteractor_SetLinkSize(GILinkSize size);
uint8_t GameInteractor_InvisibleLinkActive();
uint8_t GameInteractor_ResetLinkScale();
uint8_t GameInteractor_OneHitKOActive();
uint8_t GameInteractor_PacifistModeActive();
uint8_t GameInteractor_DisableZTargetingActive();

View File

@ -27,10 +27,15 @@ uint8_t GameInteractor_NoUIActive() {
}
// MARK: - GameInteractor::State::LinkSize
GILinkSize GameInteractor_LinkSize() {
GILinkSize GameInteractor_GetLinkSize() {
return GameInteractor::State::LinkSize;
}
// MARK: - GameInteractor::State::LinkSize
void GameInteractor_SetLinkSize(GILinkSize size) {
GameInteractor::State::LinkSize = size;
}
// MARK: - GameInteractor::State::InvisibleLinkActive
uint8_t GameInteractor_InvisibleLinkActive() {
return GameInteractor::State::InvisibleLinkActive;

View File

@ -10995,7 +10995,13 @@ void Player_Update(Actor* thisx, PlayState* play) {
MREG(54) = this->actor.world.pos.z;
MREG(55) = this->actor.world.rot.y;
switch (GameInteractor_LinkSize()) {
switch (GameInteractor_GetLinkSize()) {
case GI_LINK_SIZE_RESET:
this->actor.scale.x = 0.01f;
this->actor.scale.y = 0.01f;
this->actor.scale.z = 0.01f;
GameInteractor_SetLinkSize(GI_LINK_SIZE_NORMAL);
break;
case GI_LINK_SIZE_GIANT:
this->actor.scale.x = 0.02f;
this->actor.scale.y = 0.02f;
@ -11013,9 +11019,6 @@ void Player_Update(Actor* thisx, PlayState* play) {
break;
case GI_LINK_SIZE_NORMAL:
default:
this->actor.scale.x = 0.01f;
this->actor.scale.y = 0.01f;
this->actor.scale.z = 0.01f;
break;
}