Merge branch 'master' of https://github.com/pret/pokeemerald into pretmerge10apr
This commit is contained in:
commit
708bb4a831
@ -209,8 +209,11 @@ struct ObjectEvent
|
||||
/*0x14*/ struct Coords16 previousCoords;
|
||||
/*0x18*/ u16 facingDirection:4; // current direction?
|
||||
u16 movementDirection:4;
|
||||
u16 rangeX:4;
|
||||
u16 rangeY:4;
|
||||
struct __attribute__((packed))
|
||||
{
|
||||
u16 rangeX:4;
|
||||
u16 rangeY:4;
|
||||
} range;
|
||||
/*0x1A*/ u8 fieldEffectSpriteId;
|
||||
/*0x1B*/ u8 warpArrowSpriteId;
|
||||
/*0x1C*/ u8 movementActionId;
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
.equiv NUM_TRACKS_SE3, 1
|
||||
|
||||
.bss
|
||||
.align 2
|
||||
|
||||
gMPlayTrack_BGM::
|
||||
.space TRACK_SIZE * NUM_TRACKS_BGM
|
||||
|
||||
@ -1435,8 +1435,8 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem
|
||||
objectEvent->previousCoords.y = y;
|
||||
objectEvent->currentElevation = template->elevation;
|
||||
objectEvent->previousElevation = template->elevation;
|
||||
objectEvent->rangeX = template->movementRangeX;
|
||||
objectEvent->rangeY = template->movementRangeY;
|
||||
objectEvent->range.rangeX = template->movementRangeX;
|
||||
objectEvent->range.rangeY = template->movementRangeY;
|
||||
objectEvent->trainerType = template->trainerType;
|
||||
objectEvent->mapNum = mapNum;
|
||||
objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
|
||||
@ -1444,10 +1444,10 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem
|
||||
SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection);
|
||||
if (sMovementTypeHasRange[objectEvent->movementType])
|
||||
{
|
||||
if (objectEvent->rangeX == 0)
|
||||
objectEvent->rangeX++;
|
||||
if (objectEvent->rangeY == 0)
|
||||
objectEvent->rangeY++;
|
||||
if (objectEvent->range.rangeX == 0)
|
||||
objectEvent->range.rangeX++;
|
||||
if (objectEvent->range.rangeY == 0)
|
||||
objectEvent->range.rangeY++;
|
||||
}
|
||||
return objectEventId;
|
||||
}
|
||||
@ -6207,18 +6207,18 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
|
||||
s16 top;
|
||||
s16 bottom;
|
||||
|
||||
if (objectEvent->rangeX != 0)
|
||||
if (objectEvent->range.rangeX != 0)
|
||||
{
|
||||
left = objectEvent->initialCoords.x - objectEvent->rangeX;
|
||||
right = objectEvent->initialCoords.x + objectEvent->rangeX;
|
||||
left = objectEvent->initialCoords.x - objectEvent->range.rangeX;
|
||||
right = objectEvent->initialCoords.x + objectEvent->range.rangeX;
|
||||
|
||||
if (left > x || right < x)
|
||||
return TRUE;
|
||||
}
|
||||
if (objectEvent->rangeY != 0)
|
||||
if (objectEvent->range.rangeY != 0)
|
||||
{
|
||||
top = objectEvent->initialCoords.y - objectEvent->rangeY;
|
||||
bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
|
||||
top = objectEvent->initialCoords.y - objectEvent->range.rangeY;
|
||||
bottom = objectEvent->initialCoords.y + objectEvent->range.rangeY;
|
||||
|
||||
if (top > y || bottom < y)
|
||||
return TRUE;
|
||||
|
||||
@ -251,7 +251,7 @@ static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) =
|
||||
[DIR_EAST - 1] = MetatileBehavior_IsEastArrowWarp,
|
||||
};
|
||||
|
||||
static const u8 sRivalAvatarGfxIds[][2] =
|
||||
static const u8 sRivalAvatarGfxIds[][GENDER_COUNT] =
|
||||
{
|
||||
[PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, OBJ_EVENT_GFX_RIVAL_MAY_NORMAL},
|
||||
[PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE},
|
||||
@ -264,7 +264,7 @@ static const u8 sRivalAvatarGfxIds[][2] =
|
||||
[PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE},
|
||||
};
|
||||
|
||||
static const u8 sPlayerAvatarGfxIds[][2] =
|
||||
static const u8 sPlayerAvatarGfxIds[][GENDER_COUNT] =
|
||||
{
|
||||
[PLAYER_AVATAR_STATE_NORMAL] = {OBJ_EVENT_GFX_BRENDAN_NORMAL, OBJ_EVENT_GFX_MAY_NORMAL},
|
||||
[PLAYER_AVATAR_STATE_MACH_BIKE] = {OBJ_EVENT_GFX_BRENDAN_MACH_BIKE, OBJ_EVENT_GFX_MAY_MACH_BIKE},
|
||||
|
||||
@ -124,7 +124,7 @@ void AgbMain()
|
||||
#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT)
|
||||
(void) MgbaOpen();
|
||||
#elif (LOG_HANDLER == LOG_HANDLER_AGB_PRINT)
|
||||
AGBPrintfInit();
|
||||
AGBPrintInit();
|
||||
#endif
|
||||
#endif
|
||||
gAgbMainLoop_sp = __builtin_frame_address(0);
|
||||
|
||||
@ -3014,7 +3014,7 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent)
|
||||
// conflict with the usual Event Object struct, thus the definitions.
|
||||
#define linkGender(obj) obj->singleMovementActive
|
||||
// not even one can reference *byte* aligned bitfield members...
|
||||
#define linkDirection(obj) ((u8 *)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX
|
||||
#define linkDirection(obj) ((u8 *)obj)[offsetof(typeof(*obj), range)] // -> rangeX
|
||||
|
||||
static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender)
|
||||
{
|
||||
|
||||
@ -590,15 +590,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap
|
||||
return 0;
|
||||
}
|
||||
|
||||
rangeX = trainerObj->rangeX;
|
||||
rangeY = trainerObj->rangeY;
|
||||
trainerObj->rangeX = 0;
|
||||
trainerObj->rangeY = 0;
|
||||
rangeX = trainerObj->range.rangeX;
|
||||
rangeY = trainerObj->range.rangeY;
|
||||
trainerObj->range.rangeX = 0;
|
||||
trainerObj->range.rangeY = 0;
|
||||
|
||||
collision = GetCollisionAtCoords(trainerObj, x, y, direction);
|
||||
|
||||
trainerObj->rangeX = rangeX;
|
||||
trainerObj->rangeY = rangeY;
|
||||
trainerObj->range.rangeX = rangeX;
|
||||
trainerObj->range.rangeY = rangeY;
|
||||
if (collision == COLLISION_OBJECT_EVENT)
|
||||
return approachDistance;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user