Skip to content

Commit

Permalink
Some Bouncy Bar documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
JaceCear committed Jul 21, 2024
1 parent 1627a59 commit d8adbcc
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions src/game/interactables/bouncy_bar.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,16 @@ typedef struct {
/* 0x38 */ Player *activePlayer;
} BouncyBar; /* size: 0x3C */

void sub_8034698(Sprite *, u8);
void Task_BouncyBarIdle(void);
void Task_BouncyBarLaunch(void);
void TaskDestructor_BouncyBar(struct Task *);
void sub_80345EC(void);
static void InitSprite(Sprite *, u8);
static void Task_BouncyBarIdle(void);
static void Task_BouncyBarLaunch(void);
static void TaskDestructor_BouncyBar(struct Task *);
static void UpdateSprite(void);

extern u8 gUnknown_080CF584[11];

#define LAUNCH_SPEED Q(7.5)

void CreateEntity_BouncyBar(MapEntity *me, u16 regionX, u16 regionY, u8 id)
{
struct Task *t = TaskCreate(Task_BouncyBarIdle, sizeof(BouncyBar), 0x2100, 0, TaskDestructor_BouncyBar);
Expand All @@ -54,10 +56,10 @@ void CreateEntity_BouncyBar(MapEntity *me, u16 regionX, u16 regionY, u8 id)

SET_MAP_ENTITY_INITIALIZED(me);

sub_8034698(s, bar->unk34);
InitSprite(s, bar->unk34);
}

void Task_BouncyBarIdle(void)
static void Task_BouncyBarIdle(void)
{
BouncyBar *bar = TASK_DATA(gCurTask);
Sprite *s = &bar->s;
Expand Down Expand Up @@ -124,11 +126,11 @@ void Task_BouncyBarIdle(void)
}
}

sub_80345EC();
UpdateSprite();
}
}

void Task_BouncyBarLaunch(void)
static void Task_BouncyBarLaunch(void)
{
BouncyBar *bar;
MapEntity *me;
Expand All @@ -142,7 +144,7 @@ void Task_BouncyBarLaunch(void)
me = bar->base.me;
activePlayer = bar->activePlayer;

sub_80345EC();
UpdateSprite();

if ((activePlayer->callback != Player_800EAA8) || sub_802C0D4(activePlayer)) {
bar->unk35 = 0;
Expand All @@ -167,13 +169,13 @@ void Task_BouncyBarLaunch(void)

SetPlayerCallback(activePlayer, (void *)Player_8006DB8);
activePlayer->qSpeedAirX = 0;
activePlayer->qSpeedAirY = -Q(7.5);
activePlayer->qSpeedAirY = -LAUNCH_SPEED;
bar->unk35 = 0;
gCurTask->main = Task_BouncyBarIdle;
}
}

void sub_80345EC(void)
static void UpdateSprite(void)
{
BouncyBar *bar = TASK_DATA(gCurTask);
Sprite *s = &bar->s;
Expand All @@ -190,21 +192,22 @@ void sub_80345EC(void)
} else {
s->x = worldX - gCamera.x;
s->y = worldY - gCamera.y;
if ((!(u16)UpdateSpriteAnimation(s)) && (s->variant == 1)) {

if (((u16)UpdateSpriteAnimation(s) == ACMD_RESULT__ENDED) && (s->variant == 1)) {
s->variant = 0;
}

DisplaySprite(s);
}
}

void TaskDestructor_BouncyBar(struct Task *t)
static void TaskDestructor_BouncyBar(struct Task *t)
{
BouncyBar *bar = TASK_DATA(t);
VramFree(bar->s.tiles);
}

void sub_8034698(Sprite *s, u8 param1)
static void InitSprite(Sprite *s, u8 param1)
{
s->tiles = ALLOC_TILES(ANIM_BOUNCY_BAR);
s->anim = ANIM_BOUNCY_BAR;
Expand Down

0 comments on commit d8adbcc

Please sign in to comment.