Standardize Event Object to Object Event

This commit is contained in:
GriffinR
2019-11-20 22:55:44 -05:00
parent 215bb31d67
commit ec3e86f1d2
606 changed files with 10080 additions and 10080 deletions

View File

@@ -149,15 +149,15 @@ static u8 GetLinkPlayerElevation(u8 linkPlayerId);
static s32 sub_80878E4(u8 linkPlayerId);
static u8 GetLinkPlayerIdAt(s16 x, s16 y);
static void SetPlayerFacingDirection(u8 linkPlayerId, u8 a2);
static void ZeroEventObject(struct EventObject *eventObj);
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y);
static void ZeroObjectEvent(struct ObjectEvent *objEvent);
static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4);
static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s16 y);
static void sub_80877DC(u8 linkPlayerId, u8 a2);
static void sub_808780C(u8 linkPlayerId);
static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
static void sub_8087584(void);
static u32 GetLinkSendQueueLength(void);
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj);
static void ZeroLinkPlayerObjectEvent(struct LinkPlayerObjectEvent *linkPlayerEventObj);
static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
static u16 GetDirectionForEventScript(const u8 *script);
static void sub_8087510(void);
@@ -217,7 +217,7 @@ EWRAM_DATA static u16 sLastMapSectionId = 0;
EWRAM_DATA static struct InitialPlayerAvatarState gInitialPlayerAvatarState = {0};
EWRAM_DATA static u16 sAmbientCrySpecies = 0;
EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
EWRAM_DATA struct LinkPlayerEventObject gLinkPlayerEventObjects[4] = {0};
EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0};
// const rom data
static const struct WarpData sDummyWarpData =
@@ -338,23 +338,23 @@ static const struct ScanlineEffectParams sFlashEffectParams =
0,
};
static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *, struct EventObject *, u8);
static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *, struct EventObject *, u8);
static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *, struct EventObject *, u8);
static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 MovementEventModeCB_Normal_2(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) =
{
MovementEventModeCB_Normal, // MOVEMENT_MODE_FREE
MovementEventModeCB_Ignored, // MOVEMENT_MODE_FROZEN
MovementEventModeCB_Normal_2, // MOVEMENT_MODE_SCRIPTED
};
static u8 FacingHandler_DoNothing(struct LinkPlayerEventObject *, struct EventObject *, u8);
static u8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *, struct EventObject *, u8);
static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *, struct EventObject *, u8);
static u8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
// These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise.
static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) =
{
FacingHandler_DoNothing,
FacingHandler_DpadMovement,
@@ -369,11 +369,11 @@ static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerEventObject *
FacingHandler_ForcedFacingChange,
};
static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *, struct EventObject *);
static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *, struct EventObject *);
static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerObjectEvent *, struct ObjectEvent *);
static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent *, struct ObjectEvent *);
// These handlers are run after an attempted movement.
static void (*const gMovementStatusHandler[])(struct LinkPlayerEventObject *, struct EventObject *) =
static void (*const gMovementStatusHandler[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *) =
{
// FALSE:
MovementStatusHandler_EnterFreeMode,
@@ -496,18 +496,18 @@ void ApplyNewEncryptionKeyToGameStats(u32 newKey)
void LoadEventObjTemplatesFromHeader(void)
{
// Clear map object templates
CpuFill32(0, gSaveBlock1Ptr->eventObjectTemplates, sizeof(gSaveBlock1Ptr->eventObjectTemplates));
CpuFill32(0, gSaveBlock1Ptr->objectEventTemplates, sizeof(gSaveBlock1Ptr->objectEventTemplates));
// Copy map header events to save block
CpuCopy32(gMapHeader.events->eventObjects,
gSaveBlock1Ptr->eventObjectTemplates,
gMapHeader.events->eventObjectCount * sizeof(struct EventObjectTemplate));
CpuCopy32(gMapHeader.events->objectEvents,
gSaveBlock1Ptr->objectEventTemplates,
gMapHeader.events->objectEventCount * sizeof(struct ObjectEventTemplate));
}
void LoadSaveblockEventObjScripts(void)
{
struct EventObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->eventObjects;
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
struct ObjectEventTemplate *mapHeaderObjTemplates = gMapHeader.events->objectEvents;
struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
s32 i;
for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
@@ -517,15 +517,15 @@ void LoadSaveblockEventObjScripts(void)
void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y)
{
s32 i;
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
{
struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
if (eventObjectTemplate->localId == localId)
struct ObjectEventTemplate *objectEventTemplate = &savObjTemplates[i];
if (objectEventTemplate->localId == localId)
{
eventObjectTemplate->x = x;
eventObjectTemplate->y = y;
objectEventTemplate->x = x;
objectEventTemplate->y = y;
return;
}
}
@@ -535,13 +535,13 @@ void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType)
{
s32 i;
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
struct ObjectEventTemplate *savObjTemplates = gSaveBlock1Ptr->objectEventTemplates;
for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
{
struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
if (eventObjectTemplate->localId == localId)
struct ObjectEventTemplate *objectEventTemplate = &savObjTemplates[i];
if (objectEventTemplate->localId == localId)
{
eventObjectTemplate->movementType = movementType;
objectEventTemplate->movementType = movementType;
return;
}
}
@@ -853,9 +853,9 @@ static void mli0_load_map(u32 a1)
if (!(sUnknown_020322D8 & 1))
{
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
LoadBattlePyramidEventObjectTemplates();
LoadBattlePyramidObjectEventTemplates();
else if (InTrainerHill())
LoadTrainerHillEventObjectTemplates();
LoadTrainerHillObjectEventTemplates();
else
LoadEventObjTemplatesFromHeader();
}
@@ -1721,13 +1721,13 @@ void CB2_ContinueSavedGame(void)
ClearDiveAndHoleWarps();
trainerHillMapId = GetCurrentTrainerHillMapId();
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
LoadBattlePyramidFloorEventObjectScripts();
LoadBattlePyramidFloorObjectEventScripts();
else if (trainerHillMapId != 0 && trainerHillMapId != TRAINER_HILL_ENTRANCE)
LoadTrainerHillFloorEventObjectScripts();
LoadTrainerHillFloorObjectEventScripts();
else
LoadSaveblockEventObjScripts();
UnfreezeEventObjects();
UnfreezeObjectEvents();
DoTimeBasedEvents();
sub_8084788();
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
@@ -2143,9 +2143,9 @@ static void sub_8086988(u32 a1)
ResetCameraUpdateInfo();
InstallCameraPanAheadCallback();
if (!a1)
InitEventObjectPalettes(0);
InitObjectEventPalettes(0);
else
InitEventObjectPalettes(1);
InitObjectEventPalettes(1);
FieldEffectActiveListClear();
StartWeather();
@@ -2160,8 +2160,8 @@ static void sub_80869DC(void)
{
gTotalCameraPixelOffsetX = 0;
gTotalCameraPixelOffsetY = 0;
ResetEventObjects();
TrySpawnEventObjects(0, 0);
ResetObjectEvents();
TrySpawnObjectEvents(0, 0);
TryRunOnWarpIntoMapScript();
}
@@ -2172,13 +2172,13 @@ static void mli4_mapscripts_and_other(void)
gTotalCameraPixelOffsetX = 0;
gTotalCameraPixelOffsetY = 0;
ResetEventObjects();
ResetObjectEvents();
GetCameraFocusCoords(&x, &y);
player = GetInitialPlayerAvatarState();
InitPlayerAvatar(x, y, player->direction, gSaveBlock2Ptr->playerGender);
SetPlayerAvatarTransitionFlags(player->transitionFlags);
ResetInitialPlayerAvatarState();
TrySpawnEventObjects(0, 0);
TrySpawnObjectEvents(0, 0);
TryRunOnWarpIntoMapScript();
}
@@ -2191,7 +2191,7 @@ static void sub_8086A68(void)
static void sub_8086A80(void)
{
gEventObjects[gPlayerAvatar.eventObjectId].trackedByCamera = 1;
gObjectEvents[gPlayerAvatar.objectEventId].trackedByCamera = 1;
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
@@ -2226,7 +2226,7 @@ static void sub_8086B14(void)
for (i = 0; i < gFieldLinkPlayerCount; i++)
{
SpawnLinkPlayerEventObject(i, i + x, y, gLinkPlayers[i].gender);
SpawnLinkPlayerObjectEvent(i, i + x, y, gLinkPlayers[i].gender);
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
@@ -2702,7 +2702,7 @@ static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 myPlayerId, struct TradeRo
trainer->playerId = linkPlayerId;
trainer->isLocalPlayer = (linkPlayerId == myPlayerId) ? 1 : 0;
trainer->c = gLinkPlayerEventObjects[linkPlayerId].movementMode;
trainer->c = gLinkPlayerObjectEvents[linkPlayerId].movementMode;
trainer->facing = GetLinkPlayerFacingDirection(linkPlayerId);
GetLinkPlayerCoords(linkPlayerId, &x, &y);
trainer->pos.x = x;
@@ -2918,110 +2918,110 @@ static u32 GetLinkSendQueueLength(void)
return gLink.sendQueue.count;
}
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj)
static void ZeroLinkPlayerObjectEvent(struct LinkPlayerObjectEvent *linkPlayerEventObj)
{
memset(linkPlayerEventObj, 0, sizeof(struct LinkPlayerEventObject));
memset(linkPlayerEventObj, 0, sizeof(struct LinkPlayerObjectEvent));
}
void ClearLinkPlayerEventObjects(void)
void ClearLinkPlayerObjectEvents(void)
{
memset(gLinkPlayerEventObjects, 0, sizeof(gLinkPlayerEventObjects));
memset(gLinkPlayerObjectEvents, 0, sizeof(gLinkPlayerObjectEvents));
}
static void ZeroEventObject(struct EventObject *eventObj)
static void ZeroObjectEvent(struct ObjectEvent *objEvent)
{
memset(eventObj, 0, sizeof(struct EventObject));
memset(objEvent, 0, sizeof(struct ObjectEvent));
}
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4)
{
u8 eventObjId = GetFirstInactiveEventObjectId();
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
struct EventObject *eventObj = &gEventObjects[eventObjId];
u8 objEventId = GetFirstInactiveObjectEventId();
struct LinkPlayerObjectEvent *linkPlayerEventObj = &gLinkPlayerObjectEvents[linkPlayerId];
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
ZeroLinkPlayerEventObject(linkPlayerEventObj);
ZeroEventObject(eventObj);
ZeroLinkPlayerObjectEvent(linkPlayerEventObj);
ZeroObjectEvent(objEvent);
linkPlayerEventObj->active = 1;
linkPlayerEventObj->linkPlayerId = linkPlayerId;
linkPlayerEventObj->eventObjId = eventObjId;
linkPlayerEventObj->objEventId = objEventId;
linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
eventObj->active = 1;
eventObj->singleMovementActive = a4;
eventObj->range.as_byte = 2;
eventObj->spriteId = 64;
objEvent->active = 1;
objEvent->singleMovementActive = a4;
objEvent->range.as_byte = 2;
objEvent->spriteId = 64;
InitLinkPlayerEventObjectPos(eventObj, x, y);
InitLinkPlayerObjectEventPos(objEvent, x, y);
}
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y)
static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s16 y)
{
eventObj->currentCoords.x = x;
eventObj->currentCoords.y = y;
eventObj->previousCoords.x = x;
eventObj->previousCoords.y = y;
SetSpritePosToMapCoords(x, y, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
eventObj->initialCoords.x += 8;
EventObjectUpdateZCoord(eventObj);
objEvent->currentCoords.x = x;
objEvent->currentCoords.y = y;
objEvent->previousCoords.x = x;
objEvent->previousCoords.y = y;
SetSpritePosToMapCoords(x, y, &objEvent->initialCoords.x, &objEvent->initialCoords.y);
objEvent->initialCoords.x += 8;
ObjectEventUpdateZCoord(objEvent);
}
static void sub_80877DC(u8 linkPlayerId, u8 a2)
{
if (gLinkPlayerEventObjects[linkPlayerId].active)
if (gLinkPlayerObjectEvents[linkPlayerId].active)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
eventObj->range.as_byte = a2;
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
objEvent->range.as_byte = a2;
}
}
static void sub_808780C(u8 linkPlayerId)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
if (eventObj->spriteId != MAX_SPRITES)
DestroySprite(&gSprites[eventObj->spriteId]);
struct LinkPlayerObjectEvent *linkPlayerEventObj = &gLinkPlayerObjectEvents[linkPlayerId];
u8 objEventId = linkPlayerEventObj->objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
if (objEvent->spriteId != MAX_SPRITES)
DestroySprite(&gSprites[objEvent->spriteId]);
linkPlayerEventObj->active = 0;
eventObj->active = 0;
objEvent->active = 0;
}
// Returns the spriteId corresponding to this player.
static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->spriteId;
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
return objEvent->spriteId;
}
static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
*x = eventObj->currentCoords.x;
*y = eventObj->currentCoords.y;
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
*x = objEvent->currentCoords.x;
*y = objEvent->currentCoords.y;
}
static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->range.as_byte;
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
return objEvent->range.as_byte;
}
static u8 GetLinkPlayerElevation(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->currentElevation;
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
return objEvent->currentElevation;
}
static s32 sub_80878E4(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return 16 - (s8)eventObj->directionSequenceIndex;
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
return 16 - (s8)objEvent->directionSequenceIndex;
}
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
@@ -3029,11 +3029,11 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
u8 i;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
if (gLinkPlayerEventObjects[i].active
&& (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
if (gLinkPlayerObjectEvents[i].active
&& (gLinkPlayerObjectEvents[i].movementMode == 0 || gLinkPlayerObjectEvents[i].movementMode == 2))
{
struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
struct ObjectEvent *objEvent = &gObjectEvents[gLinkPlayerObjectEvents[i].objEventId];
if (objEvent->currentCoords.x == x && objEvent->currentCoords.y == y)
return i;
}
}
@@ -3042,23 +3042,23 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
struct LinkPlayerObjectEvent *linkPlayerEventObj = &gLinkPlayerObjectEvents[linkPlayerId];
u8 objEventId = linkPlayerEventObj->objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
if (linkPlayerEventObj->active)
{
if (facing > FACING_FORCED_RIGHT)
{
eventObj->triggerGroundEffectsOnMove = 1;
objEvent->triggerGroundEffectsOnMove = 1;
}
else
{
// This is a hack to split this code onto two separate lines, without declaring a local variable.
// C++ style inline variables would be nice here.
#define TEMP gLinkPlayerMovementModes[linkPlayerEventObj->movementMode](linkPlayerEventObj, eventObj, facing)
#define TEMP gLinkPlayerMovementModes[linkPlayerEventObj->movementMode](linkPlayerEventObj, objEvent, facing)
gMovementStatusHandler[TEMP](linkPlayerEventObj, eventObj);
gMovementStatusHandler[TEMP](linkPlayerEventObj, objEvent);
// Clean up the hack.
#undef TEMP
@@ -3067,67 +3067,67 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing)
}
static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent, u8 a3)
{
return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, objEvent, a3);
}
static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent, u8 a3)
{
return FACING_UP;
}
// Duplicate Function
static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
static u8 MovementEventModeCB_Normal_2(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent, u8 a3)
{
return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, objEvent, a3);
}
static bool8 FacingHandler_DoNothing(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent, u8 a3)
{
return FALSE;
}
static bool8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent, u8 a3)
{
s16 x, y;
eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte);
ObjectEventMoveDestCoords(objEvent, objEvent->range.as_byte, &x, &y);
if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
if (LinkPlayerDetectCollision(linkPlayerEventObj->objEventId, objEvent->range.as_byte, x, y))
{
return FALSE;
}
else
{
eventObj->directionSequenceIndex = 16;
ShiftEventObjectCoords(eventObj, x, y);
EventObjectUpdateZCoord(eventObj);
objEvent->directionSequenceIndex = 16;
ShiftObjectEventCoords(objEvent, x, y);
ObjectEventUpdateZCoord(objEvent);
return TRUE;
}
}
static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent, u8 a3)
{
eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte);
return FALSE;
}
// This is called every time a free movement happens. Most of the time it's a No-Op.
static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent)
{
linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
}
static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent *linkPlayerEventObj, struct ObjectEvent *objEvent)
{
eventObj->directionSequenceIndex--;
objEvent->directionSequenceIndex--;
linkPlayerEventObj->movementMode = MOVEMENT_MODE_FROZEN;
MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
if (!eventObj->directionSequenceIndex)
MoveCoords(objEvent->range.as_byte, &objEvent->initialCoords.x, &objEvent->initialCoords.y);
if (!objEvent->directionSequenceIndex)
{
ShiftStillEventObjectCoords(eventObj);
ShiftStillObjectEventCoords(objEvent);
linkPlayerEventObj->movementMode = MOVEMENT_MODE_SCRIPTED;
}
}
@@ -3162,8 +3162,8 @@ static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
{
if (i != selfEventObjId)
{
if ((gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
|| (gEventObjects[i].previousCoords.x == x && gEventObjects[i].previousCoords.y == y))
if ((gObjectEvents[i].currentCoords.x == x && gObjectEvents[i].currentCoords.y == y)
|| (gObjectEvents[i].previousCoords.x == x && gObjectEvents[i].previousCoords.y == y))
{
return 1;
}
@@ -3174,9 +3174,9 @@ static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
struct LinkPlayerObjectEvent *linkPlayerEventObj = &gLinkPlayerObjectEvents[linkPlayerId];
u8 objEventId = linkPlayerEventObj->objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
struct Sprite *sprite;
if (linkPlayerEventObj->active)
@@ -3185,40 +3185,40 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
{
case VERSION_FIRE_RED:
case VERSION_LEAF_GREEN:
eventObj->spriteId = AddPseudoEventObject(GetFRLGAvatarGraphicsIdByGender(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_RUBY:
case VERSION_SAPPHIRE:
eventObj->spriteId = AddPseudoEventObject(GetRSAvatarGraphicsIdByGender(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_EMERALD:
eventObj->spriteId = AddPseudoEventObject(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
}
sprite = &gSprites[eventObj->spriteId];
sprite = &gSprites[objEvent->spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = linkPlayerId;
eventObj->triggerGroundEffectsOnMove = 0;
objEvent->triggerGroundEffectsOnMove = 0;
}
}
static void SpriteCB_LinkPlayer(struct Sprite *sprite)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[sprite->data[0]];
struct EventObject *eventObj = &gEventObjects[linkPlayerEventObj->eventObjId];
sprite->pos1.x = eventObj->initialCoords.x;
sprite->pos1.y = eventObj->initialCoords.y;
SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
struct LinkPlayerObjectEvent *linkPlayerEventObj = &gLinkPlayerObjectEvents[sprite->data[0]];
struct ObjectEvent *objEvent = &gObjectEvents[linkPlayerEventObj->objEventId];
sprite->pos1.x = objEvent->initialCoords.x;
sprite->pos1.y = objEvent->initialCoords.y;
SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
if (!linkPlayerEventObj->movementMode != MOVEMENT_MODE_FREE)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objEvent->range.as_byte));
else
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(objEvent->range.as_byte));
UpdateEventObjectSpriteVisibility(sprite, 0);
if (eventObj->triggerGroundEffectsOnMove)
UpdateObjectEventSpriteVisibility(sprite, 0);
if (objEvent->triggerGroundEffectsOnMove)
{
sprite->invisible = ((sprite->data[7] & 4) >> 2);
sprite->data[7]++;