Merge pull request #1737 from GriffinRichards/lock-unlock

Clean up lock/unlock anim movement
This commit is contained in:
GriffinR
2022-08-22 01:30:33 -04:00
committed by GitHub
7 changed files with 37 additions and 37 deletions

View File

@@ -8746,13 +8746,13 @@ static void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *
FieldEffectStart(FLDEFF_RIPPLE);
}
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_StoreAndLockAnim_Step0,
u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_LockAnim_Step0,
MovementAction_Finish,
};
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_FreeAndUnlockAnim_Step0,
u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_UnlockAnim_Step0,
MovementAction_Finish,
};
@@ -8768,36 +8768,36 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
MovementAction_Fly_Finish,
};
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 MovementAction_LockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore = FALSE;
if (sLockedAnimObjectEvents == NULL)
{
sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
sLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->localIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->count = 1;
ableToStore = TRUE;
}
else
{
u8 i;
u8 firstFreeSlot;
bool32 found;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
u8 firstFreeSlot = OBJECT_EVENTS_COUNT;
bool32 found = FALSE;
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (firstFreeSlot == 16 && sLockedAnimObjectEvents->objectEventIds[i] == 0)
if (firstFreeSlot == OBJECT_EVENTS_COUNT && sLockedAnimObjectEvents->localIds[i] == 0)
firstFreeSlot = i;
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
{
found = TRUE;
break;
}
}
if (!found && firstFreeSlot != 16)
if (!found && firstFreeSlot != OBJECT_EVENTS_COUNT)
{
sLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->localIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->count++;
ableToStore = TRUE;
}
@@ -8813,7 +8813,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
return TRUE;
}
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore;
u8 index;
@@ -8823,9 +8823,9 @@ u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struc
{
ableToStore = FALSE;
index = FindLockedObjectEventIndex(objectEvent);
if (index != 16)
if (index != OBJECT_EVENTS_COUNT)
{
sLockedAnimObjectEvents->objectEventIds[index] = 0;
sLockedAnimObjectEvents->localIds[index] = 0;
sLockedAnimObjectEvents->count--;
ableToStore = TRUE;
}
@@ -8848,7 +8848,7 @@ u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
return i;
}
return OBJECT_EVENTS_COUNT;