mirror of
https://github.com/zeldaret/tmc
synced 2026-08-18 13:43:31 -04:00
Rename objects
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
/**
|
||||
* @file dirtParticle.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Dirt Particle object
|
||||
*/
|
||||
#define NENT_DEPRECATED
|
||||
#include "functions.h"
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[0x18];
|
||||
/*0x80*/ u32 unk_80;
|
||||
/*0x84*/ u32 unk_84;
|
||||
} DirtParticleEntity;
|
||||
|
||||
void DirtParticle_Init(DirtParticleEntity*);
|
||||
void DirtParticle_Action1(DirtParticleEntity*);
|
||||
void DirtParticle_Action3(DirtParticleEntity*);
|
||||
void sub_08087B88(DirtParticleEntity*);
|
||||
void sub_08087B9C(DirtParticleEntity*);
|
||||
void sub_08087B9C(DirtParticleEntity*);
|
||||
|
||||
void DirtParticle(DirtParticleEntity* this) {
|
||||
static void (*const DirtParticle_Actions[])(DirtParticleEntity*) = {
|
||||
DirtParticle_Init,
|
||||
DirtParticle_Action1,
|
||||
NULL,
|
||||
DirtParticle_Action3,
|
||||
};
|
||||
DirtParticle_Actions[super->action](this);
|
||||
GetNextFrame(super);
|
||||
if (super->timer != 0) {
|
||||
super->timer--;
|
||||
} else {
|
||||
if (super->animIndex == 0xa) {
|
||||
InitializeAnimation(super, 0xd);
|
||||
} else if ((super->frame & ANIM_DONE) != 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
if (super->speed != 0) {
|
||||
LinearMoveUpdate(super);
|
||||
if (super->speed > 0x10) {
|
||||
super->speed -= 0x10;
|
||||
} else {
|
||||
super->speed = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern const Hitbox gUnk_08120A8C;
|
||||
|
||||
void DirtParticle_Init(DirtParticleEntity* this) {
|
||||
static const u8 gUnk_08120A78[] = {
|
||||
3,
|
||||
63,
|
||||
};
|
||||
static const u8 gUnk_08120A7A[] = {
|
||||
15, 24, 30, 35, 0, 0,
|
||||
};
|
||||
u32 rand;
|
||||
u32 tmp;
|
||||
super->action = 1;
|
||||
if (super->type2 != 0) {
|
||||
ChangeObjPalette(super, 3);
|
||||
}
|
||||
if (super->type > 2) {
|
||||
ChangeObjPalette(super, gUnk_08120A78[super->type - 3]);
|
||||
}
|
||||
switch (super->type) {
|
||||
case 4:
|
||||
super->collisionLayer = 2;
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
case 0:
|
||||
case 3:
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->health = 1;
|
||||
super->collisionFlags = 7;
|
||||
super->hitType = 0xaa;
|
||||
super->flags2 = 0x0e;
|
||||
super->hitbox = (Hitbox*)&gUnk_08120A8C;
|
||||
super->gustJarFlags = 0;
|
||||
case 2:
|
||||
rand = Random();
|
||||
super->timer = gUnk_08120A7A[rand & 3];
|
||||
tmp = (rand >> 8) & 3;
|
||||
if ((rand & 0x10) != 0) {
|
||||
tmp = -tmp;
|
||||
}
|
||||
super->x.HALF.HI += tmp;
|
||||
super->y.HALF.HI += tmp;
|
||||
super->collisionLayer = gPlayerEntity.collisionLayer;
|
||||
InitializeAnimation(super, 10);
|
||||
return;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
InitializeAnimation(super, 0x10);
|
||||
}
|
||||
|
||||
void DirtParticle_Action1(DirtParticleEntity* this) {
|
||||
DirtParticleEntity* entity;
|
||||
if ((super->contactFlags & 0x80) == 0) {
|
||||
return;
|
||||
}
|
||||
switch (super->contactFlags & 0x7f) {
|
||||
case 0x16:
|
||||
super->direction = GetFacingDirection(super->contactedEntity, super);
|
||||
super->speed = 0x100;
|
||||
break;
|
||||
case 0x13:
|
||||
super->action = 3;
|
||||
super->subAction = 0;
|
||||
break;
|
||||
case 0x1b:
|
||||
case 0x1c:
|
||||
entity = (DirtParticleEntity*)super->contactedEntity;
|
||||
super->direction = CalculateDirectionTo(entity->unk_84, entity->unk_80, super->x.WORD, super->y.WORD);
|
||||
super->speed = 0x100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void DirtParticle_Action3(DirtParticleEntity* this) {
|
||||
static void (*const gUnk_08120A80[])(DirtParticleEntity*) = {
|
||||
sub_08087B88,
|
||||
sub_08087B9C,
|
||||
sub_08087B9C,
|
||||
};
|
||||
if ((super->contactFlags & 0x80) != 0) {
|
||||
gUnk_08120A80[super->subAction](this);
|
||||
} else {
|
||||
super->action = 1;
|
||||
}
|
||||
}
|
||||
|
||||
const Hitbox gUnk_08120A8C = { 0, 0, { 6, 3, 3, 6 }, 3, 3 };
|
||||
|
||||
void sub_08087B88(DirtParticleEntity* this) {
|
||||
super->knockbackSpeed = 0x100;
|
||||
super->subAction = 1;
|
||||
super->gustJarTolerance = 1;
|
||||
}
|
||||
|
||||
void sub_08087B9C(DirtParticleEntity* this) {
|
||||
if (sub_0806F3E4(super)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user