Files
tmc/src/npc/goronMerchant.c
T

131 lines
2.7 KiB
C

#include "global.h"
#include "entity.h"
#include "functions.h"
#include "structures.h"
#include "textbox.h"
#include "room.h"
#include "flags.h"
#include "script.h"
extern u32 sub_080696BC(Entity*);
extern void (*const gUnk_08111B88[])(Entity*);
extern void (*const gUnk_08111B98[])(Entity*);
extern u16 gUnk_08111BA0[];
void GoronMerchant(Entity* this) {
if ((this->flags & 2) != 0) {
gUnk_08111B98[this->action](this);
} else {
gUnk_08111B88[this->action](this);
sub_0806ED78(this);
}
}
void sub_08069584(Entity* this) {
if (gScreenTransition.field_0x24[8] != 0) {
this->action = 3;
} else {
this->action = 1;
}
InitAnimationForceUpdate(this, 2);
}
void sub_080695AC(Entity* this) {
s32 iVar2;
if (++this->field_0xf > 0x10) {
this->field_0xf = 0;
iVar2 = sub_0806ED9C(this, 0x28, 0x28);
if (iVar2 > -1) {
this->animationState = iVar2;
}
}
if (this->animIndex != this->animationState) {
InitAnimationForceUpdate(this, this->animationState);
}
}
void sub_080695E8(Entity* this) {
UpdateAnimationSingleFrame(this);
if ((gTextBox.doTextBox & 0x7f) == 0) {
this->action = 1;
this->interactType = gTextBox.doTextBox & 0x7f;
sub_0805E584(this);
InitAnimationForceUpdate(this, this->animationState);
}
}
void sub_0806961C(Entity* this) {
if (gScreenTransition.field_0x24[8] == 2) {
UpdateAnimationSingleFrame(this);
}
sub_0806FD3C(this);
}
void sub_0806963C(Entity* this) {
this->action = 1;
this->spriteSettings.b.draw = TRUE;
sub_0807DD50(this);
}
void sub_08069654(Entity* this) {
sub_0807DD94(this, NULL);
}
void sub_08069660(Entity* this) {
u32 uVar1;
TextboxNoOverlap(0x2c1c, this);
gTextBox.field_0x10 = (u16)sub_080696BC(this);
}
void sub_08069684(void) {
Manager* mgr;
if (FindEntityInListBySubtype(9, 0x31, 8) == NULL) {
mgr = GetEmptyManager();
if (mgr != NULL) {
mgr->type = 9;
mgr->subtype = 0x31;
AppendEntityToList(mgr, 8);
}
}
}
void sub_080696B0(void) {
gRoomVars.itemForSaleIndex = 0;
}
u32 sub_080696BC(Entity* this) {
u32 uVar1;
u32 temp;
u32 iVar3;
s32 temp2;
temp2 = gRoomVars.field_0x7;
if (temp2 > 0x70) {
iVar3 = 1;
} else {
iVar3 = 0;
}
if (temp2 > 0x72) {
iVar3 = 2;
}
temp = CheckGlobalFlag(0x3e);
uVar1 = BOOLCAST(temp);
if (CheckGlobalFlag(0x3f)) {
uVar1 = 2;
}
if (CheckGlobalFlag(0x40)) {
uVar1 = 3;
}
if (CheckGlobalFlag(0x41)) {
uVar1 = 4;
}
return gUnk_08111BA0[uVar1 * 3 + iVar3];
}