summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authoraMannus <mannusmenting@gmail.com>2023-01-26 00:13:33 +0100
committerGitHub <noreply@github.com>2023-01-25 18:13:33 -0500
commit170a9103f9e7ecdee785185c94d3a773432793ea (patch)
tree8f4a519f6dbc09f473210d2abb9296f30db7f3ed /soh/src/code
parentec4cee787cf84098c32fdc2cdb8d08e44789e475 (diff)
Implement GameInteractor & move CrowdControl and console commands to it (#2358)
* Begin GameInteractor * Basic skeleton of PoC * WIP * First 2 CC effects transitioned to GameInteractor * Prepare GameInteractor classes for CrowdControl * More effects & replace chaosEffects with GameInteractor * CC connection fixes & all CC effects (enemy spawns still borked) * First couple of build error fixes * Fix build * Proper enemy spawning * Clean up old CC code * Extract link size/invisibility into GameInteractor * Small fix/cleanup * Suggestions for PR * Address PR comment * Addressed more comments & small adjustments * Fix crash when spawning enemies * Remove Remove() * Move checks into Apply() and move CC and some console commands to it * Use inheritance to abstract check on application * Rename prefix Actions with RawAction * Make Remove return a Result * Fix issue with compilation * debugconsole -> GameInteractionEffects progress * Add State in GI * Unify some Effects * Port more debug console items * Remove state modifyiers from raw actions * Port over last raw action / state in console * Adjust some types * Consolidate link size modifier effect * Adjust more types * Define category strings in CC * Clean up remaining non defined strings * Fix bug in timed effects * Rename old pack * CC fixes * Translate GI enum function * Console cleanup/fixes/consistency Co-authored-by: David Chavez <david@dcvz.io>
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/padmgr.c6
-rw-r--r--soh/src/code/z_parameter.c25
-rw-r--r--soh/src/code/z_player_lib.c4
3 files changed, 14 insertions, 21 deletions
diff --git a/soh/src/code/padmgr.c b/soh/src/code/padmgr.c
index c79bbfe16..cb56cb806 100644
--- a/soh/src/code/padmgr.c
+++ b/soh/src/code/padmgr.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "vt.h"
-#include "soh/Enhancements/debugconsole.h"
+#include "soh/Enhancements/game-interactor/GameInteractor.h"
//#include <string.h>
@@ -229,11 +229,11 @@ void PadMgr_ProcessInputs(PadMgr* padMgr) {
case 0:
input->cur = *padnow1;
- if (chaosEffectNoZ) {
+ if (GameInteractor_DisableZTargetingActive()) {
input->cur.button &= ~(BTN_Z);
}
- if (chaosEffectReverseControls) {
+ if (GameInteractor_ReverseControlsActive()) {
if (input->cur.stick_x == -128) {
input->cur.stick_x = 127;
} else {
diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c
index c7ec3b46f..167716ccd 100644
--- a/soh/src/code/z_parameter.c
+++ b/soh/src/code/z_parameter.c
@@ -13,7 +13,7 @@
#include <assert.h>
#endif
-#include "soh/Enhancements/debugconsole.h"
+#include "soh/Enhancements/game-interactor/GameInteractor.h"
static uint16_t _doActionTexWidth, _doActionTexHeight = -1;
@@ -939,7 +939,7 @@ void func_80083108(PlayState* play) {
Interface_ChangeAlpha(50);
}
} else if (msgCtx->msgMode == MSGMODE_NONE) {
- if (chaosEffectPacifistMode) {
+ if (GameInteractor_PacifistModeActive()) {
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[5] = gSaveContext.buttonStatus[6] =
gSaveContext.buttonStatus[7] = gSaveContext.buttonStatus[8] = BTN_DISABLED;
@@ -3074,7 +3074,7 @@ s32 Health_ChangeBy(PlayState* play, s16 healthChange) {
}
// If one-hit ko mode is on, any damage kills you and you cannot gain health.
- if (chaosEffectOneHitKO) {
+ if (GameInteractor_OneHitKOActive()) {
if (healthChange < 0) {
gSaveContext.health = 0;
}
@@ -3091,11 +3091,12 @@ s32 Health_ChangeBy(PlayState* play, s16 healthChange) {
}
// clang-format on
- if (chaosEffectDefenseModifier != 0 && healthChange < 0) {
- if (chaosEffectDefenseModifier > 0) {
- healthChange /= chaosEffectDefenseModifier;
+ int32_t giDefenseModifier = GameInteractor_DefenseModifier();
+ if (giDefenseModifier != 0 && healthChange < 0) {
+ if (giDefenseModifier > 0) {
+ healthChange /= giDefenseModifier;
} else {
- healthChange *= abs(chaosEffectDefenseModifier);
+ healthChange *= abs(giDefenseModifier);
}
}
@@ -3129,14 +3130,6 @@ s32 Health_ChangeBy(PlayState* play, s16 healthChange) {
}
}
-void Health_GiveHearts(s16 hearts) {
- gSaveContext.healthCapacity += hearts * 0x10;
-}
-
-void Health_RemoveHearts(s16 hearts) {
- gSaveContext.healthCapacity -= hearts * 0x10;
-}
-
void Rupees_ChangeBy(s16 rupeeChange) {
gSaveContext.rupeeAccumulator += rupeeChange;
@@ -4968,7 +4961,7 @@ void Interface_Draw(PlayState* play) {
s16 svar6;
bool fullUi = !CVarGetInteger("gMinimalUI", 0) || !R_MINIMAP_DISABLED || play->pauseCtx.state != 0;
- if (chaosEffectNoUI) {
+ if (GameInteractor_NoUIActive()) {
return;
}
diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c
index 6569c2a5c..da7dff3e5 100644
--- a/soh/src/code/z_player_lib.c
+++ b/soh/src/code/z_player_lib.c
@@ -6,7 +6,7 @@
#include "objects/object_triforce_spot/object_triforce_spot.h"
#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h"
-#include "soh/Enhancements/debugconsole.h"
+#include "soh/Enhancements/game-interactor/GameInteractor.h"
typedef struct {
/* 0x00 */ u8 flag;
@@ -1050,7 +1050,7 @@ s32 func_80090014(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
}
}
- if (chaosEffectInvisibleLink) {
+ if (GameInteractor_InvisibleLinkActive()) {
this->actor.shape.shadowDraw = NULL;
*dList = NULL;
}