mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 19:54:21 +01:00
Document the CloseBattlePikeCurtain special
This commit is contained in:
parent
3834cc2957
commit
120e75d275
@ -352,6 +352,7 @@
|
||||
#define METATILE_InsideShip_IntactDoor_Bottom_Interior 0x297
|
||||
|
||||
// gTileset_BattlePike
|
||||
#define METATILE_BattlePike_CurtainFrames_Start 0x201
|
||||
#define METATILE_BattlePike_Curtain_Stage0_Tile0 0x24A
|
||||
#define METATILE_BattlePike_Curtain_Stage0_Tile1 0x251
|
||||
#define METATILE_BattlePike_Curtain_Stage0_Tile2 0x252
|
||||
|
@ -36,6 +36,11 @@ struct Tileset
|
||||
/*0x14*/ TilesetCB callback;
|
||||
};
|
||||
|
||||
// Tilesets do not actually have s strict width.
|
||||
// This constant is simply used for the offset between rows of metatiles for
|
||||
// large tiles, such as the Battle Pike's curtain tile.
|
||||
#define TILESET_WIDTH 8
|
||||
|
||||
struct MapLayout
|
||||
{
|
||||
/*0x00*/ s32 width;
|
||||
|
@ -3931,13 +3931,18 @@ static void Task_LoopWingFlapSE(u8 taskId)
|
||||
#undef playCount
|
||||
#undef delay
|
||||
|
||||
#define CURTAIN_HEIGHT 4
|
||||
#define CURTAIN_WIDTH 3
|
||||
#define tFrameTimer data
|
||||
#define tCurrentFrame data[3]
|
||||
|
||||
void CloseBattlePikeCurtain(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_CloseBattlePikeCurtain, 8);
|
||||
gTasks[taskId].data[0] = 4;
|
||||
gTasks[taskId].data[1] = 4;
|
||||
gTasks[taskId].data[2] = 4;
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].tFrameTimer[0] = 4;
|
||||
gTasks[taskId].tFrameTimer[1] = 4;
|
||||
gTasks[taskId].tFrameTimer[2] = 4;
|
||||
gTasks[taskId].tCurrentFrame = 0;
|
||||
}
|
||||
|
||||
static void Task_CloseBattlePikeCurtain(u8 taskId)
|
||||
@ -3945,19 +3950,21 @@ static void Task_CloseBattlePikeCurtain(u8 taskId)
|
||||
u8 x, y;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
data[data[3]]--;
|
||||
if (data[data[3]] == 0)
|
||||
tFrameTimer[tCurrentFrame]--;
|
||||
if (tFrameTimer[tCurrentFrame] == 0)
|
||||
{
|
||||
for (y = 0; y < 4; y++)
|
||||
for (y = 0; y < CURTAIN_HEIGHT; y++)
|
||||
{
|
||||
for (x = 0; x < 3; x++)
|
||||
for (x = 0; x < CURTAIN_WIDTH; x++)
|
||||
{
|
||||
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + 6, gSaveBlock1Ptr->pos.y + y + 4, x + 513 + y * 8 + data[3] * 32);
|
||||
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + MAP_OFFSET - 1,
|
||||
gSaveBlock1Ptr->pos.y + y + MAP_OFFSET - 3,
|
||||
(x + METATILE_BattlePike_CurtainFrames_Start) + (y * TILESET_WIDTH) + (tCurrentFrame * CURTAIN_HEIGHT * TILESET_WIDTH));
|
||||
}
|
||||
}
|
||||
DrawWholeMapView();
|
||||
data[3]++;
|
||||
if (data[3] == 3)
|
||||
tCurrentFrame++;
|
||||
if (tCurrentFrame == 3)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
@ -3965,6 +3972,11 @@ static void Task_CloseBattlePikeCurtain(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#undef CURTAIN_HEIGHT
|
||||
#undef CURTAIN_WIDTH
|
||||
#undef tFrameTimer
|
||||
#undef tCurrentFrame
|
||||
|
||||
void GetBattlePyramidHint(void)
|
||||
{
|
||||
gSpecialVar_Result = gSpecialVar_0x8004 / 7;
|
||||
|
Loading…
Reference in New Issue
Block a user