4#include "message_ids.h"
131 popup->data.icons =
nullptr;
143 if (
popup->data.icons !=
nullptr) {
146 popup->active =
false;
155 if (
popup->active &&
popup->updateFunc !=
nullptr) {
166 if (
popup->active &&
popup->renderWorldFunc !=
nullptr) {
177 if (
popup->active &&
popup->renderUIFunc !=
nullptr) {
188 if (!
popup->active) {
198 if (
popup->data.icons !=
nullptr) {
200 popup->data.icons =
nullptr;
202 popup->active =
false;
208 if (
popup !=
nullptr) {
211 popup->needsInit =
true;
213 popup->renderWorldFunc =
nullptr;
214 popup->messageIndex = messageIndex;
215 popup->duration = duration;
225 switch (
popup->showMsgState) {
236 if (
popup->duration != 0) {
265 if (
popup->messageIndex < 0)
return;
289 switch (
popup->messageIndex) {
291 if (
popup->needsInit) {
295 xPos = 160 - (width / 2);
303 if (
popup->needsInit) {
304 popup->needsInit =
false;
307 xPos = 160 - (width / 2);
320 if (
popup->needsInit) {
324 xPos = 160 - (width / 2);
340 if (
popup !=
nullptr) {
343 popup->renderWorldFunc =
nullptr;
360 if (
icon->flags == 0) {
365 switch (
icon->status1.active) {
399 switch (
icon->status1.removingTask) {
403 switch (
icon->status1.removing) {
433 icon->status1.frameCounter = 10;
438 if (
icon->status1.frameCounter != 0) {
439 icon->status1.frameCounter--;
441 icon->status1.removing = 0;
449 switch (
icon->status2.active) {
463 switch (
icon->status2.removingTask) {
467 switch (
icon->status2.removing) {
476 icon->status2.frameCounter = 20;
480 if (
icon->status2.frameCounter != 0) {
481 icon->status2.frameCounter--;
483 icon->status2.removing = 0;
491 switch (
icon->status3.active) {
505 switch (
icon->status3.removingTask) {
509 switch (
icon->status3.removing) {
518 icon->status3.frameCounter = 20;
522 if (
icon->status3.frameCounter != 0) {
523 icon->status3.frameCounter--;
525 icon->status3.removing = 0;
539 switch (
icon->status4.removingTask) {
544 icon->status4.frameCounter = 20;
548 if (
icon->status4.frameCounter != 0) {
549 icon->status4.frameCounter--;
551 icon->status4.removing = 0;
558 if (
icon->boostJump.removing) {
559 if (
icon->boostJump.removing == 1) {
560 s32 index =
icon->prevIndexBoostJump;
564 icon->boostJump.removing = 0;
569 if (
icon->boostHammer.removing) {
570 if (
icon->boostHammer.removing == 1) {
571 s32 index =
icon->prevIndexBoostHammer;
575 icon->boostHammer.removing = 0;
607 if (
icon->flags == 0) {
619 x =
icon->worldPos.x;
620 y =
icon->worldPos.y +
icon->status1OffsetY;
621 z =
icon->worldPos.z;
642 x =
icon->worldPos.x;
643 y =
icon->worldPos.y +
icon->status1OffsetY;
644 z =
icon->worldPos.z;
665 x =
icon->worldPos.x;
666 y =
icon->worldPos.y +
icon->status2OffsetY + offsetY;
667 z =
icon->worldPos.z;
693 x =
icon->worldPos.x;
694 y =
icon->worldPos.y +
icon->status2OffsetY + offsetY;
695 z =
icon->worldPos.z;
718 x =
icon->worldPos.x;
719 y =
icon->worldPos.y +
icon->status3OffsetY + offsetY;
720 z =
icon->worldPos.z;
748 x =
icon->worldPos.x;
749 y =
icon->worldPos.y +
icon->status3OffsetY + offsetY;
750 z =
icon->worldPos.z;
777 x =
icon->worldPos.x;
778 y =
icon->worldPos.y +
icon->status4OffsetY + offsetY;
779 z =
icon->worldPos.z;
810 x =
icon->worldPos.x;
811 y =
icon->worldPos.y +
icon->status4OffsetY + offsetY;
812 z =
icon->worldPos.z;
822 if (
icon->boostJump.active) {
828 x =
icon->worldPos.x;
829 z =
icon->worldPos.z;
839 if (
icon->boostJump.removing) {
842 x =
icon->worldPos.x;
843 z =
icon->worldPos.z;
852 if (
icon->boostHammer.active) {
858 x =
icon->worldPos.x;
859 z =
icon->worldPos.z;
869 if (
icon->boostHammer.removing) {
872 x =
icon->worldPos.x;
873 z =
icon->worldPos.z;
882 if (
icon->boostPartner.active) {
888 x =
icon->worldPos.x;
889 z =
icon->worldPos.z;
900 if (
icon->surprise.active) {
906 x =
icon->worldPos.x;
907 z =
icon->worldPos.z;
918 if (
icon->peril.active) {
924 x =
icon->worldPos.x;
925 z =
icon->worldPos.z;
936 if (
icon->danger.active) {
942 x =
icon->worldPos.x;
943 z =
icon->worldPos.z;
960 if (
icon->flags == 0) {
973 icon->worldPos.x = 0;
974 icon->worldPos.y = 0;
975 icon->worldPos.z = 0;
977 icon->status1Radius = 0;
978 icon->status1OffsetY = 0;
979 icon->status2Radius = 0;
980 icon->status2OffsetY = 0;
981 icon->status3Radius = 0;
982 icon->status3OffsetY = 0;
983 icon->status4Radius = 0;
984 icon->status4OffsetY = 0;
985 icon->status1.active = 0;
986 icon->status1.removing = 0;
987 icon->status1.activeTask = 0;
988 icon->status1.removingTask = 0;
989 icon->status2.active = 0;
990 icon->status2.removing = 0;
991 icon->status2.activeTask = 0;
992 icon->status2.removingTask = 0;
993 icon->status3.active = 0;
994 icon->status3.removing = 0;
995 icon->status3.activeTask = 0;
996 icon->status3.removingTask = 0;
997 icon->status4.active = 0;
998 icon->status4.removing = 0;
999 icon->status4.activeTask = 0;
1000 icon->status4.removingTask = 0;
1001 icon->boostJump.active = 0;
1002 icon->boostJump.removing = 0;
1003 icon->boostHammer.active = 0;
1004 icon->boostHammer.removing = 0;
1005 icon->boostPartner.active = 0;
1006 icon->surprise.active = 0;
1007 icon->peril.active = 0;
1008 icon->danger.active = 0;
1033 icon->worldPos.y = y;
1034 icon->worldPos.z = z;
1035 icon->status1Radius = radius + 17;
1036 icon->status1OffsetY = offsetY;
1037 icon->status2Radius = radius + 17;
1038 icon->status2OffsetY = offsetY + 17;
1039 icon->status3Radius = radius + 17;
1040 icon->status3OffsetY = offsetY + 34;
1041 icon->status4Radius = radius + 17;
1042 icon->status4OffsetY = offsetY + 51;
BSS s32 PopupMenu_SelectedIndex
PopupMessageCallback updateFunc
PopupMessageCallback renderUIFunc
PopupMessageCallback renderWorldFunc
#define general_heap_malloc
#define ASSERT(condition)
@ BTL_MSG_STATE_POPUP_DISPOSE
@ BTL_MSG_STATE_POPUP_POST_DELAY
@ BTL_MSG_STATE_POPUP_PRE_DELAY
@ BTL_MSG_STATE_POPUP_DELAY
void get_screen_coords(s32 camID, f32 x, f32 y, f32 z, s32 *screenX, s32 *screenY, s32 *screenZ)
void set_window_update(s32 panelID, s32)
s32 create_worker_scene(void(*updateFunc)(void), void(*renderFunc)(void))
void set_window_properties(s32 panelID, s32 posX, s32 posY, s32 width, s32 height, u8, void *drawContents, void *drawContentsArg, s8 parent)
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
s32 get_msg_lines(s32 messageID)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_draw_next(s32 id)
HudElemID hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
HudElement * get_hud_element(s32 id)
void hud_element_set_flags(s32 id, s32 flags)
Turns on the given flags.
void hud_element_clear_flags(s32 id, s32 flags)
Turns off the given flags.
void hud_element_free(s32 id)
@ HUD_ELEMENT_FLAG_DISABLED
@ HUD_ELEMENT_FLAG_MANUAL_RENDER
@ HUD_ELEMENT_FLAG_ANIMATION_FINISHED
void set_status_icons_offset(s32 iconID, s32 offsetY, s32 offsetX)
void draw_merlee_message(void *popup)
PopupMessage * get_current_merlee_message(void)
HudSimpleStatusIcon boostPartner
void remove_status_icon_surprise(s32 iconID)
HudComplexStatusIcon status2
void remove_status_debuff(s32 iconID)
HudSimpleStatusIcon boostJump
HudElemID removingElementHID
s32 is_merlee_message_done(void)
void draw_merlee_message_string(PopupMessage *popup, s32 posX, s32 posY)
void remove_status_icon_boost_jump(s32 iconID)
void remove_status_icon_boost_partner(s32 iconID)
void update_merlee_message(void *popup)
HudComplexStatusIcon status4
void remove_status_transparent(s32 iconID)
void create_status_transparent(s32 iconID, s32 statusID)
void enable_status_icon_boost_hammer(s32 iconID)
void enable_status_transparent(s32 iconID)
HudSimpleStatusIcon surprise
HudScript HES_WeakenedEnd
const f32 status_icons_rodata_alignment
void enable_status_debuff(s32 iconID)
s32 create_status_icon_set(void)
void create_status_static(s32 iconID, s32 statusID)
void update_all_status_icons(void *popup)
void remove_status_static(s32 iconID)
HudScript HES_WeakenedBegin
@ STATUS_ICON_FLAG_SURPRISE
@ STATUS_ICON_FLAG_STATIC
@ STATUS_ICON_FLAG_STATUS_CHILL_OUT
@ STATUS_ICON_FLAG_BOOST_PARTNER
@ STATUS_ICON_FLAG_DEBUFF
@ STATUS_ICON_FLAG_BATTLE
@ STATUS_ICON_FLAG_BOOST_HAMMER
@ STATUS_ICON_FLAG_TRANSPARENT
@ STATUS_ICON_FLAG_DANGER
@ STATUS_ICON_FLAG_BOOST_JUMP
HudScript HES_TransparentEnd
HudScript HES_ElectrifiedBegin
HudScript HES_PoisonedEnd
HudScript HES_PoisonedBegin
BSS PopupMessage D_800A0BC0[32]
void remove_status_icon_peril(s32 iconID)
void create_status_icon_surprise(s32 iconID)
void enable_status_chill_out(s32 iconID)
void remove_status_chill_out(s32 iconID)
void enable_status_icon_boost_partner(s32 iconID)
void enable_status_icon_boost_jump(s32 iconID)
HudScript HES_BoostHammerBegin
HudScript HES_Item_KeyGift
HudElemID activeElementHID
void create_status_icon_boost_jump(s32 iconID)
void show_merlee_message(s16 messageIndex, s16 duration)
HudScript HES_ParalyzedEnd
void enable_status_static(s32 iconID)
HudScript HES_StoppedBegin
void remove_status_icon_boost_hammer(s32 iconID)
HudScript HES_ShrunkBegin
HudScript HES_BoostPartner
void draw_merlee_messages(void)
void create_status_debuff(s32 iconID, s32 statusID)
HudSimpleStatusIcon danger
void set_status_icons_properties(s32 iconID, f32 x, f32 y, f32 z, s32 arg, s32 arg2, s32 radius, s32 offsetY)
void draw_all_status_icons(void *popup)
HudSimpleStatusIcon peril
HudScript HES_ParalyzedBegin
void create_status_icon_boost_hammer(s32 iconID)
HudScript HES_AsleepBegin
void update_merlee_messages(void)
void enable_status_icon_peril(s32 iconID)
HudScript HES_BoostJumpEnd
HudScript HES_TransparentBegin
void enable_status_icon_surprise(s32 iconID)
BSS HudStatusIcon * D_800A0F44
HudSimpleStatusIcon boostHammer
HudComplexStatusIcon status1
HudScript HES_BoostJumpBegin
void remove_all_status_icons(s32 iconID)
void init_all_status_icons(void)
void create_status_icon_peril(s32 iconID)
HudScript HES_BoostHammerEnd
void create_status_icon_danger(s32 iconID)
void create_status_chill_out(s32 iconID)
void remove_status_icon_danger(s32 iconID)
void enable_status_icon_danger(s32 iconID)
HudComplexStatusIcon status3
HudScript HES_FrozenBegin
void dispose_merlee_message(PopupMessage *popup)
HudScript HES_WeakenedLoop
void create_status_icon_boost_partner(s32 iconID)
HudScript HES_ElectrifiedEnd
GameStatus * gGameStatusPtr