summaryrefslogtreecommitdiff
path: root/src/createObject.c
diff options
context:
space:
mode:
author21aslade <21aslade@go.dsdmail.net>2020-11-07 15:22:02 -0700
committer21aslade <21aslade@go.dsdmail.net>2020-11-07 15:22:02 -0700
commitd04dc143fbbef8feef61daf39d110703f4dfda9b (patch)
tree626b7ee4279b2224aa06bef8231fd6daa4363998 /src/createObject.c
parent4b6f822829d6dd771ed995030f1bf1d24f204536 (diff)
parentf1bfe499de0afdd8e93c5e3e0e6c9e12b3343e1b (diff)
Merge branch 'master' of https://github.com/zeldaret/tmc
Diffstat (limited to 'src/createObject.c')
-rw-r--r--src/createObject.c95
1 files changed, 84 insertions, 11 deletions
diff --git a/src/createObject.c b/src/createObject.c
index 93db1d93..ad852900 100644
--- a/src/createObject.c
+++ b/src/createObject.c
@@ -1,21 +1,94 @@
#include "global.h"
#include "entity.h"
+#include "room.h"
extern Entity* GetEmptyEntity();
extern void AppendEntityToList(Entity*, u8);
-Entity* CreateObject(u32 subtype, u32 param1, u32 param2)
+Entity* CreateObject(u32 subtype, u32 form, u32 parameter) {
+ Entity* ent;
-{
- Entity* newEnt;
+ ent = GetEmptyEntity();
+ if (ent != NULL) {
+ ent->entityType.type = 6;
+ ent->entityType.subtype = subtype;
+ ent->entityType.form = form;
+ ent->entityType.parameter = parameter;
+ AppendEntityToList(ent, 6);
+ }
+ return ent;
+}
+
+Entity* CreateObjectWithParent(Entity* parentEnt, u32 subtype, u32 form, u32 parameter) {
+ Entity* ent;
+
+ ent = CreateObject(subtype, form, parameter);
+ if (ent != NULL) {
+ ent->parent = parentEnt;
+ CopyPosition(parentEnt, ent);
+ }
+
+ return ent;
+}
+
+Entity* CreateFx(Entity* parentEnt, u32 form, u32 parameter) {
+ return CreateObjectWithParent(parentEnt, 0xf, form, parameter);
+}
+
+void CreateDust(Entity* parent) {
+ CreateFx(parent, 2, 0);
+}
+
+void CreateDustAt(s32 xOff, s32 yOff, u32 layer) {
+ Entity* ent;
+
+ ent = CreateObject(0xf, 2, 0);
+ if (ent != NULL) {
+ ent->x.HALF.HI = gRoomControls.roomOriginX + xOff;
+ ent->y.HALF.HI = gRoomControls.roomOriginY + yOff;
+ ent->collisionLayer = layer;
+ }
+}
+
+void CreateDustSmall(Entity* parent) {
+ CreateFx(parent, 0x11, 0);
+}
+
+void CreateExplosionBroken(Entity* parent) {
+ CreateFx(parent, 0x6, 0);
+}
+
+void CreateWaterSplash(Entity* parent) {
+ CreateFx(parent, 0xb, 0);
+}
+
+Entity* sub_080A2A20(Entity* parent, u32 form, u32 parameter) {
+ Entity* ent;
+
+ ent = CreateObjectWithParent(parent, 0, form, parameter);
+ if (ent != NULL) {
+ ent->actionDelay = 5;
+ }
+ return ent;
+}
+
+Entity* sub_080A2A3C(Entity* parent, u32 form, u32 subtype, u32 param_4) {
+ Entity* ent;
+
+ ent = CreateObjectWithParent(parent, 0, form, subtype);
+ if (ent != NULL) {
+ ent->actionDelay = 5;
+ ent->field_0x86.HWORD = param_4;
+ }
+ return ent;
+}
+
+Entity* CreateWaterTrace(Entity* parent) {
+ Entity* ent;
- newEnt = GetEmptyEntity();
- if (newEnt != NULL) {
- (newEnt->entityType).type = 6;
- (newEnt->entityType).subtype = subtype;
- (newEnt->entityType).form = param1;
- (newEnt->entityType).parameter = param2;
- AppendEntityToList(newEnt, 6);
+ ent = CreateFx(parent, 0x20, 0);
+ if (ent != NULL) {
+ ent->spritePriority.b0 = 7;
}
- return newEnt;
+ return ent;
}