sub_8091F94

This commit is contained in:
PikalaxALT
2017-09-16 13:54:33 -04:00
parent ee3dc1edda
commit 66fbc9753f
7 changed files with 62 additions and 132 deletions

View File

@@ -10,6 +10,7 @@
#include "berry.h"
#include "palette.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "event_data.h"
#include "rom_818CFC8.h"
#include "rom_81BE66C.h"
@@ -95,12 +96,12 @@ static bool8 FieldObjectDoesZCoordMatch(struct MapObject *, u8);
void npc_reset(struct MapObject *, struct Sprite *);
void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8);
u8 GetFaceDirectionAnimId(u32);
u8 GetGoSpeed0AnimId(u32);
bool8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *);
void SetFieldObjectStepTimer(struct Sprite *, s16);
bool8 RunFieldObjectStepTimer(struct Sprite *);
bool8 npc_block_way__next_tile(struct MapObject *, u8);
u8 GetGoSpeed0AnimId(u8);
u32 state_to_direction(u8, u8, u8);
u32 state_to_direction(u8, u8, u32);
void DoGroundEffects_OnSpawn(struct MapObject *, struct Sprite *);
void sub_80964E8(struct MapObject *, struct Sprite *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
@@ -3176,7 +3177,7 @@ bool8 sub_8091EC0(struct MapObject *mapObject, struct Sprite *sprite)
{
return FALSE;
}
return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), 0);
return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), NULL);
}
bool8 sub_8091F20(struct MapObject *mapObject, struct Sprite *sprite)
@@ -3189,12 +3190,12 @@ bool8 sub_8091F20(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
bool8 sub_8091F48(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, u8 a3)
bool8 sub_8091F48(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
{
return FALSE;
}
bool8 sub_8091F4C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, u8 a3)
bool8 sub_8091F4C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, playerDirection)));
mapObject->mapobj_bit_1 = TRUE;
@@ -3202,6 +3203,42 @@ bool8 sub_8091F4C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
return TRUE;
}
bool8 sub_8091F94(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
{
u32 direction;
s16 x;
s16 y;
direction = playerDirection;
if (FieldObjectIsFarawayIslandMew(mapObject))
{
direction = sub_81D427C();
if (direction == 0)
{
direction = playerDirection;
direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
mapObject->mapobj_bit_1 = TRUE;
sprite->data1 = 2;
return TRUE;
}
}
else
{
direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
}
FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction));
if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
sprite->data1 = 2;
return TRUE;
}
asm(".section .text.get_face_direction_anim_id");
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);