mirror of
https://github.com/zeldaret/ss
synced 2026-06-12 21:44:56 -04:00
review
This commit is contained in:
@@ -12,6 +12,11 @@
|
||||
|
||||
class dAcOpaint_c : public dAcObjBase_c {
|
||||
public:
|
||||
enum Subtype {
|
||||
Batreaux = 0,
|
||||
Groose = 1,
|
||||
};
|
||||
|
||||
dAcOpaint_c() : mStateMgr(*this, sStateID::null) {}
|
||||
virtual ~dAcOpaint_c() {}
|
||||
|
||||
@@ -35,12 +40,12 @@ private:
|
||||
/* 0x568 */ STATE_MGR_DECLARE(dAcOpaint_c);
|
||||
/* 0x5A4 */ mAng mRotationZRelated;
|
||||
/* 0x5A6 */ mAng mRotationZOffset;
|
||||
/* 0x5A8 */ s8 field_0x5A8;
|
||||
/* 0x5A8 */ s8 mPaintingOffsetTimer;
|
||||
/* 0x5A9 */ u8 mSubtype;
|
||||
/* 0x5AA */ bool field_0x5AA;
|
||||
/* 0x5AA */ bool mPaintingSwayed;
|
||||
|
||||
static mAng rotationZRelated0;
|
||||
static mAng rotationZRelated1;
|
||||
static mAng rotationZRelatedBatreaux;
|
||||
static mAng rotationZRelatedGroose;
|
||||
static const f32 lbl_613_rodata_2C;
|
||||
};
|
||||
|
||||
|
||||
@@ -10,15 +10,14 @@
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "nw4r/g3d/res/g3d_resmdl.h"
|
||||
#include "rvl/MTX/mtx.h"
|
||||
#include "toBeSorted/arc_managers/oarc_manager.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(OBJ_PAINT, dAcOpaint_c, fProfile::OBJ_PAINT, 0x163, 0, 0);
|
||||
|
||||
STATE_DEFINE(dAcOpaint_c, Wait);
|
||||
|
||||
mAng dAcOpaint_c::rotationZRelated0 = mAng::d2s(35.0025f);
|
||||
mAng dAcOpaint_c::rotationZRelated1 = mAng::d2s(40.0015f);
|
||||
mAng dAcOpaint_c::rotationZRelatedBatreaux = mAng::d2s(35.0025f);
|
||||
mAng dAcOpaint_c::rotationZRelatedGroose = mAng::d2s(40.0015f);
|
||||
|
||||
bool dAcOpaint_c::createHeap() {
|
||||
const char *oarcName = getOarcName();
|
||||
@@ -36,15 +35,15 @@ bool dAcOpaint_c::createHeap() {
|
||||
|
||||
int dAcOpaint_c::create() {
|
||||
if (getFromParams(0, 3) == 0) {
|
||||
mSubtype = 0;
|
||||
mSubtype = Batreaux;
|
||||
} else {
|
||||
mSubtype = 1;
|
||||
mSubtype = Groose;
|
||||
}
|
||||
dAcObjBase_c::updateMatrix();
|
||||
CREATE_ALLOCATOR(dAcOpaint_c);
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
dBgS::GetInstance()->Regist(&mBgW, this);
|
||||
field_0x5AA = false;
|
||||
mPaintingSwayed = false;
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
@@ -75,19 +74,19 @@ void dAcOpaint_c::executeState_Wait() {
|
||||
mVec3_c deltaPosition = dAcPy_c::GetLink()->mPosition - mPosition;
|
||||
f32 distance = deltaPosition.absXZ();
|
||||
if (1000.f - distance > 0.f) {
|
||||
if (distance < _a + 700.f && !field_0x5AA) {
|
||||
if (mSubtype == 0) {
|
||||
mRotationZRelated = rotationZRelated0;
|
||||
if (distance < _a + 700.f && !mPaintingSwayed) {
|
||||
if (mSubtype == Batreaux) {
|
||||
mRotationZRelated = rotationZRelatedBatreaux;
|
||||
} else {
|
||||
mRotationZRelated = rotationZRelated1;
|
||||
mRotationZRelated = rotationZRelatedGroose;
|
||||
}
|
||||
field_0x5AA = true;
|
||||
mPaintingSwayed = true;
|
||||
startSound(SE_Paint_LOOSE);
|
||||
}
|
||||
field_0x5A8 = 3;
|
||||
mPaintingOffsetTimer = 3;
|
||||
mPosition.y += 10.f;
|
||||
|
||||
if (field_0x5AA) {
|
||||
if (mPaintingSwayed) {
|
||||
mRotationZOffset = mAng(0x100);
|
||||
}
|
||||
}
|
||||
@@ -98,10 +97,10 @@ void dAcOpaint_c::executeState_Wait() {
|
||||
|
||||
mRotation.z = mRotation.z + mRotationZOffset;
|
||||
|
||||
if (field_0x5A8 > 0) {
|
||||
field_0x5A8--;
|
||||
} else if (field_0x5A8 != -1) {
|
||||
field_0x5A8 = 0xFF;
|
||||
if (mPaintingOffsetTimer > 0) {
|
||||
mPaintingOffsetTimer--;
|
||||
} else if (mPaintingOffsetTimer != -1) {
|
||||
mPaintingOffsetTimer = -1;
|
||||
mPosition.y -= 10.f;
|
||||
}
|
||||
}
|
||||
@@ -109,16 +108,20 @@ void dAcOpaint_c::executeState_Wait() {
|
||||
void dAcOpaint_c::finalizeState_Wait() {}
|
||||
|
||||
void dAcOpaint_c::updateMatrix() {
|
||||
PSMTXTrans(mWorldMtx, mPosition.x, mPosition.y, mPosition.z);
|
||||
mWorldMtx.transS(mPosition);
|
||||
mWorldMtx.XrotM(mRotation.x);
|
||||
mWorldMtx.YrotM(mRotation.y);
|
||||
|
||||
mMtx_c mtx;
|
||||
PSMTXTrans(mtx, 100.0f, 100.0f, 0.0f);
|
||||
PSMTXConcat(mWorldMtx, mtx, mWorldMtx);
|
||||
mtx.transS(100.0f, 100.0f, 0.0f);
|
||||
|
||||
mWorldMtx += mtx;
|
||||
mWorldMtx.ZrotM(mRotation.z);
|
||||
|
||||
mMtx_c mtx2;
|
||||
PSMTXTrans(mtx2, -100.0f, -100.0f, 0.0f);
|
||||
PSMTXConcat(mWorldMtx, mtx2, mWorldMtx);
|
||||
mtx2.transS(-100.0f, -100.0f, 0.0f);
|
||||
mWorldMtx += mtx2;
|
||||
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
}
|
||||
|
||||
@@ -130,8 +133,8 @@ const char *dAcOpaint_c::getOarcName() {
|
||||
|
||||
const char *dAcOpaint_c::getModelName() {
|
||||
switch (mSubtype) {
|
||||
case 0: return "PaintA";
|
||||
case 1: return "PaintB";
|
||||
default: return nullptr;
|
||||
case Batreaux: return "PaintA";
|
||||
case Groose: return "PaintB";
|
||||
default: return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user