summaryrefslogtreecommitdiff
path: root/src/manager/manager27.c
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2020-07-13 15:27:20 -0700
committertheo3 <arisstephenson2@gmail.com>2020-07-13 15:27:20 -0700
commit62ddaaa5f6fe2dc2aaa2dd002d4ce0b1d61a3cc9 (patch)
treed625ad1b183fc6aa5b56c00ce6573ef850679731 /src/manager/manager27.c
parentc47f16e5e7b0abb010133b3ee1a58099d8b8915d (diff)
add subdirs
Diffstat (limited to 'src/manager/manager27.c')
-rw-r--r--src/manager/manager27.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/manager/manager27.c b/src/manager/manager27.c
new file mode 100644
index 00000000..db5bd8b6
--- /dev/null
+++ b/src/manager/manager27.c
@@ -0,0 +1,90 @@
+#include "global.h"
+#include "entity.h"
+#include "flags.h"
+#include "functions.h"
+
+typedef struct {
+ u8 filler[0xAC];
+ u16 unk;
+} struct_030010A0;
+
+extern u32 sub_0805C920(Entity*);
+extern void LoadPalettesByPaletteGroupIndex(u32);
+extern void (*const gUnk_08108D10[])(Entity*);
+
+extern struct_030010A0 gUnk_030010A0;
+extern u8 gUnk_08108D20[];
+
+void Manager27(Entity *this)
+{
+
+ gUnk_08108D10[this->action](this);
+ if (CheckLocalFlagByOffset(0x300, this->entityType.form + 0x67)) {
+ gUnk_030010A0.unk |= (1 << (this->entityType).form);
+ }
+ else {
+ gUnk_030010A0.unk &= ~(1 << (this->entityType).form);
+ }
+}
+
+void sub_0805C874(Entity *this)
+{
+ u8 bVar1;
+
+ if (sub_0805C920(this)) {
+ this->action = 2;
+ }
+ else {
+ this->action = 1;
+ }
+
+ this->actionDelay = 1;
+ this->field_0xf = 0;
+}
+
+void sub_0805C894(Entity *this)
+{
+
+ if (sub_0805C920(this)) {
+ this->action = 2;
+ this->actionDelay = 1;
+ PlaySFX(0x11a);
+ }
+}
+
+void sub_0805C8B4(Entity *this)
+{
+ u8 bVar1;
+ int iVar2;
+
+
+ if (--this->actionDelay == 0) {
+ this->actionDelay = 0x14;
+
+ if (5 < ++this->field_0xf) {
+ this->field_0xf = 0;
+ }
+ LoadPalettesByPaletteGroupIndex(gUnk_08108D20[this->field_0xf]);
+ if (this->field_0xf == 0) {
+ PlaySFX(0x11a);
+ }
+ }
+ if (sub_0805C920(this) == 0) {
+ this->action = 3;
+ }
+}
+
+void sub_0805C908(Entity *this)
+{
+ if (this->field_0xf == 0) {
+ this->action = 1;
+ }
+ else {
+ sub_0805C8B4(this);
+ }
+}
+
+u32 sub_0805C920(Entity *this)
+{
+ return CheckLocalFlagByOffset(0x300, (this->entityType).form + 0x67);
+} \ No newline at end of file