ActorRefill OK

This commit is contained in:
Aetias
2025-05-29 08:51:28 +02:00
parent 0b6e5d042b
commit 2c27f6cb3d
9 changed files with 61 additions and 74 deletions
+5 -6
View File
@@ -5,7 +5,6 @@
#include "System/Random.hpp"
extern "C" {
void func_ov000_0207a1c8(bool *param_1, unk32 param_2, Vec3p *param_3);
void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool);
void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7,
char param_8, char param_9, char param_10);
@@ -71,9 +70,9 @@ bool ActorRupee::vfunc_08() {
func_ov14_0213b204(0);
break;
case 1:
q20 x = gRandom->Next(FLOAT_TO_Q20(0.1335));
q20 y = gRandom->Next(FLOAT_TO_Q20(0.2));
q20 z = gRandom->Next(FLOAT_TO_Q20(0.1335));
q20 x = gRandom.Next(FLOAT_TO_Q20(0.1335));
q20 y = gRandom.Next(FLOAT_TO_Q20(0.2));
q20 z = gRandom.Next(FLOAT_TO_Q20(0.1335));
mVel.x = x - FLOAT_TO_Q20(0.0666);
mVel.y = y + FLOAT_TO_Q20(0.3333);
@@ -263,14 +262,14 @@ void ActorRupee::vfunc_14(u32 param1) {
if (func_ov00_020c313c(param1)) {
Update(false);
}
func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos);
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
}
void ActorRupee::vfunc_18(u32 param1) {
if (func_ov00_020c313c(param1)) {
Update(true);
}
func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos);
mUnk_0a4.func_ov000_0207a1c8(param1, &mPos);
}
#define VFUNC20_COND (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00)
+17 -31
View File
@@ -134,16 +134,11 @@ ARM void ActorRefill::vfunc_14(u32 param1) {
}
break;
case 2:
#define ROTATE_RIGHT(x, n) ((x >> n) | (x << (32 - n)))
temp_r0_4 = mActiveFrames;
temp_r1 = (u32) temp_r0_4 >> 31;
if ((temp_r1 + ROTATE_RIGHT((temp_r0_4 << 29) - temp_r1, 29)) < 4) {
var_r0 = 0;
if (mActiveFrames % 8 < 4) {
mUnk_164 = 0;
} else {
var_r0 = 31;
mUnk_164 = 31;
}
mUnk_164 = var_r0;
if (this->func_ov00_020c2c0c()) {
this->func_ov014_02135364(4);
} else if (this->func_ov00_020c2d54()) {
@@ -209,17 +204,17 @@ ARM void ActorRefill::vfunc_20(bool param1) {
sp18.mUnk_18 = 0x1000;
sp18.mUnk_02 = mUnk_164;
func_0202bc38(param1, &mPos, mUnk_15c, &sp18, 0);
func_ov005_02102c2c(&data_ov000_020e9370[0], 0, &mPos, 0x400, 0, mUnk_164, 0, 0, 1, 0);
func_ov005_02102c2c(&data_ov000_020e9370[0], 0, &mPos, 0x400, 0x400, 0, mUnk_164, 0, 0, 1);
}
}
extern unk32 data_027e0e58;
extern unk32 *data_027e0e58;
extern "C" void func_ov000_0207c1b0(unk32 *param1, unk32 param2, Vec3p *param3, unk32 param4, unk32 param5, unk32 param6);
ARM void ActorRefill::func_ov014_02135474() {
s32 iVar1 = mUnk_130;
if (iVar1 != 4 && iVar1 != 5) {
func_ov000_0207c1b0(&data_027e0e58, 0x241, &mPos, 2, 0, 0);
func_ov000_0207c1b0(&data_027e0e58, 0x242, &mPos, 2, 0, 0);
func_ov000_0207c1b0(data_027e0e58, 0x241, &mPos, 2, 0, 0);
func_ov000_0207c1b0(data_027e0e58, 0x242, &mPos, 2, 0, 0);
mAlive = false;
}
}
@@ -269,7 +264,6 @@ ARM ActorRefillTime::ActorRefillTime() :
ARM ActorRefillTime::~ActorRefillTime() {}
ARM bool ActorRefillTime::vfunc_08() {
if (!ActorRefill::vfunc_08()) {
return false;
}
@@ -281,7 +275,7 @@ ARM bool ActorRefillTime::vfunc_08() {
case 0:
case 1:
case 3:
s32 temp_ip = gRandom->Next(10);
s32 temp_ip = gRandom.Next(10);
if (temp_ip >= 9) {
mUnk_158 = 30;
} else if (temp_ip >= 6) {
@@ -291,14 +285,10 @@ ARM bool ActorRefillTime::vfunc_08() {
}
break;
}
if (mUnk_158 != -0x1E) {
if (mUnk_158 == -0xF) {
mUnk_15c = 0x48;
} else {
mUnk_15c = 0x47;
}
} else {
mUnk_15c = 0x49;
switch (mUnk_158) {
case 15: mUnk_15c = 0x45; break;
case 30: mUnk_15c = 0x46; break;
default: mUnk_15c = 0x44; break;
}
return true;
}
@@ -327,7 +317,7 @@ ARM bool ActorLSTM::vfunc_08() {
case 0:
case 1:
case 3:
s32 temp_ip = gRandom->Next(10);
s32 temp_ip = gRandom.Next(10);
if (temp_ip >= 9) {
mUnk_158 = -30;
} else if (temp_ip >= 6) {
@@ -337,14 +327,10 @@ ARM bool ActorLSTM::vfunc_08() {
}
break;
}
if (mUnk_158 != -0x1E) {
if (mUnk_158 == -0xF) {
mUnk_15c = 0x48;
} else {
mUnk_15c = 0x47;
}
} else {
mUnk_15c = 0x49;
switch (mUnk_158) {
case -15: mUnk_15c = 0x48; break;
case -30: mUnk_15c = 0x49; break;
default: mUnk_15c = 0x47; break;
}
return true;
}