mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-22 02:15:28 -05:00
Add wander around slower movement type (#9164)
This commit is contained in:
parent
63f5617c29
commit
9f1cdbdcaa
|
|
@ -1,8 +1,6 @@
|
|||
#ifndef GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
|
||||
#define GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
|
||||
|
||||
#define MOVEMENT_TYPE_WANDER_AROUND_SLOWER MOVEMENT_TYPE_WANDER_AROUND
|
||||
|
||||
|
||||
#define MOVEMENT_TYPE_NONE 0x0
|
||||
#define MOVEMENT_TYPE_LOOK_AROUND 0x1
|
||||
|
|
@ -86,7 +84,8 @@
|
|||
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x4F
|
||||
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x50
|
||||
#define MOVEMENT_TYPE_FOLLOW_PLAYER 0x51
|
||||
#define NUM_MOVEMENT_TYPES 0x52
|
||||
#define MOVEMENT_TYPE_WANDER_AROUND_SLOWER 0x52
|
||||
#define NUM_MOVEMENT_TYPES 0x53
|
||||
|
||||
#define MOVEMENT_ACTION_FACE_DOWN 0x0
|
||||
#define MOVEMENT_ACTION_FACE_UP 0x1
|
||||
|
|
|
|||
|
|
@ -270,6 +270,7 @@ void CopyObjectGraphicsInfoToSpriteTemplate(u16 graphicsId, void (*callback)(str
|
|||
void MovementType_None(struct Sprite *sprite);
|
||||
void MovementType_LookAround(struct Sprite *sprite);
|
||||
void MovementType_WanderAround(struct Sprite *sprite);
|
||||
void MovementType_WanderAroundSlower(struct Sprite *sprite);
|
||||
void MovementType_WanderUpAndDown(struct Sprite *sprite);
|
||||
void MovementType_WanderLeftAndRight(struct Sprite *sprite);
|
||||
void MovementType_FaceDirection(struct Sprite *sprite);
|
||||
|
|
@ -335,6 +336,7 @@ u8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sprit
|
|||
u8 MovementType_Wander_Step3(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
u8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
u8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
u8 MovementType_WanderAround_Step5Slower(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
u8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite);
|
||||
enum Direction GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
enum Direction GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,16 @@ u8 (*const gMovementTypeFuncs_WanderAround[])(struct ObjectEvent *, struct Sprit
|
|||
MovementType_WanderAround_Step6,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WanderAroundSlower[])(struct ObjectEvent *, struct Sprite *) = {
|
||||
MovementType_WanderAround_Step0,
|
||||
MovementType_WanderAround_Step1,
|
||||
MovementType_WanderAround_Step2,
|
||||
MovementType_Wander_Step3,
|
||||
MovementType_WanderAround_Step4,
|
||||
MovementType_WanderAround_Step5Slower,
|
||||
MovementType_WanderAround_Step6,
|
||||
};
|
||||
|
||||
const enum Direction gStandardDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST};
|
||||
|
||||
enum Direction (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = {
|
||||
|
|
|
|||
|
|
@ -266,6 +266,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) =
|
|||
[MOVEMENT_TYPE_NONE] = MovementType_None,
|
||||
[MOVEMENT_TYPE_LOOK_AROUND] = MovementType_LookAround,
|
||||
[MOVEMENT_TYPE_WANDER_AROUND] = MovementType_WanderAround,
|
||||
[MOVEMENT_TYPE_WANDER_AROUND_SLOWER] = MovementType_WanderAroundSlower,
|
||||
[MOVEMENT_TYPE_WANDER_UP_AND_DOWN] = MovementType_WanderUpAndDown,
|
||||
[MOVEMENT_TYPE_WANDER_DOWN_AND_UP] = MovementType_WanderUpAndDown,
|
||||
[MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT] = MovementType_WanderLeftAndRight,
|
||||
|
|
@ -3874,6 +3875,7 @@ u16 GetObjectPaletteTag(u8 palSlot)
|
|||
|
||||
movement_type_empty_callback(MovementType_None)
|
||||
movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround)
|
||||
movement_type_def(MovementType_WanderAroundSlower, gMovementTypeFuncs_WanderAroundSlower)
|
||||
|
||||
bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
|
|
@ -3938,6 +3940,14 @@ bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sp
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 MovementType_WanderAround_Step5Slower(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(objectEvent->movementDirection));
|
||||
objectEvent->singleMovementActive = TRUE;
|
||||
sprite->data[1] = 6;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user