2024-01-15 15:57:14 -05:00
|
|
|
#include "Game/Player/Mario.hpp"
|
|
|
|
|
#include "Game/Map/HitInfo.hpp"
|
2024-02-10 09:24:12 -05:00
|
|
|
#include "Game/Player/MarioAbyssDamage.hpp"
|
|
|
|
|
#include "Game/Player/MarioBlown.hpp"
|
|
|
|
|
#include "Game/Player/MarioBump.hpp"
|
|
|
|
|
#include "Game/Player/MarioBury.hpp"
|
|
|
|
|
#include "Game/Player/MarioClimb.hpp"
|
|
|
|
|
#include "Game/Player/MarioCrush.hpp"
|
|
|
|
|
#include "Game/Player/MarioDamage.hpp"
|
|
|
|
|
#include "Game/Player/MarioDarkDamage.hpp"
|
|
|
|
|
#include "Game/Player/MarioFaint.hpp"
|
|
|
|
|
#include "Game/Player/MarioFireDamage.hpp"
|
|
|
|
|
#include "Game/Player/MarioFireDance.hpp"
|
|
|
|
|
#include "Game/Player/MarioFireRun.hpp"
|
|
|
|
|
#include "Game/Player/MarioFlip.hpp"
|
|
|
|
|
#include "Game/Player/MarioFlow.hpp"
|
|
|
|
|
#include "Game/Player/MarioFoo.hpp"
|
|
|
|
|
#include "Game/Player/MarioFpView.hpp"
|
|
|
|
|
#include "Game/Player/MarioFreeze.hpp"
|
|
|
|
|
#include "Game/Player/MarioFrontStep.hpp"
|
|
|
|
|
#include "Game/Player/MarioHang.hpp"
|
|
|
|
|
#include "Game/Player/MarioMagic.hpp"
|
|
|
|
|
#include "Game/Player/MarioMapCode.hpp"
|
|
|
|
|
#include "Game/Player/MarioMove.hpp"
|
|
|
|
|
#include "Game/Player/MarioParalyze.hpp"
|
|
|
|
|
#include "Game/Player/MarioRabbit.hpp"
|
|
|
|
|
#include "Game/Player/MarioRecovery.hpp"
|
|
|
|
|
#include "Game/Player/MarioSideStep.hpp"
|
|
|
|
|
#include "Game/Player/MarioSkate.hpp"
|
|
|
|
|
#include "Game/Player/MarioSlider.hpp"
|
|
|
|
|
#include "Game/Player/MarioStep.hpp"
|
|
|
|
|
#include "Game/Player/MarioStick.hpp"
|
|
|
|
|
#include "Game/Player/MarioStun.hpp"
|
|
|
|
|
#include "Game/Player/MarioSukekiyo.hpp"
|
|
|
|
|
#include "Game/Player/MarioSwim.hpp"
|
|
|
|
|
#include "Game/Player/MarioTalk.hpp"
|
|
|
|
|
#include "Game/Player/MarioTeresa.hpp"
|
|
|
|
|
#include "Game/Player/MarioWait.hpp"
|
|
|
|
|
#include "Game/Player/MarioWall.hpp"
|
|
|
|
|
#include "Game/Player/MarioWarp.hpp"
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
Mario::Mario(MarioActor *actor) : MarioModule(actor)
|
|
|
|
|
{
|
|
|
|
|
initMember();
|
|
|
|
|
_160.zero();
|
|
|
|
|
_13C.zero();
|
|
|
|
|
_148.zero();
|
|
|
|
|
_154.zero();
|
|
|
|
|
_208.setInline(1.0f, 0.0f, 0.0f);
|
|
|
|
|
_220 = _208;
|
|
|
|
|
_43C = _208;
|
|
|
|
|
_214.setInline(1.0f, 0.0f, 0.0f);
|
|
|
|
|
_22C.setInline(1.0f, 0.0f, 0.0f);
|
|
|
|
|
_3E4.setInline(1.0f, 0.0f, 0.0f);
|
|
|
|
|
_2B4 = 0.0f;
|
|
|
|
|
_310.setInline(0.0f, 0.0f, 1.0f);
|
|
|
|
|
_290 = _310;
|
|
|
|
|
_1D8.setInline(0.0f, -1.0f, 0.0f);
|
|
|
|
|
_1E4.zero();
|
|
|
|
|
bool nearZero = MR::isNearZero(_1D8, 0.0010000000475f);
|
|
|
|
|
_1F0 = -_1D8;
|
|
|
|
|
_1FC = _1F0;
|
|
|
|
|
_938 = _1F0;
|
|
|
|
|
_944 = _208;
|
|
|
|
|
_950 = _310;
|
|
|
|
|
_60D = 0;
|
|
|
|
|
_71C = 0;
|
|
|
|
|
_278 = 0.0f;
|
|
|
|
|
_2D0 = 0.0f;
|
|
|
|
|
_2D4.zero();
|
|
|
|
|
_2E0.zero();
|
|
|
|
|
_2EC.zero();
|
|
|
|
|
_42C = 0;
|
|
|
|
|
_2F8.zero();
|
|
|
|
|
_328.zero();
|
|
|
|
|
_334.zero();
|
|
|
|
|
_488 = 0.0f;
|
|
|
|
|
_430 = 0;
|
|
|
|
|
_3BC = 0;
|
|
|
|
|
_3BE = 0;
|
|
|
|
|
_3C0 = 0;
|
|
|
|
|
_3CE = 0;
|
|
|
|
|
_3CC = 0;
|
|
|
|
|
_3CA = 0;
|
|
|
|
|
_3D0 = 0;
|
|
|
|
|
_3D4 = 0;
|
|
|
|
|
_424 = 0;
|
|
|
|
|
_434 = 0;
|
|
|
|
|
_436 = 0;
|
|
|
|
|
_428 = 0;
|
|
|
|
|
_3D2 = 0;
|
|
|
|
|
_404 = 0;
|
|
|
|
|
_406 = 0;
|
|
|
|
|
_408 = 0;
|
|
|
|
|
_40A = 0;
|
|
|
|
|
_426 = 0;
|
|
|
|
|
_418 = 0;
|
|
|
|
|
_41A = 0;
|
|
|
|
|
_774 = 0;
|
|
|
|
|
_3C2 = 0;
|
|
|
|
|
_3C4 = 0;
|
|
|
|
|
_3C6 = 0;
|
|
|
|
|
_3C8 = 0;
|
|
|
|
|
_7D0 = 0x78;
|
|
|
|
|
_524 = 0.0f;
|
|
|
|
|
_528 = 0.0f;
|
|
|
|
|
_52C = 0.0f;
|
|
|
|
|
_530 = 0.0f;
|
|
|
|
|
_534 = 0;
|
|
|
|
|
_538 = 0.0f;
|
|
|
|
|
_53C = 0.0f;
|
|
|
|
|
_544 = 0;
|
|
|
|
|
_540 = 0.0f;
|
|
|
|
|
_3F8 = 0;
|
|
|
|
|
_3FA = 0;
|
|
|
|
|
_3FC = 0;
|
|
|
|
|
_3FE = 0;
|
|
|
|
|
_400 = 0;
|
|
|
|
|
_402 = 0;
|
|
|
|
|
_27C = 0.0f;
|
|
|
|
|
_734 = 0;
|
|
|
|
|
_735 = 0;
|
|
|
|
|
_748 = 0;
|
|
|
|
|
_71E = 0;
|
|
|
|
|
_414 = 0;
|
|
|
|
|
_416 = 0;
|
|
|
|
|
_41C = 0;
|
|
|
|
|
_41E = 0;
|
|
|
|
|
_410 = 0;
|
|
|
|
|
_420 = 0;
|
|
|
|
|
_43A = 0;
|
|
|
|
|
_3F4 = 0.0f;
|
|
|
|
|
_3F0 = 1.0f;
|
|
|
|
|
_58.zero();
|
|
|
|
|
_12C = 0;
|
|
|
|
|
_76C = 0;
|
|
|
|
|
_770 = 0.0f;
|
|
|
|
|
_738 = 0.0f;
|
|
|
|
|
_73C = 0.0f;
|
|
|
|
|
_740 = 1.0f;
|
|
|
|
|
_744 = 0.0f;
|
|
|
|
|
_368.setInline(0.0f, 1.0f, 0.0f);
|
|
|
|
|
_374 = -_368;
|
|
|
|
|
_380 = _368;
|
|
|
|
|
_38C = -_368;
|
|
|
|
|
_398.setInline(0.0f, 1.0f, 0.0f);
|
|
|
|
|
_344.setInline(1.0f, 0.0f, 0.0f);
|
|
|
|
|
_74C = 0f;
|
|
|
|
|
_750 = 0;
|
|
|
|
|
_754 = 0;
|
|
|
|
|
_40C = 0;
|
|
|
|
|
_40E = 0;
|
|
|
|
|
_412 = 0;
|
|
|
|
|
_558 = 0;
|
|
|
|
|
_2A8 = -_368;
|
|
|
|
|
_29C = _368;
|
|
|
|
|
_548 = _128 = _124 = 0.0f;
|
|
|
|
|
_54C = _1F0;
|
|
|
|
|
_C4.identity();
|
|
|
|
|
_64.identity();
|
|
|
|
|
_94.identity();
|
|
|
|
|
clearSlope();
|
|
|
|
|
_910.zero();
|
|
|
|
|
_91C.zero();
|
|
|
|
|
_928.zero();
|
|
|
|
|
_934 = 0.8f;
|
|
|
|
|
_3C = 0.001f;
|
|
|
|
|
mMovementStates_LOW_WORD = 0;
|
|
|
|
|
mMovementStates_HIGH_WORD = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
_10_LOW_WORD = 0;
|
2024-02-10 09:24:12 -05:00
|
|
|
_10_HIGH_WORD = 0;
|
|
|
|
|
mDrawStates_WORD = 0;
|
|
|
|
|
_1C_WORD = 0;
|
|
|
|
|
_20 = 0;
|
|
|
|
|
_24 = 0;
|
|
|
|
|
_28 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_458 = TriangleFilterDelegator<Mario>::allocateDelegator(this, &Mario::isIgnoreTriangle);
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_45C = new Triangle();
|
|
|
|
|
_460 = new Triangle();
|
|
|
|
|
_464 = new Triangle();
|
|
|
|
|
_468 = new Triangle();
|
|
|
|
|
_46C = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_4C8 = new Triangle();
|
|
|
|
|
_4CC = new Triangle();
|
|
|
|
|
_4D0 = new Triangle();
|
|
|
|
|
_4D4 = new Triangle();
|
|
|
|
|
_4D8 = new Triangle();
|
|
|
|
|
_4DC = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_470 = new Triangle();
|
|
|
|
|
_474 = new Triangle();
|
|
|
|
|
_478 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_7E0 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_820 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_47C = new Triangle();
|
|
|
|
|
_480 = new Triangle();
|
|
|
|
|
_484 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
for (unsigned int i = 0; i < 0x20; i++) {
|
|
|
|
|
_57C[i] = new Triangle();
|
|
|
|
|
}
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_578 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_4E8.zero();
|
|
|
|
|
_4F4.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_7D4.zero();
|
|
|
|
|
_8A4.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_8C8 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_8E8 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_8CC = new Triangle();
|
|
|
|
|
_8D0 = new Triangle();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_564 = -1;
|
|
|
|
|
_568 = 0;
|
|
|
|
|
_56C = 0;
|
|
|
|
|
_570 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
for (unsigned int i = 0; i < 9; i++) {
|
|
|
|
|
_A8C[i].zero();
|
|
|
|
|
}
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_4A4.zero();
|
|
|
|
|
_4B0.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_25C.zero();
|
|
|
|
|
_268.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_350.zero();
|
|
|
|
|
_35C.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_184.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_1A8.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_190.zero();
|
|
|
|
|
_19C.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_4E4 = 0.0f;
|
|
|
|
|
_4E0 = 0.0f;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_72C = 200.0f;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_730 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_8D8 = 0;
|
|
|
|
|
_8D4 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_A38 = 0;
|
|
|
|
|
_A68 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_5FC = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_1CC.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_38 = 0.0f;
|
|
|
|
|
_1C0.z = 0.0f;
|
|
|
|
|
_1C0.y = 0.0f;
|
|
|
|
|
_1C0.x = 0.0f;
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_3D8.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_244.zero();
|
|
|
|
|
_238.zero();
|
|
|
|
|
_250.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
clear2DStick();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_6AC = 0;
|
|
|
|
|
_6AD = 0;
|
|
|
|
|
_6B0.zero();
|
|
|
|
|
_6BC.zero();
|
2024-01-15 15:57:14 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
_63C.setInline(1.0f, 0.0f, 0.0f);
|
|
|
|
|
_648.setInline(0.0f, 1.0f, 0.0f);
|
|
|
|
|
_654.setInline(0.0f, 0.0f, 1.0f);
|
|
|
|
|
_6A0 = _654;
|
|
|
|
|
|
|
|
|
|
initSound();
|
|
|
|
|
|
|
|
|
|
_97C = 0;
|
|
|
|
|
|
|
|
|
|
mFlow = new MarioFlow(mActor);
|
|
|
|
|
mWall = new MarioWall(mActor);
|
|
|
|
|
mDamage = new MarioDamage(mActor);
|
2024-01-15 15:57:14 -05:00
|
|
|
mFaint = new MarioFaint(mActor);
|
|
|
|
|
mBlown = new MarioBlown(mActor);
|
|
|
|
|
mHang = new MarioHang(mActor);
|
|
|
|
|
mSwim = new MarioSwim(mActor);
|
|
|
|
|
mSlider = new MarioSlider(mActor);
|
|
|
|
|
mFireDamage = new MarioFireDamage(mActor);
|
|
|
|
|
mFireRun = new MarioFireRun(mActor);
|
|
|
|
|
mFireDance = new MarioFireDance(mActor);
|
|
|
|
|
mAbyssDamage = new MarioAbyssDamage(mActor);
|
|
|
|
|
mDarkDamage = new MarioDarkDamage(mActor);
|
|
|
|
|
mStep = new MarioStep(mActor);
|
|
|
|
|
mBump = new MarioBump(mActor);
|
|
|
|
|
mParalyze = new MarioParalyze(mActor);
|
|
|
|
|
mStun = new MarioStun(mActor);
|
|
|
|
|
mCrush = new MarioCrush(mActor);
|
|
|
|
|
mFreeze = new MarioFreeze(mActor);
|
|
|
|
|
mMagic = new MarioMagic(mActor);
|
|
|
|
|
mFpView = new MarioFpView(mActor);
|
|
|
|
|
mRecovery = new MarioRecovery(mActor);
|
|
|
|
|
mFlip = new MarioFlip(mActor);
|
|
|
|
|
mSideStep = new MarioSideStep(mActor);
|
|
|
|
|
mFrontStep = new MarioFrontStep(mActor);
|
|
|
|
|
mStick = new MarioStick(mActor);
|
|
|
|
|
mRabbit = new MarioRabbit(mActor);
|
|
|
|
|
mSukekiyo = new MarioSukekiyo(mActor);
|
|
|
|
|
mBury = new MarioBury(mActor);
|
|
|
|
|
mWait = new MarioWait(mActor);
|
|
|
|
|
mClimb = new MarioClimb(mActor);
|
|
|
|
|
mSkate = new MarioSkate(mActor);
|
|
|
|
|
mFoo = new MarioFoo(mActor);
|
|
|
|
|
mWarp = new MarioWarp(mActor);
|
|
|
|
|
mTeresa = new MarioTeresa(mActor);
|
|
|
|
|
mTalk = new MarioTalk(mActor);
|
|
|
|
|
mMove = new MarioMove(mActor);
|
|
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
initTask();
|
|
|
|
|
_95C = new FloorCode();
|
|
|
|
|
_960 = 0;
|
|
|
|
|
_962 = 0;
|
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
|
|
|
_964[i] = _960;
|
|
|
|
|
}
|
|
|
|
|
_96A = 0;
|
|
|
|
|
_574 = 0;
|
|
|
|
|
_898 = 0;
|
2024-01-15 15:57:14 -05:00
|
|
|
}
|
2024-02-10 07:10:25 -05:00
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
void Mario::setFrontVecKeepUp(const TVec3f &v)
|
|
|
|
|
{
|
2024-02-10 07:10:25 -05:00
|
|
|
TVec3f stack_38(_208);
|
2024-02-10 09:24:12 -05:00
|
|
|
if (!MR::isNearZero(v, 0.001f)) {
|
|
|
|
|
setFrontVec(v);
|
|
|
|
|
}
|
2024-02-10 07:10:25 -05:00
|
|
|
TVec3f stack_2C;
|
|
|
|
|
PSVECCrossProduct(_1F0.toCVec(), _208.toCVec(), stack_2C.toVec());
|
|
|
|
|
|
2024-02-10 09:24:12 -05:00
|
|
|
if (MR::isNearZero(stack_2C, 0.001f)) {
|
2024-02-10 07:10:25 -05:00
|
|
|
TVec3f stack_20;
|
|
|
|
|
MR::vecBlendSphere(stack_38, v, &stack_20, 0.5f);
|
|
|
|
|
PSVECCrossProduct(_1F0.toCVec(), stack_20.toCVec(), stack_2C.toVec());
|
|
|
|
|
setFrontVec(stack_20);
|
2024-02-10 09:24:12 -05:00
|
|
|
if (MR::isNearZero(stack_2C, 0.001f)) {
|
2024-02-10 07:10:25 -05:00
|
|
|
setFrontVecKeepSide(v);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
MR::normalize(&stack_2C);
|
|
|
|
|
_310 = stack_2C;
|
|
|
|
|
MR::normalize(&_310);
|
|
|
|
|
TVec3f stack_14;
|
|
|
|
|
PSVECCrossProduct(_310.toCVec(), _1F0.toCVec(), stack_14.toVec());
|
|
|
|
|
setFrontVec(stack_14);
|
|
|
|
|
_22C = _208;
|
|
|
|
|
_328 = _208 % PSVECMag(_328.toCVec());
|
|
|
|
|
_344 = _310;
|
|
|
|
|
}
|