mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-13 01:57:18 -07:00
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>
This commit is contained in:
parent
ec4cee787c
commit
170a9103f9
17 changed files with 1686 additions and 598 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue