mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-06-10 05:03:29 -04:00
[Modding] Add Adult Mask DL for mod compability (#6642)
This commit is contained in:
@@ -510,5 +510,30 @@ static const ALIGN_ASSET(2) char gLinkAdultVtx_0340A0[] = dgLinkAdultVtx_0340A0;
|
||||
#define dgLinkAdultVtx_02E7E0 "__OTR__objects/object_link_boy/gLinkAdultVtx_02E7E0"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultVtx_02E7E0[] = dgLinkAdultVtx_02E7E0;
|
||||
|
||||
// Adult-fitted mask display lists (for use when adult Link wears child masks via the AdultMasks enhancement)
|
||||
#define dgLinkAdultKeatonMaskDL "__OTR__objects/object_link_boy/gLinkAdultKeatonMaskDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultKeatonMaskDL[] = dgLinkAdultKeatonMaskDL;
|
||||
|
||||
#define dgLinkAdultSkullMaskDL "__OTR__objects/object_link_boy/gLinkAdultSkullMaskDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultSkullMaskDL[] = dgLinkAdultSkullMaskDL;
|
||||
|
||||
#define dgLinkAdultSpookyMaskDL "__OTR__objects/object_link_boy/gLinkAdultSpookyMaskDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultSpookyMaskDL[] = dgLinkAdultSpookyMaskDL;
|
||||
|
||||
#define dgLinkAdultBunnyHoodDL "__OTR__objects/object_link_boy/gLinkAdultBunnyHoodDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultBunnyHoodDL[] = dgLinkAdultBunnyHoodDL;
|
||||
|
||||
#define dgLinkAdultGoronMaskDL "__OTR__objects/object_link_boy/gLinkAdultGoronMaskDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultGoronMaskDL[] = dgLinkAdultGoronMaskDL;
|
||||
|
||||
#define dgLinkAdultZoraMaskDL "__OTR__objects/object_link_boy/gLinkAdultZoraMaskDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultZoraMaskDL[] = dgLinkAdultZoraMaskDL;
|
||||
|
||||
#define dgLinkAdultGerudoMaskDL "__OTR__objects/object_link_boy/gLinkAdultGerudoMaskDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultGerudoMaskDL[] = dgLinkAdultGerudoMaskDL;
|
||||
|
||||
#define dgLinkAdultMaskOfTruthDL "__OTR__objects/object_link_boy/gLinkAdultMaskOfTruthDL"
|
||||
static const ALIGN_ASSET(2) char gLinkAdultMaskOfTruthDL[] = dgLinkAdultMaskOfTruthDL;
|
||||
|
||||
|
||||
#endif // OBJECTS_OBJECT_LINK_BOY_H
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||
#include "soh/ShipInit.hpp"
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
|
||||
extern "C" {
|
||||
#include "macros.h"
|
||||
#include "functions.h"
|
||||
#include "objects/object_link_boy/object_link_boy.h"
|
||||
extern SaveContext gSaveContext;
|
||||
}
|
||||
|
||||
static const char* sAdultMaskDLists[] = {
|
||||
gLinkAdultKeatonMaskDL, gLinkAdultSkullMaskDL, gLinkAdultSpookyMaskDL, gLinkAdultBunnyHoodDL,
|
||||
gLinkAdultGoronMaskDL, gLinkAdultZoraMaskDL, gLinkAdultGerudoMaskDL, gLinkAdultMaskOfTruthDL,
|
||||
};
|
||||
|
||||
static void RegisterAgeDependentMasks() {
|
||||
COND_VB_SHOULD(VB_DRAW_PLAYER_MASK, CVarGetInteger(CVAR_SETTING("AltAssets"), 1), {
|
||||
if (!LINK_IS_ADULT)
|
||||
return;
|
||||
|
||||
PlayerMask currentMask = (PlayerMask)va_arg(args, int);
|
||||
PlayState* play = va_arg(args, PlayState*);
|
||||
|
||||
int maskIndex = currentMask - 1;
|
||||
if (maskIndex < 0 || maskIndex >= 8)
|
||||
return;
|
||||
|
||||
const char* adultDL = sAdultMaskDLists[maskIndex];
|
||||
if (!ResourceGetIsCustomByName(adultDL) && !ResourceMgr_FileExists(adultDL))
|
||||
return;
|
||||
|
||||
*should = false;
|
||||
gSPDisplayList(play->state.gfxCtx->polyOpa.p++, (Gfx*)adultDL);
|
||||
});
|
||||
}
|
||||
|
||||
static RegisterShipInitFunc initFunc(RegisterAgeDependentMasks, { CVAR_SETTING("AltAssets") });
|
||||
@@ -579,6 +579,15 @@ typedef enum {
|
||||
// - None
|
||||
VB_DRAW_ADDITIONAL_RETICLES,
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// true
|
||||
// ```
|
||||
// #### `args`
|
||||
// - `PlayerMask currentMask`
|
||||
// - `*PlayState play`
|
||||
VB_DRAW_PLAYER_MASK,
|
||||
|
||||
// #### `result`
|
||||
// In `Interface_DrawAmmoCount`:
|
||||
// ```c
|
||||
|
||||
@@ -12449,8 +12449,10 @@ void Player_DrawGameplay(PlayState* play, Player* this, s32 lod, Gfx* cullDList,
|
||||
MATRIX_TOMTX(bunnyEarMtx);
|
||||
}
|
||||
|
||||
if (this->currentMask != PLAYER_MASK_BUNNY || !CVarGetInteger(CVAR_ENHANCEMENT("HideBunnyHood"), 0)) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, sMaskDlists[this->currentMask - 1]);
|
||||
if (GameInteractor_Should(VB_DRAW_PLAYER_MASK, true, this->currentMask, play)) {
|
||||
if (this->currentMask != PLAYER_MASK_BUNNY || !CVarGetInteger(CVAR_ENHANCEMENT("HideBunnyHood"), 0)) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, sMaskDlists[this->currentMask - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
if (CVarGetInteger(CVAR_GENERAL("FixIceTrapWithBunnyHood"), 1))
|
||||
|
||||
Reference in New Issue
Block a user