mirror of
https://github.com/zeldaret/tmc
synced 2026-05-24 23:22:08 -04:00
87 lines
2.1 KiB
C
87 lines
2.1 KiB
C
/**
|
|
* @file object5B.c
|
|
* @ingroup Objects
|
|
*
|
|
* @brief Object5B object
|
|
*/
|
|
|
|
#define NENT_DEPRECATED
|
|
#include "global.h"
|
|
#include "object.h"
|
|
#include "functions.h"
|
|
|
|
typedef struct {
|
|
/*0x00*/ Entity base;
|
|
/*0x68*/ u8 unk_68[0x1a];
|
|
/*0x82*/ u16 unk_82;
|
|
/*0x84*/ ScriptExecutionContext* unk_84;
|
|
} Object5BEntity;
|
|
|
|
void sub_080928C8(Object5BEntity*);
|
|
void nullsub_119(Object5BEntity*);
|
|
void sub_08092930(Object5BEntity*);
|
|
void sub_08092940(Object5BEntity*);
|
|
void sub_08092958(Object5BEntity*, ScriptExecutionContext*);
|
|
|
|
void Object5B(Object5BEntity* this) {
|
|
static void (*const gUnk_08122794[])(Object5BEntity*) = {
|
|
sub_080928C8,
|
|
nullsub_119,
|
|
};
|
|
static void (*const gUnk_0812279C[])(Object5BEntity*) = {
|
|
sub_08092930,
|
|
sub_08092940,
|
|
};
|
|
if ((super->flags & 2) != 0) {
|
|
gUnk_0812279C[super->action](this);
|
|
} else {
|
|
gUnk_08122794[super->action](this);
|
|
}
|
|
}
|
|
|
|
void sub_080928C8(Object5BEntity* this) {
|
|
super->action = 1;
|
|
super->spriteSettings.draw = 1;
|
|
super->frameIndex = super->type;
|
|
super->spriteRendering.b3 = 3;
|
|
super->spritePriority.b0 = 6;
|
|
super->spriteOrientation.flipY = 2;
|
|
switch (super->type) {
|
|
case 2:
|
|
CreateObjectWithParent(super, OBJECT_5B, 4, 0);
|
|
break;
|
|
case 4:
|
|
super->spritePriority.b0 = 7;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void nullsub_119(Object5BEntity* this) {
|
|
}
|
|
|
|
void sub_08092930(Object5BEntity* this) {
|
|
sub_080928C8(this);
|
|
this->unk_82 = 0;
|
|
}
|
|
|
|
void sub_08092940(Object5BEntity* this) {
|
|
ExecuteScript(super, this->unk_84);
|
|
sub_08092958(this, this->unk_84);
|
|
}
|
|
|
|
void sub_08092958(Object5BEntity* this, ScriptExecutionContext* context) {
|
|
u32 tmp;
|
|
while (context->postScriptActions != 0) {
|
|
tmp = (~context->postScriptActions + 1) & context->postScriptActions;
|
|
context->postScriptActions = context->postScriptActions ^ tmp;
|
|
switch (tmp) {
|
|
case 1:
|
|
super->frameIndex = 0;
|
|
break;
|
|
case 2:
|
|
super->frameIndex = context->intVariable;
|
|
break;
|
|
}
|
|
}
|
|
}
|