mirror of
https://github.com/projectPiki/pikmin2.git
synced 2024-11-23 13:29:55 +00:00
Misc progress and fixes
This commit is contained in:
parent
f1299c411c
commit
275dcab114
@ -124,9 +124,9 @@
|
||||
| File | Size (bytes) | File | Size (bytes) |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/bomb.cpp">bomb.cpp</a> | 12903 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/tamagoMushiMgr.cpp">tamagoMushiMgr.cpp</a> | 13197 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/hurryUp2D.cpp">hurryUp2D.cpp</a> | 26921 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/panModokiState.cpp">panModokiState.cpp</a> | 27115 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/dayEndCount.cpp">dayEndCount.cpp</a> | 39857 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/miulin.cpp">miulin.cpp</a> | 40256 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/scrollList.cpp">scrollList.cpp</a> | 41187 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/jigumoState.cpp">jigumoState.cpp</a> | 44498 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/hurryUp2D.cpp">hurryUp2D.cpp</a> | 26921 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/panModokiState.cpp">panModokiState.cpp</a> | 27075 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/jigumoState.cpp">jigumoState.cpp</a> | 39381 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/dayEndCount.cpp">dayEndCount.cpp</a> | 39857 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/miulin.cpp">miulin.cpp</a> | 40256 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/scrollList.cpp">scrollList.cpp</a> | 41187 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/kingChappyState.cpp">kingChappyState.cpp</a> | 59593 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/tamagoMushi.cpp">tamagoMushi.cpp</a> | 72662 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/tyre.cpp">tyre.cpp</a> | 83627 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/kingChappy.cpp">kingChappy.cpp</a> | 86600 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/umiMushi.cpp">umiMushi.cpp</a> | 97877 |
|
||||
@ -137,21 +137,21 @@
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/nslibmath.cpp">nslibmath.cpp</a> | 4592 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Tadpole.cpp">Tadpole.cpp</a> | 6758 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TyreShadow.cpp">TyreShadow.cpp</a> | 7234 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MaroFrog.cpp">MaroFrog.cpp</a> | 7517 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UmimushiShadow.cpp">UmimushiShadow.cpp</a> | 7565 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ContRumble.cpp">ContRumble.cpp</a> | 9005 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeJointMgr.cpp">SnakeJointMgr.cpp</a> | 10097 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BabyState.cpp">BabyState.cpp</a> | 12965 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeJointMgr.cpp">SnakeJointMgr.cpp</a> | 10097 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BabyState.cpp">BabyState.cpp</a> | 12955 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Tank.cpp">Tank.cpp</a> | 13328 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/JointShadowBase.cpp">JointShadowBase.cpp</a> | 14958 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecBugState.cpp">ElecBugState.cpp</a> | 15381 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Kogane.cpp">Kogane.cpp</a> | 15652 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Kogane.cpp">Kogane.cpp</a> | 15652 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecBugState.cpp">ElecBugState.cpp</a> | 15737 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapMgr.cpp">RandMapMgr.cpp</a> | 17083 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TadpoleState.cpp">TadpoleState.cpp</a> | 17799 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/OtakaraBase.cpp">OtakaraBase.cpp</a> | 18394 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/FuefukiState.cpp">FuefukiState.cpp</a> | 19023 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/OtakaraBase.cpp">OtakaraBase.cpp</a> | 18394 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/FuefukiState.cpp">FuefukiState.cpp</a> | 19013 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWholeShadow.cpp">SnakeWholeShadow.cpp</a> | 19376 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrowShadow.cpp">SnakeCrowShadow.cpp</a> | 19385 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ImomushiState.cpp">ImomushiState.cpp</a> | 19911 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjiaState.cpp">UjiaState.cpp</a> | 20959 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ImomushiState.cpp">ImomushiState.cpp</a> | 19911 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjiaState.cpp">UjiaState.cpp</a> | 20954 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RumbleMgr.cpp">RumbleMgr.cpp</a> | 21534 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Rock.cpp">Rock.cpp</a> | 21766 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecHiba.cpp">ElecHiba.cpp</a> | 21900 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/QueenState.cpp">QueenState.cpp</a> | 22549 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecBug.cpp">ElecBug.cpp</a> | 24345 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ArmorState.cpp">ArmorState.cpp</a> | 24720 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SaraiState.cpp">SaraiState.cpp</a> | 24929 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TobiState.cpp">TobiState.cpp</a> | 24992 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjibState.cpp">UjibState.cpp</a> | 25560 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Armor.cpp">Armor.cpp</a> | 28880 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TankState.cpp">TankState.cpp</a> | 29299 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandItemUnit.cpp">RandItemUnit.cpp</a> | 29622 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemBase.cpp">IKSystemBase.cpp</a> | 30077 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/FrogState.cpp">FrogState.cpp</a> | 30933 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BigTreasureShadow.cpp">BigTreasureShadow.cpp</a> | 32591 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MarState.cpp">MarState.cpp</a> | 33440 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecHiba.cpp">ElecHiba.cpp</a> | 21900 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Frog.cpp">Frog.cpp</a> | 22143 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/QueenState.cpp">QueenState.cpp</a> | 22549 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecBug.cpp">ElecBug.cpp</a> | 24345 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ArmorState.cpp">ArmorState.cpp</a> | 24720 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SaraiState.cpp">SaraiState.cpp</a> | 24929 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TobiState.cpp">TobiState.cpp</a> | 24992 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjibState.cpp">UjibState.cpp</a> | 25555 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Armor.cpp">Armor.cpp</a> | 28880 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TankState.cpp">TankState.cpp</a> | 29299 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandItemUnit.cpp">RandItemUnit.cpp</a> | 29622 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemBase.cpp">IKSystemBase.cpp</a> | 30077 |
|
||||
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/FrogState.cpp">FrogState.cpp</a> | 30933 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BigTreasureShadow.cpp">BigTreasureShadow.cpp</a> | 32591 |
|
||||
|
||||
### <section id="plugProjectOgawaU">plugProjectOgawaU</section>
|
||||
| File | Size (bytes) | File | Size (bytes) |
|
||||
|
@ -500,6 +500,69 @@ struct EnemyBase : public Creature, public SysShape::MotionListener, virtual pub
|
||||
sep.y = mPosition.z - point.z;
|
||||
}
|
||||
|
||||
inline f32 getCreatureViewAngle(Creature* target)
|
||||
{
|
||||
Vector3f targetPos = target->getPosition();
|
||||
Vector3f pos = getPosition();
|
||||
f32 ang = _angXZ(targetPos.x, targetPos.z, pos.x, pos.z);
|
||||
return angDist(ang, getFaceDir());
|
||||
}
|
||||
|
||||
inline f32 getCreatureViewAngle(Vector3f& targetPos)
|
||||
{
|
||||
Vector3f pos = getPosition();
|
||||
f32 ang = _angXZ(targetPos.x, targetPos.z, pos.x, pos.z);
|
||||
return angDist(ang, getFaceDir());
|
||||
}
|
||||
|
||||
// this seems necessary and correct based on BombSarai::Obj::throwBomb
|
||||
inline void updateFaceDir(f32 angle)
|
||||
{
|
||||
mFaceDir = angle;
|
||||
mRotation.y = mFaceDir;
|
||||
}
|
||||
|
||||
inline f32 turnToTarget(Creature* target, f32 turnFactor, f32 maxTurnSpeed)
|
||||
{
|
||||
f32 angleDist = getAngDist(target);
|
||||
f32 turnSpeed = angleDist * turnFactor;
|
||||
f32 limit = PI * (DEG2RAD * maxTurnSpeed);
|
||||
if (FABS(turnSpeed) > limit) {
|
||||
turnSpeed = (turnSpeed > 0.0f) ? limit : -limit;
|
||||
}
|
||||
|
||||
updateFaceDir(roundAng(turnSpeed + getFaceDir()));
|
||||
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
inline f32 turnToTarget(Vector3f& targetPos, f32 turnFactor, f32 maxTurnSpeed)
|
||||
{
|
||||
f32 angleDist = getAngDist(targetPos);
|
||||
f32 turnSpeed = angleDist * turnFactor;
|
||||
f32 limit = PI * (DEG2RAD * maxTurnSpeed);
|
||||
if (FABS(turnSpeed) > limit) {
|
||||
turnSpeed = (turnSpeed > 0.0f) ? limit : -limit;
|
||||
}
|
||||
|
||||
updateFaceDir(roundAng(turnSpeed + getFaceDir()));
|
||||
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
inline bool checkDistAndAngle(Creature* target, f32 angle, f32 distRange, f32 angRange)
|
||||
{
|
||||
bool result = false;
|
||||
Vector3f sep;
|
||||
sep.x = target->getPosition().x - getPosition().x;
|
||||
sep.y = target->getPosition().y - getPosition().y;
|
||||
sep.z = target->getPosition().z - getPosition().z;
|
||||
if ((sep.sqrMagnitude() < SQUARE(distRange)) && FABS(angle) <= PI * (DEG2RAD * angRange)) {
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
inline f32 changeFaceDir(Vector3f& XYZ)
|
||||
{
|
||||
f32 approxSpeed;
|
||||
@ -584,118 +647,8 @@ struct EnemyBase : public Creature, public SysShape::MotionListener, virtual pub
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
inline f32 turnToTarget(Vector3f& XZ, f32 angLimit, f32 scale)
|
||||
{
|
||||
Vector3f pos = getPosition();
|
||||
Vector3f targetPos = XZ;
|
||||
|
||||
f32 angleDist = angDist(_angXZ(targetPos.x, targetPos.z, pos.x, pos.z), getFaceDir());
|
||||
angleDist *= scale;
|
||||
f32 limit = angLimit;
|
||||
if (FABS(angleDist) > limit) {
|
||||
angleDist = (angleDist > 0.0f) ? limit : -limit;
|
||||
}
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
inline f32 turnToTarget2(Vector3f& XZ, f32 scale, f32 angLimit)
|
||||
{
|
||||
Vector3f pos = getPosition();
|
||||
Vector3f targetPos = XZ;
|
||||
|
||||
f32 angleDist = angDist(angXZ(targetPos.x, targetPos.z, pos), getFaceDir());
|
||||
f32 approxSpeed = angleDist * scale;
|
||||
f32 limit = (DEG2RAD * angLimit) * PI;
|
||||
if (FABS(approxSpeed) > limit) {
|
||||
approxSpeed = boundVal(approxSpeed, limit);
|
||||
}
|
||||
|
||||
mFaceDir = roundAng(approxSpeed + getFaceDir());
|
||||
mRotation.y = mFaceDir;
|
||||
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
// this seems necessary and correct based on BombSarai::Obj::throwBomb
|
||||
inline void updateFaceDir(f32 angle)
|
||||
{
|
||||
mFaceDir = angle;
|
||||
mRotation.y = mFaceDir;
|
||||
}
|
||||
|
||||
inline f32 turnToTargetNishi(Creature* target, f32 turnFactor, f32 maxTurnSpeed)
|
||||
{
|
||||
f32 angleDist = getAngDist(target);
|
||||
f32 turnSpeed = angleDist * turnFactor;
|
||||
f32 limit = PI * (DEG2RAD * maxTurnSpeed);
|
||||
if (FABS(turnSpeed) > limit) {
|
||||
turnSpeed = (turnSpeed > 0.0f) ? limit : -limit;
|
||||
}
|
||||
|
||||
updateFaceDir(roundAng(turnSpeed + getFaceDir()));
|
||||
|
||||
return angleDist;
|
||||
}
|
||||
inline f32 turnToTargetNishi(Vector3f& targetPos, f32 turnFactor, f32 maxTurnSpeed)
|
||||
{
|
||||
f32 angleDist = getAngDist(targetPos);
|
||||
f32 turnSpeed = angleDist * turnFactor;
|
||||
f32 limit = PI * (DEG2RAD * maxTurnSpeed);
|
||||
if (FABS(turnSpeed) > limit) {
|
||||
turnSpeed = (turnSpeed > 0.0f) ? limit : -limit;
|
||||
}
|
||||
|
||||
updateFaceDir(roundAng(turnSpeed + getFaceDir()));
|
||||
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
inline void forceMovePosition(Vector3f offset) { mPosition += offset; }
|
||||
|
||||
inline f32 turnToTargetMori(Vector3f& targetPos, f32 turnFactor, f32 maxTurnSpeed)
|
||||
{
|
||||
Vector3f pos = getPosition();
|
||||
|
||||
f32 angleDist = angDist(angXZ(targetPos.x, targetPos.z, pos), getFaceDir());
|
||||
f32 turnSpeed = angleDist * turnFactor;
|
||||
f32 limit = PI * (DEG2RAD * maxTurnSpeed);
|
||||
if (FABS(turnSpeed) > limit) {
|
||||
turnSpeed = (turnSpeed > 0.0f) ? limit : -limit;
|
||||
}
|
||||
|
||||
updateFaceDir(roundAng(turnSpeed + getFaceDir()));
|
||||
|
||||
return angleDist;
|
||||
}
|
||||
|
||||
inline bool checkDistAndAngle(Creature* target, f32 angle, f32 distRange, f32 angRange)
|
||||
{
|
||||
bool result = false;
|
||||
Vector3f sep;
|
||||
sep.x = target->getPosition().x - getPosition().x;
|
||||
sep.y = target->getPosition().y - getPosition().y;
|
||||
sep.z = target->getPosition().z - getPosition().z;
|
||||
if ((sep.sqrMagnitude() < SQUARE(distRange)) && FABS(angle) <= PI * (DEG2RAD * angRange)) {
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
inline f32 getCreatureViewAngle(Creature* target)
|
||||
{
|
||||
Vector3f targetPos = target->getPosition();
|
||||
Vector3f pos = getPosition();
|
||||
f32 ang = _angXZ(targetPos.x, targetPos.z, pos.x, pos.z);
|
||||
return angDist(ang, getFaceDir());
|
||||
}
|
||||
|
||||
inline f32 getCreatureViewAngle(Vector3f& targetPos)
|
||||
{
|
||||
Vector3f pos = getPosition();
|
||||
f32 ang = _angXZ(targetPos.x, targetPos.z, pos.x, pos.z);
|
||||
return angDist(ang, getFaceDir());
|
||||
}
|
||||
|
||||
inline f32 getDamageAnimFrac(f32 scale) { return (mDamageAnimTimer / scale); }
|
||||
|
||||
inline f32 getSqrHomeRadius() const
|
||||
|
@ -21,6 +21,21 @@ namespace Game {
|
||||
namespace Frog {
|
||||
struct FSM;
|
||||
|
||||
enum StateID {
|
||||
FROG_NULL = -1,
|
||||
FROG_Dead = 0,
|
||||
FROG_Wait = 1,
|
||||
FROG_Turn = 2,
|
||||
FROG_Jump = 3,
|
||||
FROG_JumpWait = 4,
|
||||
FROG_Fall = 5,
|
||||
FROG_Attack = 6,
|
||||
FROG_Fail = 7,
|
||||
FROG_TurnToHome = 8,
|
||||
FROG_GoHome = 9,
|
||||
FROG_StateCount, // 10
|
||||
};
|
||||
|
||||
struct Obj : public EnemyBase {
|
||||
Obj();
|
||||
|
||||
@ -74,7 +89,7 @@ struct Obj : public EnemyBase {
|
||||
f32 mAirTimer; // _2C0
|
||||
f32 _2C4; // _2C4
|
||||
Vector3f mTargetPosition; // _2C8
|
||||
int mNextState; // _2D4
|
||||
StateID mNextState; // _2D4
|
||||
bool mIsInAir; // _2D8
|
||||
bool mIsFalling; // _2D9
|
||||
efx::TFrogPota* mEfxPota; // _2DC
|
||||
@ -141,21 +156,6 @@ struct ProperAnimator : public EnemyAnimatorBase {
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// STATE MACHINE DEFINITIONS
|
||||
enum StateID {
|
||||
FROG_NULL = -1,
|
||||
FROG_Dead = 0,
|
||||
FROG_Wait = 1,
|
||||
FROG_Turn = 2,
|
||||
FROG_Jump = 3,
|
||||
FROG_JumpWait = 4,
|
||||
FROG_Fall = 5,
|
||||
FROG_Attack = 6,
|
||||
FROG_Fail = 7,
|
||||
FROG_TurnToHome = 8,
|
||||
FROG_GoHome = 9,
|
||||
FROG_StateCount, // 10
|
||||
};
|
||||
|
||||
struct FSM : public EnemyStateMachine {
|
||||
virtual void init(EnemyBase*); // _08
|
||||
|
||||
|
@ -307,7 +307,7 @@ inline void _normaliseScale(Vector3f& vec, f32 scale)
|
||||
vec.z *= scale;
|
||||
}
|
||||
|
||||
inline void _normaliseXZ(Vector3f& vec)
|
||||
inline f32 _normaliseXZ(Vector3f& vec)
|
||||
{
|
||||
Vector2f sqr(vec.z * vec.z, vec.x * vec.x + vec.y * vec.y);
|
||||
f32 length = sqr.x + sqr.y;
|
||||
@ -318,6 +318,8 @@ inline void _normaliseXZ(Vector3f& vec)
|
||||
vec.x *= norm;
|
||||
vec.z *= norm;
|
||||
}
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
inline f32 _normaliseVec(Vector3f& vec)
|
||||
|
@ -80,9 +80,9 @@ struct TSimple4 : public TBase {
|
||||
mEmitters[3] = nullptr;
|
||||
}
|
||||
|
||||
virtual bool create(Arg*); // _08
|
||||
virtual void forceKill(); // _0C (weak)
|
||||
virtual void fade(); // _10 (weak)
|
||||
virtual bool create(Arg*); // _08
|
||||
virtual void forceKill() { } // _0C (weak)
|
||||
virtual void fade() { } // _10 (weak)
|
||||
|
||||
/**
|
||||
* @fabricated
|
||||
|
@ -152,13 +152,8 @@ void StateAppear::exec(EnemyBase* enemy)
|
||||
FakePiki* target = OBJ(enemy)->getNearestPikiOrNavi(360.0f, terrRad);
|
||||
enemy->mTargetCreature = target;
|
||||
if (target) {
|
||||
Vector3f targetPos = target->getPosition();
|
||||
// this inline needs fixing but seems the most real
|
||||
f32 angleDist = enemy->turnToTarget(targetPos, TAU, 1.0f);
|
||||
|
||||
enemy->mFaceDir = roundAng(angleDist + enemy->getFaceDir());
|
||||
enemy->mRotation.y = enemy->mFaceDir;
|
||||
OBJ(enemy)->_2EC = enemy->mFaceDir;
|
||||
f32 angleDist = enemy->turnToTarget(target, 1.0f, TAU);
|
||||
OBJ(enemy)->_2EC = enemy->mFaceDir;
|
||||
}
|
||||
}
|
||||
|
||||
@ -180,231 +175,6 @@ void StateAppear::exec(EnemyBase* enemy)
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
stwu r1, -0x80(r1)
|
||||
mflr r0
|
||||
stw r0, 0x84(r1)
|
||||
stfd f31, 0x70(r1)
|
||||
psq_st f31, 120(r1), 0, qr0
|
||||
stw r31, 0x6c(r1)
|
||||
stw r30, 0x68(r1)
|
||||
mr r30, r3
|
||||
mr r31, r4
|
||||
lwz r3, 0x10(r3)
|
||||
addi r0, r3, 1
|
||||
stw r0, 0x10(r30)
|
||||
lwz r3, 0xc0(r4)
|
||||
lwz r4, 0x10(r30)
|
||||
lwz r0, 0x8e4(r3)
|
||||
cmpw r4, r0
|
||||
ble lbl_8036680C
|
||||
mr r3, r31
|
||||
bl isStopMotion__Q24Game9EnemyBaseFv
|
||||
clrlwi. r0, r3, 0x18
|
||||
beq lbl_80366724
|
||||
lwz r5, 0xc0(r31)
|
||||
mr r3, r31
|
||||
li r4, 0
|
||||
lfs f31, 0x35c(r5)
|
||||
fmr f1, f31
|
||||
bl
|
||||
"isThereOlimar__Q24Game9EnemyFuncFPQ24Game8CreaturefP23Condition<Q24Game4Navi>"
|
||||
clrlwi. r0, r3, 0x18
|
||||
beq lbl_80366584
|
||||
li r0, 1
|
||||
b lbl_803665A8
|
||||
|
||||
lbl_80366584:
|
||||
fmr f1, f31
|
||||
mr r3, r31
|
||||
li r4, 0
|
||||
bl
|
||||
"isTherePikmin__Q24Game9EnemyFuncFPQ24Game8CreaturefP23Condition<Q24Game4Piki>"
|
||||
clrlwi. r0, r3, 0x18
|
||||
beq lbl_803665A4
|
||||
li r0, 1
|
||||
b lbl_803665A8
|
||||
|
||||
lbl_803665A4:
|
||||
li r0, 0
|
||||
|
||||
lbl_803665A8:
|
||||
clrlwi. r0, r0, 0x18
|
||||
beq lbl_8036680C
|
||||
mr r3, r31
|
||||
bl startMotion__Q24Game9EnemyBaseFv
|
||||
mr r4, r31
|
||||
addi r3, r1, 0x44
|
||||
lwz r12, 0(r31)
|
||||
lwz r12, 8(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lfs f2, 0x44(r1)
|
||||
addi r5, r1, 0x5c
|
||||
lfs f1, 0x48(r1)
|
||||
li r4, 8
|
||||
lfs f0, 0x4c(r1)
|
||||
li r6, 2
|
||||
stfs f2, 0x5c(r1)
|
||||
lwz r3, rumbleMgr__4Game@sda21(r13)
|
||||
stfs f1, 0x60(r1)
|
||||
stfs f0, 0x64(r1)
|
||||
bl "startRumble__Q24Game9RumbleMgrFiR10Vector3<f>i"
|
||||
fmr f2, f31
|
||||
lfs f1, lbl_8051E88C@sda21(r2)
|
||||
mr r3, r31
|
||||
bl getNearestPikiOrNavi__Q34Game6Jigumo3ObjFff
|
||||
cmplwi r3, 0
|
||||
stw r3, 0x230(r31)
|
||||
beq lbl_8036680C
|
||||
mr r4, r3
|
||||
addi r3, r1, 0x20
|
||||
lwz r12, 0(r4)
|
||||
lwz r12, 8(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
mr r4, r31
|
||||
lfs f2, 0x20(r1)
|
||||
lwz r12, 0(r31)
|
||||
addi r3, r1, 0x2c
|
||||
lfs f1, 0x24(r1)
|
||||
lfs f0, 0x28(r1)
|
||||
lwz r12, 8(r12)
|
||||
stfs f2, 8(r1)
|
||||
stfs f1, 0xc(r1)
|
||||
stfs f0, 0x10(r1)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lfs f5, 0x2c(r1)
|
||||
lis r3, atanTable___5JMath@ha
|
||||
lfs f3, 0x34(r1)
|
||||
addi r3, r3, atanTable___5JMath@l
|
||||
lfs f1, 8(r1)
|
||||
lfs f0, 0x10(r1)
|
||||
lfs f4, 0x30(r1)
|
||||
fsubs f1, f1, f5
|
||||
fsubs f2, f0, f3
|
||||
stfs f5, 0x14(r1)
|
||||
stfs f4, 0x18(r1)
|
||||
stfs f3, 0x1c(r1)
|
||||
bl "atan2___Q25JMath18TAtanTable<1024,f>CFff"
|
||||
bl roundAng__Ff
|
||||
lwz r12, 0(r31)
|
||||
fmr f31, f1
|
||||
mr r3, r31
|
||||
lwz r12, 0x64(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
fmr f2, f1
|
||||
fmr f1, f31
|
||||
bl angDist__Fff
|
||||
lfs f0, lbl_8051E884@sda21(r2)
|
||||
lfs f2, lbl_8051E890@sda21(r2)
|
||||
fmuls f31, f1, f0
|
||||
fabs f0, f31
|
||||
frsp f0, f0
|
||||
fcmpo cr0, f0, f2
|
||||
ble lbl_803666F0
|
||||
lfs f0, lbl_8051E880@sda21(r2)
|
||||
fcmpo cr0, f31, f0
|
||||
ble lbl_803666EC
|
||||
fmr f31, f2
|
||||
b lbl_803666F0
|
||||
|
||||
lbl_803666EC:
|
||||
fneg f31, f2
|
||||
|
||||
lbl_803666F0:
|
||||
mr r3, r31
|
||||
lwz r12, 0(r31)
|
||||
lwz r12, 0x64(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
fadds f1, f31, f1
|
||||
bl roundAng__Ff
|
||||
stfs f1, 0x1fc(r31)
|
||||
lfs f0, 0x1fc(r31)
|
||||
stfs f0, 0x1a8(r31)
|
||||
lfs f0, 0x1fc(r31)
|
||||
stfs f0, 0x2ec(r31)
|
||||
b lbl_8036680C
|
||||
|
||||
lbl_80366724:
|
||||
lwz r3, 0x188(r31)
|
||||
lbz r0, 0x24(r3)
|
||||
cmplwi r0, 0
|
||||
beq lbl_8036680C
|
||||
lwz r0, 0x1c(r3)
|
||||
cmplwi r0, 2
|
||||
bne lbl_803667B8
|
||||
lwz r0, 0x280(r31)
|
||||
cmplwi r0, 0
|
||||
beq lbl_80366764
|
||||
mr r3, r31
|
||||
lwz r12, 0(r31)
|
||||
lwz r12, 0x250(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
b lbl_803667AC
|
||||
|
||||
lbl_80366764:
|
||||
mr r4, r31
|
||||
addi r3, r1, 0x38
|
||||
lwz r12, 0(r31)
|
||||
lwz r12, 8(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lfs f1, 0x38(r1)
|
||||
mr r3, r31
|
||||
lfs f2, 0x3c(r1)
|
||||
addi r4, r1, 0x50
|
||||
lfs f0, 0x40(r1)
|
||||
stfs f1, 0x50(r1)
|
||||
lfs f1, lbl_8051E894@sda21(r2)
|
||||
stfs f2, 0x54(r1)
|
||||
stfs f0, 0x58(r1)
|
||||
lfs f0, 0x1f8(r31)
|
||||
fmuls f1, f1, f0
|
||||
bl "createDropEffect__Q24Game9EnemyBaseFRC10Vector3<f>f"
|
||||
|
||||
lbl_803667AC:
|
||||
lwz r0, 0x1e0(r31)
|
||||
rlwinm r0, r0, 0, 0xa, 8
|
||||
stw r0, 0x1e0(r31)
|
||||
|
||||
lbl_803667B8:
|
||||
lwz r3, 0x188(r31)
|
||||
lwz r0, 0x1c(r3)
|
||||
cmplwi r0, 0x3e8
|
||||
bne lbl_8036680C
|
||||
mr r3, r30
|
||||
mr r4, r31
|
||||
lwz r12, 0(r30)
|
||||
li r5, 0
|
||||
li r6, 0
|
||||
lwz r12, 0x1c(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
mr r3, r31
|
||||
li r4, 1
|
||||
lwz r12, 0(r31)
|
||||
lwz r12, 0xac(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lwz r0, 0x1e0(r31)
|
||||
ori r0, r0, 0x800
|
||||
stw r0, 0x1e0(r31)
|
||||
|
||||
lbl_8036680C:
|
||||
psq_l f31, 120(r1), 0, qr0
|
||||
lwz r0, 0x84(r1)
|
||||
lfd f31, 0x70(r1)
|
||||
lwz r31, 0x6c(r1)
|
||||
lwz r30, 0x68(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x80
|
||||
blr
|
||||
*/
|
||||
}
|
||||
|
||||
/*
|
||||
@ -561,8 +331,8 @@ void StateAttack::exec(EnemyBase* enemy)
|
||||
FakePiki* target = OBJ(enemy)->getNearestPikiOrNavi(CG_PARMS(enemy)->mGeneral.mSearchAngle.mValue,
|
||||
CG_PARMS(enemy)->mGeneral.mSearchDistance.mValue);
|
||||
if (target) {
|
||||
enemy->changeFaceDir(target);
|
||||
OBJ(enemy)->mGoalPosition = Vector3f(enemy->getPosition());
|
||||
enemy->turnToTarget(target, *CG_PARMS(enemy)->mGeneral.mRotationalAccel(), *CG_PARMS(enemy)->mGeneral.mRotationalSpeed());
|
||||
OBJ(enemy)->mGoalPosition = Vector3f(target->getPosition());
|
||||
}
|
||||
}
|
||||
|
||||
@ -608,7 +378,7 @@ void StateAttack::exec(EnemyBase* enemy)
|
||||
Vector3f pos = OBJ(enemy)->getPosition();
|
||||
Vector3f goalPos = OBJ(enemy)->getGoalPos();
|
||||
Vector3f diff = pos - goalPos;
|
||||
if (diff.x * diff.x + diff.y * diff.y + diff.z * diff.z < 100.0f) {
|
||||
if (diff.sqrMagnitude() < 100.0f) {
|
||||
_10 = 0;
|
||||
OBJ(enemy)->effectStop();
|
||||
enemy->mTargetVelocity = Vector3f(0.0f);
|
||||
|
@ -974,8 +974,7 @@ void StateCarryEnd::exec(EnemyBase* enemy)
|
||||
}
|
||||
|
||||
} else {
|
||||
enemy->turnToTargetMori(_10, CG_PARMS(enemy)->mGeneral.mRotationalAccel.mValue,
|
||||
CG_PARMS(enemy)->mGeneral.mRotationalSpeed.mValue);
|
||||
enemy->turnToTarget(_10, *CG_PARMS(enemy)->mGeneral.mRotationalAccel(), *CG_PARMS(enemy)->mGeneral.mRotationalSpeed());
|
||||
diff.x *= 0.05f;
|
||||
diff.y *= 0.05f;
|
||||
diff.z *= 0.05f;
|
||||
|
@ -168,8 +168,8 @@ void StateMove::exec(EnemyBase* enemy)
|
||||
|
||||
if (creature) {
|
||||
|
||||
f32 angleDist = baby->turnToTargetNishi(creature, CG_PARMS(baby)->mGeneral.mRotationalAccel.mValue,
|
||||
CG_PARMS(baby)->mGeneral.mRotationalSpeed.mValue);
|
||||
f32 angleDist = baby->turnToTarget(creature, CG_PARMS(baby)->mGeneral.mRotationalAccel.mValue,
|
||||
CG_PARMS(baby)->mGeneral.mRotationalSpeed.mValue);
|
||||
|
||||
f32 limit = PI * (DEG2RAD * *CG_PARMS(baby)->mGeneral.mMinAttackRange());
|
||||
f32 absDist = FABS(angleDist);
|
||||
|
@ -422,7 +422,7 @@ void Obj::rollingMove()
|
||||
}
|
||||
Parms* parms = static_cast<Parms*>(mParms);
|
||||
|
||||
turnToTargetMori(targetPos, C_PROPERPARMS.mRollingTurnAccel.mValue, C_PROPERPARMS.mRollingTurnSpeed.mValue);
|
||||
turnToTarget(targetPos, C_PROPERPARMS.mRollingTurnAccel.mValue, C_PROPERPARMS.mRollingTurnSpeed.mValue);
|
||||
|
||||
f32 rollSpeed = C_PROPERPARMS.mRollingMoveSpeed.mValue;
|
||||
f32 x = (f32)sin(getFaceDir());
|
||||
|
@ -849,7 +849,7 @@ void StateMove::exec(EnemyBase* enemy)
|
||||
crab->finishMotion();
|
||||
|
||||
} else {
|
||||
crab->turnToTargetNishi(target, *CG_PARMS(crab)->mGeneral.mRotationalAccel(), *CG_PARMS(crab)->mGeneral.mRotationalSpeed());
|
||||
crab->turnToTarget(target, *CG_PARMS(crab)->mGeneral.mRotationalAccel(), *CG_PARMS(crab)->mGeneral.mRotationalSpeed());
|
||||
if (FABS(viewAngle) <= PI * (DEG2RAD * *CG_PARMS(crab)->mGeneral.mMinAttackRange())) {
|
||||
f32 moveSpeed = *CG_PARMS(crab)->mGeneral.mMoveSpeed();
|
||||
f32 x = sin(crab->getFaceDir());
|
||||
@ -872,7 +872,7 @@ void StateMove::exec(EnemyBase* enemy)
|
||||
} else {
|
||||
Vector3f targetPos = crab->mTargetPosition;
|
||||
f32 viewAngle = crab->getCreatureViewAngle(targetPos);
|
||||
crab->turnToTargetNishi(targetPos, *CG_PARMS(crab)->mGeneral.mRotationalAccel(), *CG_PARMS(crab)->mGeneral.mRotationalSpeed());
|
||||
crab->turnToTarget(targetPos, *CG_PARMS(crab)->mGeneral.mRotationalAccel(), *CG_PARMS(crab)->mGeneral.mRotationalSpeed());
|
||||
|
||||
if (FABS(viewAngle) <= HALF_PI) {
|
||||
f32 moveSpeed = *CG_PARMS(crab)->mGeneral.mMoveSpeed();
|
||||
|
@ -124,10 +124,15 @@ void StateTurn::exec(EnemyBase* enemy)
|
||||
{
|
||||
Obj* bug = static_cast<Obj*>(enemy);
|
||||
Vector3f targetPos = bug->mTargetPosition;
|
||||
f32 dist
|
||||
= bug->turnToTarget2(targetPos, CG_PARMS(bug)->mGeneral.mRotationalAccel.mValue, CG_PARMS(bug)->mGeneral.mRotationalSpeed.mValue);
|
||||
Vector2f XZ;
|
||||
XZ.x = targetPos.x;
|
||||
XZ.y = targetPos.z;
|
||||
|
||||
if (FABS(dist) <= PI / 6.0f) {
|
||||
// f32 dist = bug->changeFaceDir(targetPos);
|
||||
|
||||
f32 dist = bug->turnToTarget(targetPos, *CG_PARMS(bug)->mGeneral.mRotationalAccel(), *CG_PARMS(bug)->mGeneral.mRotationalSpeed());
|
||||
f64 abs = fabs(dist);
|
||||
if ((f32)(abs) <= PI / 6.0f) {
|
||||
bug->finishMotion();
|
||||
}
|
||||
|
||||
@ -254,8 +259,11 @@ void StateCharge::exec(EnemyBase* enemy)
|
||||
}
|
||||
Obj* partner = bug->mPartner;
|
||||
if (partner) {
|
||||
// Vector3f partnerPos = partner->getPosition();
|
||||
partner->turnToTargetNishi(partner, 0.15f, CG_PARMS(bug)->mGeneral.mRotationalSpeed.mValue);
|
||||
Vector3f bugPos = bug->getPosition();
|
||||
Vector3f partnerPos = partner->getPosition();
|
||||
Vector3f pos = bugPos - partnerPos;
|
||||
pos += bugPos;
|
||||
partner->turnToTarget(pos, 0.15f, *CG_PARMS(bug)->mGeneral.mRotationalSpeed());
|
||||
}
|
||||
if (bug->mStateTimer > 3.0f) {
|
||||
if (bug->mPartner) {
|
||||
@ -372,7 +380,11 @@ void StateChildCharge::exec(EnemyBase* enemy)
|
||||
Obj* bug = static_cast<Obj*>(enemy);
|
||||
Obj* partner = bug->mPartner;
|
||||
if (partner) {
|
||||
partner->turnToTargetNishi(partner, 0.15f, CG_PARMS(bug)->mGeneral.mRotationalSpeed.mValue);
|
||||
Vector3f bugPos = bug->getPosition();
|
||||
Vector3f partnerPos = partner->getPosition();
|
||||
Vector3f pos = bugPos - partnerPos;
|
||||
pos += bugPos;
|
||||
partner->turnToTarget(pos, 0.15f, *CG_PARMS(bug)->mGeneral.mRotationalSpeed());
|
||||
}
|
||||
if (bug->mStateTimer > 3.0f) {
|
||||
if (partner) {
|
||||
|
@ -1,330 +1,8 @@
|
||||
#include "types.h"
|
||||
#include "nans.h"
|
||||
#include "Game/Entities/Frog.h"
|
||||
|
||||
/*
|
||||
Generated from dpostproc
|
||||
|
||||
.section .ctors, "wa" # 0x80472F00 - 0x804732C0
|
||||
.4byte __sinit_Frog_cpp
|
||||
|
||||
.section .data, "wa" # 0x8049E220 - 0x804EFC20
|
||||
.global lbl_804C2450
|
||||
lbl_804C2450:
|
||||
.4byte 0x00000000
|
||||
.4byte 0x00000000
|
||||
.4byte 0x00000000
|
||||
.global __vt__Q23efx9TFrogPota
|
||||
__vt__Q23efx9TFrogPota:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte create__Q23efx5TSyncFPQ23efx3Arg
|
||||
.4byte forceKill__Q23efx5TSyncFv
|
||||
.4byte fade__Q23efx5TSyncFv
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte "@4@__dt__Q23efx9TFrogPotaFv"
|
||||
.4byte "@4@execute__Q23efx5TSyncFP14JPABaseEmitter"
|
||||
.4byte "@4@executeAfter__Q23efx5TSyncFP14JPABaseEmitter"
|
||||
.4byte draw__18JPAEmitterCallBackFP14JPABaseEmitter
|
||||
.4byte drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter
|
||||
.4byte execute__Q23efx5TSyncFP14JPABaseEmitter
|
||||
.4byte executeAfter__Q23efx5TSyncFP14JPABaseEmitter
|
||||
.4byte doExecuteEmitterOperation__Q23efx9TChasePosFP14JPABaseEmitter
|
||||
.4byte doExecuteAfter__Q23efx5TSyncFP14JPABaseEmitter
|
||||
.4byte startDemoDrawOff__Q23efx5TSyncFv
|
||||
.4byte endDemoDrawOn__Q23efx5TSyncFv
|
||||
.4byte __dt__Q23efx9TFrogPotaFv
|
||||
.global __vt__Q23efx13TFrogLanddrop
|
||||
__vt__Q23efx13TFrogLanddrop:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte create__Q23efx8TSimple2FPQ23efx3Arg
|
||||
.4byte forceKill__Q23efx8TSimple2Fv
|
||||
.4byte fade__Q23efx8TSimple2Fv
|
||||
.global __vt__Q23efx9TFrogDive
|
||||
__vt__Q23efx9TFrogDive:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte create__Q23efx8TSimple4FPQ23efx3Arg
|
||||
.4byte forceKill__Q23efx8TSimple4Fv
|
||||
.4byte fade__Q23efx8TSimple4Fv
|
||||
.global __vt__Q34Game4Frog3Obj
|
||||
__vt__Q34Game4Frog3Obj:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte getPosition__Q24Game9EnemyBaseFv
|
||||
.4byte checkCollision__Q24Game8CreatureFPQ24Game10CellObject
|
||||
.4byte getBoundingSphere__Q24Game9EnemyBaseFRQ23Sys6Sphere
|
||||
.4byte collisionUpdatable__Q24Game8CreatureFv
|
||||
.4byte isPiki__Q24Game8CreatureFv
|
||||
.4byte isNavi__Q24Game8CreatureFv
|
||||
.4byte deferPikiCollision__Q24Game10CellObjectFv
|
||||
.4byte getTypeName__Q24Game8CreatureFv
|
||||
.4byte getObjType__Q24Game8CreatureFv
|
||||
.4byte constructor__Q24Game9EnemyBaseFv
|
||||
.4byte onInit__Q34Game4Frog3ObjFPQ24Game15CreatureInitArg
|
||||
.4byte onKill__Q34Game4Frog3ObjFPQ24Game15CreatureKillArg
|
||||
.4byte onInitPost__Q24Game9EnemyBaseFPQ24Game15CreatureInitArg
|
||||
.4byte doAnimation__Q24Game9EnemyBaseFv
|
||||
.4byte doEntry__Q24Game9EnemyBaseFv
|
||||
.4byte doSetView__Q24Game9EnemyBaseFi
|
||||
.4byte doViewCalc__Q24Game9EnemyBaseFv
|
||||
.4byte doSimulation__Q24Game9EnemyBaseFf
|
||||
.4byte doDirectDraw__Q34Game4Frog3ObjFR8Graphics
|
||||
.4byte getBodyRadius__Q24Game9EnemyBaseFv
|
||||
.4byte getCellRadius__Q24Game9EnemyBaseFv
|
||||
.4byte "initPosition__Q24Game8CreatureFR10Vector3<f>"
|
||||
.4byte "onInitPosition__Q24Game8CreatureFR10Vector3<f>"
|
||||
.4byte getFaceDir__Q24Game9EnemyBaseFv
|
||||
.4byte "setVelocity__Q24Game9EnemyBaseFR10Vector3<f>"
|
||||
.4byte getVelocity__Q24Game9EnemyBaseFv
|
||||
.4byte "onSetPosition__Q24Game9EnemyBaseFR10Vector3<f>"
|
||||
.4byte "onSetPositionPost__Q24Game9EnemyBaseFR10Vector3<f>"
|
||||
.4byte updateTrMatrix__Q24Game9EnemyBaseFv
|
||||
.4byte isTeki__Q24Game9EnemyBaseFv
|
||||
.4byte isPellet__Q24Game8CreatureFv
|
||||
.4byte inWaterCallback__Q34Game4Frog3ObjFPQ24Game8WaterBox
|
||||
.4byte outWaterCallback__Q34Game4Frog3ObjFv
|
||||
.4byte inWater__Q24Game9EnemyBaseFv
|
||||
.4byte getFlockMgr__Q24Game8CreatureFv
|
||||
.4byte onStartCapture__Q24Game8CreatureFv
|
||||
.4byte onUpdateCapture__Q24Game8CreatureFR7Matrixf
|
||||
.4byte onEndCapture__Q24Game8CreatureFv
|
||||
.4byte isAtari__Q24Game8CreatureFv
|
||||
.4byte setAtari__Q24Game8CreatureFb
|
||||
.4byte isAlive__Q24Game8CreatureFv
|
||||
.4byte setAlive__Q24Game8CreatureFb
|
||||
.4byte isCollisionFlick__Q24Game8CreatureFv
|
||||
.4byte setCollisionFlick__Q24Game8CreatureFb
|
||||
.4byte isMovieActor__Q24Game8CreatureFv
|
||||
.4byte isMovieExtra__Q24Game8CreatureFv
|
||||
.4byte isMovieMotion__Q24Game8CreatureFv
|
||||
.4byte setMovieMotion__Q24Game8CreatureFb
|
||||
.4byte isBuried__Q24Game8CreatureFv
|
||||
.4byte isFlying__Q24Game9EnemyBaseFv
|
||||
.4byte isUnderground__Q24Game8CreatureFv
|
||||
.4byte isLivingThing__Q24Game8CreatureFv
|
||||
.4byte isDebugCollision__Q24Game8CreatureFv
|
||||
.4byte setDebugCollision__Q24Game8CreatureFb
|
||||
.4byte doSave__Q24Game8CreatureFR6Stream
|
||||
.4byte doLoad__Q24Game8CreatureFR6Stream
|
||||
.4byte bounceCallback__Q24Game8CreatureFPQ23Sys8Triangle
|
||||
.4byte collisionCallback__Q34Game4Frog3ObjFRQ24Game9CollEvent
|
||||
.4byte platCallback__Q24Game8CreatureFRQ24Game9PlatEvent
|
||||
.4byte getJAIObject__Q24Game9EnemyBaseFv
|
||||
.4byte getPSCreature__Q24Game9EnemyBaseFv
|
||||
.4byte getSound_AILOD__Q24Game8CreatureFv
|
||||
.4byte getSound_PosPtr__Q24Game9EnemyBaseFv
|
||||
.4byte sound_culling__Q24Game9EnemyBaseFv
|
||||
.4byte getSound_CurrAnimFrame__Q24Game9EnemyBaseFv
|
||||
.4byte getSound_CurrAnimSpeed__Q24Game9EnemyBaseFv
|
||||
.4byte on_movie_begin__Q24Game8CreatureFb
|
||||
.4byte on_movie_end__Q24Game8CreatureFb
|
||||
.4byte movieStartAnimation__Q24Game8CreatureFUl
|
||||
.4byte movieStartDemoAnimation__Q24Game8CreatureFPQ28SysShape8AnimInfo
|
||||
.4byte movieSetAnimationLastFrame__Q24Game8CreatureFv
|
||||
.4byte "movieSetTranslation__Q24Game8CreatureFR10Vector3<f>f"
|
||||
.4byte movieSetFaceDir__Q24Game8CreatureFf
|
||||
.4byte "movieGotoPosition__Q24Game8CreatureFR10Vector3<f>"
|
||||
.4byte movieUserCommand__Q24Game8CreatureFUlPQ24Game11MoviePlayer
|
||||
.4byte getShadowParam__Q34Game4Frog3ObjFRQ24Game11ShadowParam
|
||||
.4byte needShadow__Q24Game9EnemyBaseFv
|
||||
.4byte getLifeGaugeParam__Q24Game9EnemyBaseFRQ24Game14LifeGaugeParam
|
||||
.4byte getLODSphere__Q24Game9EnemyBaseFRQ23Sys6Sphere
|
||||
.4byte getLODCylinder__Q24Game8CreatureFRQ23Sys8Cylinder
|
||||
.4byte startPick__Q24Game8CreatureFv
|
||||
.4byte endPick__Q24Game8CreatureFb
|
||||
.4byte getMabiki__Q24Game8CreatureFv
|
||||
.4byte getFootmarks__Q24Game8CreatureFv
|
||||
.4byte onStickStart__Q24Game9EnemyBaseFPQ24Game8Creature
|
||||
.4byte onStickEnd__Q24Game9EnemyBaseFPQ24Game8Creature
|
||||
.4byte onStickStartSelf__Q24Game8CreatureFPQ24Game8Creature
|
||||
.4byte onStickEndSelf__Q24Game8CreatureFPQ24Game8Creature
|
||||
.4byte isSlotFree__Q24Game8CreatureFs
|
||||
.4byte getFreeStickSlot__Q24Game8CreatureFv
|
||||
.4byte "getNearFreeStickSlot__Q24Game8CreatureFR10Vector3<f>"
|
||||
.4byte getRandomFreeStickSlot__Q24Game8CreatureFv
|
||||
.4byte onSlotStickStart__Q24Game8CreatureFPQ24Game8Creatures
|
||||
.4byte onSlotStickEnd__Q24Game8CreatureFPQ24Game8Creatures
|
||||
.4byte "calcStickSlotGlobal__Q24Game8CreatureFsR10Vector3<f>"
|
||||
.4byte "getVelocityAt__Q24Game9EnemyBaseFR10Vector3<f>R10Vector3<f>"
|
||||
.4byte "getAngularEffect__Q24Game8CreatureFR10Vector3<f>R10Vector3<f>"
|
||||
.4byte "applyImpulse__Q24Game8CreatureFR10Vector3<f>R10Vector3<f>"
|
||||
.4byte ignoreAtari__Q24Game8CreatureFPQ24Game8Creature
|
||||
.4byte getSuckPos__Q24Game8CreatureFv
|
||||
.4byte getGoalPos__Q24Game8CreatureFv
|
||||
.4byte isSuckReady__Q24Game8CreatureFv
|
||||
.4byte isSuckArriveWait__Q24Game8CreatureFv
|
||||
.4byte stimulate__Q24Game9EnemyBaseFRQ24Game11Interaction
|
||||
.4byte getCreatureName__Q24Game9EnemyBaseFv
|
||||
.4byte getCreatureID__Q24Game9EnemyBaseFv
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte "@376@onKeyEvent__Q24Game9EnemyBaseFRCQ28SysShape8KeyEvent"
|
||||
.4byte __dt__Q34Game4Frog3ObjFv
|
||||
.4byte "birth__Q24Game9EnemyBaseFR10Vector3<f>f"
|
||||
.4byte
|
||||
setInitialSetting__Q34Game4Frog3ObjFPQ24Game21EnemyInitialParamBase .4byte
|
||||
update__Q24Game9EnemyBaseFv .4byte doUpdate__Q34Game4Frog3ObjFv .4byte
|
||||
doUpdateCommon__Q24Game9EnemyBaseFv .4byte
|
||||
doUpdateCarcass__Q24Game9EnemyBaseFv .4byte
|
||||
doAnimationUpdateAnimator__Q24Game9EnemyBaseFv .4byte
|
||||
doAnimationCullingOff__Q24Game9EnemyBaseFv .4byte
|
||||
doAnimationCullingOn__Q24Game9EnemyBaseFv .4byte
|
||||
doAnimationStick__Q24Game9EnemyBaseFv .4byte
|
||||
doSimulationCarcass__Q24Game9EnemyBaseFf .4byte
|
||||
doDebugDraw__Q34Game4Frog3ObjFR8Graphics .4byte
|
||||
doSimpleDraw__Q24Game9EnemyBaseFP8Viewport .4byte
|
||||
doSimulationGround__Q24Game9EnemyBaseFf .4byte
|
||||
doSimulationFlying__Q34Game4Frog3ObjFf .4byte
|
||||
doSimulationStick__Q24Game9EnemyBaseFf .4byte
|
||||
changeMaterial__Q24Game9EnemyBaseFv .4byte
|
||||
"getCommonEffectPos__Q34Game4Frog3ObjFR10Vector3<f>" .4byte
|
||||
getFitEffectPos__Q24Game9EnemyBaseFv .4byte viewGetShape__Q24Game9EnemyBaseFv
|
||||
.4byte view_start_carrymotion__Q24Game9EnemyBaseFv
|
||||
.4byte view_finish_carrymotion__Q24Game9EnemyBaseFv
|
||||
.4byte viewStartPreCarryMotion__Q24Game9EnemyBaseFv
|
||||
.4byte viewStartCarryMotion__Q24Game9EnemyBaseFv
|
||||
.4byte viewOnPelletKilled__Q24Game9EnemyBaseFv
|
||||
.4byte getOffsetForMapCollision__Q34Game4Frog3ObjFv
|
||||
.4byte setParameters__Q24Game9EnemyBaseFv
|
||||
.4byte initMouthSlots__Q24Game9EnemyBaseFv
|
||||
.4byte initWalkSmokeEffect__Q24Game9EnemyBaseFv
|
||||
.4byte getWalkSmokeEffectMgr__Q24Game9EnemyBaseFv
|
||||
.4byte onKeyEvent__Q24Game9EnemyBaseFRCQ28SysShape8KeyEvent
|
||||
.4byte injure__Q24Game9EnemyBaseFv
|
||||
.4byte setCollEvent__Q24Game9EnemyBaseFRQ24Game9CollEvent
|
||||
.4byte "getEfxHamonPos__Q24Game9EnemyBaseFP10Vector3<f>"
|
||||
.4byte createInstanceEfxHamon__Q24Game9EnemyBaseFv
|
||||
.4byte updateEfxHamon__Q24Game9EnemyBaseFv
|
||||
.4byte createEfxHamon__Q24Game9EnemyBaseFv
|
||||
.4byte fadeEfxHamon__Q24Game9EnemyBaseFv
|
||||
.4byte getEnemyTypeID__Q34Game4Frog3ObjFv
|
||||
.4byte getMouthSlots__Q24Game9EnemyBaseFv
|
||||
.4byte doGetLifeGaugeParam__Q24Game9EnemyBaseFRQ24Game14LifeGaugeParam
|
||||
.4byte throwupItem__Q24Game9EnemyBaseFv
|
||||
.4byte "getThrowupItemPosition__Q24Game9EnemyBaseFP10Vector3<f>"
|
||||
.4byte "getThrowupItemVelocity__Q24Game9EnemyBaseFP10Vector3<f>"
|
||||
.4byte throwupItemInDeathProcedure__Q24Game9EnemyBaseFv
|
||||
.4byte setLODSphere__Q24Game9EnemyBaseFRQ23Sys6Sphere
|
||||
.4byte damageCallBack__Q24Game9EnemyBaseFPQ24Game8CreaturefP8CollPart
|
||||
.4byte pressCallBack__Q24Game9EnemyBaseFPQ24Game8CreaturefP8CollPart
|
||||
.4byte
|
||||
flyCollisionCallBack__Q24Game9EnemyBaseFPQ24Game8CreaturefP8CollPart .4byte
|
||||
hipdropCallBack__Q24Game9EnemyBaseFPQ24Game8CreaturefP8CollPart .4byte
|
||||
dropCallBack__Q24Game9EnemyBaseFPQ24Game8Creature .4byte
|
||||
earthquakeCallBack__Q24Game9EnemyBaseFPQ24Game8Creaturef .4byte
|
||||
farmCallBack__Q24Game9EnemyBaseFPQ24Game8Creaturef .4byte
|
||||
"bombCallBack__Q24Game9EnemyBaseFPQ24Game8CreatureR10Vector3<f>f" .4byte
|
||||
eatWhitePikminCallBack__Q24Game9EnemyBaseFPQ24Game8Creaturef .4byte
|
||||
dopeCallBack__Q24Game9EnemyBaseFPQ24Game8Creaturei .4byte
|
||||
doDopeCallBack__Q24Game9EnemyBaseFPQ24Game8Creaturei .4byte
|
||||
doStartStoneState__Q34Game4Frog3ObjFv .4byte
|
||||
doFinishStoneState__Q34Game4Frog3ObjFv .4byte
|
||||
getDamageCoeStoneState__Q24Game9EnemyBaseFv .4byte
|
||||
doStartEarthquakeState__Q24Game9EnemyBaseFf .4byte
|
||||
doFinishEarthquakeState__Q24Game9EnemyBaseFv .4byte
|
||||
doStartEarthquakeFitState__Q34Game4Frog3ObjFv .4byte
|
||||
doFinishEarthquakeFitState__Q34Game4Frog3ObjFv .4byte
|
||||
lifeRecover__Q24Game9EnemyBaseFv .4byte
|
||||
startCarcassMotion__Q34Game4Frog3ObjFv .4byte
|
||||
setCarcassArg__Q24Game9EnemyBaseFRQ24Game13PelletViewArg .4byte
|
||||
getCarcassArgHeight__Q24Game9EnemyBaseFv .4byte
|
||||
doBecomeCarcass__Q24Game9EnemyBaseFv .4byte
|
||||
startWaitingBirthTypeDrop__Q24Game9EnemyBaseFv .4byte
|
||||
finishWaitingBirthTypeDrop__Q24Game9EnemyBaseFv .4byte
|
||||
isFinishableWaitingBirthTypeDrop__Q24Game9EnemyBaseFv .4byte
|
||||
doStartWaitingBirthTypeDrop__Q34Game4Frog3ObjFv .4byte
|
||||
doFinishWaitingBirthTypeDrop__Q34Game4Frog3ObjFv .4byte
|
||||
wallCallback__Q24Game9EnemyBaseFRCQ24Game8MoveInfo .4byte
|
||||
getDownSmokeScale__Q34Game4Frog3ObjFv .4byte doStartMovie__Q34Game4Frog3ObjFv
|
||||
.4byte doEndMovie__Q34Game4Frog3ObjFv
|
||||
.4byte setFSM__Q34Game4Frog3ObjFPQ34Game4Frog3FSM
|
||||
.4byte viewGetCollTreeOffset__Q34Game4Frog3ObjFv
|
||||
.4byte attackNaviPosition__Q34Game4Frog3ObjFv
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte viewGetBaseScale__Q24Game10PelletViewFv
|
||||
.4byte "@736@12@viewGetShape__Q24Game9EnemyBaseFv"
|
||||
.4byte viewGetCollTreeJointIndex__Q24Game10PelletViewFv
|
||||
.4byte "@736@12@viewGetCollTreeOffset__Q34Game4Frog3ObjFv"
|
||||
.4byte "@736@12@view_start_carrymotion__Q24Game9EnemyBaseFv"
|
||||
.4byte "@736@12@view_finish_carrymotion__Q24Game9EnemyBaseFv"
|
||||
.4byte "@736@12@viewStartPreCarryMotion__Q24Game9EnemyBaseFv"
|
||||
.4byte "@736@12@viewStartCarryMotion__Q24Game9EnemyBaseFv"
|
||||
.4byte "@736@12@viewOnPelletKilled__Q24Game9EnemyBaseFv"
|
||||
.4byte "viewEntryShape__Q24Game10PelletViewFR7MatrixfR10Vector3<f>"
|
||||
.4byte 0
|
||||
|
||||
.section .sbss # 0x80514D80 - 0x80516360
|
||||
.global lbl_80515D38
|
||||
lbl_80515D38:
|
||||
.skip 0x4
|
||||
.global lbl_80515D3C
|
||||
lbl_80515D3C:
|
||||
.skip 0x4
|
||||
|
||||
.section .sdata2, "a" # 0x80516360 - 0x80520E40
|
||||
.global lbl_8051AAC8
|
||||
lbl_8051AAC8:
|
||||
.4byte 0x43000000
|
||||
.global lbl_8051AACC
|
||||
lbl_8051AACC:
|
||||
.4byte 0x00000000
|
||||
.global lbl_8051AAD0
|
||||
lbl_8051AAD0:
|
||||
.4byte 0x40000000
|
||||
.global lbl_8051AAD4
|
||||
lbl_8051AAD4:
|
||||
.4byte 0x40490FDB
|
||||
.global lbl_8051AAD8
|
||||
lbl_8051AAD8:
|
||||
.4byte 0x3BB60B61
|
||||
.global lbl_8051AADC
|
||||
lbl_8051AADC:
|
||||
.4byte 0x40A00000
|
||||
.global lbl_8051AAE0
|
||||
lbl_8051AAE0:
|
||||
.4byte 0x42960000
|
||||
.global lbl_8051AAE4
|
||||
lbl_8051AAE4:
|
||||
.4byte 0x42480000
|
||||
.global lbl_8051AAE8
|
||||
lbl_8051AAE8:
|
||||
.4byte 0x418C0000
|
||||
.global lbl_8051AAEC
|
||||
lbl_8051AAEC:
|
||||
.4byte 0x3F400000
|
||||
.global lbl_8051AAF0
|
||||
lbl_8051AAF0:
|
||||
.4byte 0x41B40000
|
||||
.global lbl_8051AAF4
|
||||
lbl_8051AAF4:
|
||||
.float 1.0
|
||||
.global lbl_8051AAF8
|
||||
lbl_8051AAF8:
|
||||
.4byte 0x41A00000
|
||||
.global lbl_8051AAFC
|
||||
lbl_8051AAFC:
|
||||
.4byte 0xC1700000
|
||||
.global lbl_8051AB00
|
||||
lbl_8051AB00:
|
||||
.4byte 0x43340000
|
||||
.global lbl_8051AB04
|
||||
lbl_8051AB04:
|
||||
.float 0.5
|
||||
.global lbl_8051AB08
|
||||
lbl_8051AB08:
|
||||
.4byte 0xC3A2F983
|
||||
.global lbl_8051AB0C
|
||||
lbl_8051AB0C:
|
||||
.4byte 0x43A2F983
|
||||
.global lbl_8051AB10
|
||||
lbl_8051AB10:
|
||||
.4byte 0xC47A0000
|
||||
.4byte 0x00000000
|
||||
*/
|
||||
#include "Game/CameraMgr.h"
|
||||
#include "Game/rumble.h"
|
||||
#include "efx/TFrog.h"
|
||||
#include "nans.h"
|
||||
|
||||
namespace Game {
|
||||
namespace Frog {
|
||||
@ -336,92 +14,9 @@ namespace Frog {
|
||||
*/
|
||||
Obj::Obj()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
stw r0, 0x14(r1)
|
||||
extsh. r0, r4
|
||||
stw r31, 0xc(r1)
|
||||
mr r31, r3
|
||||
stw r30, 8(r1)
|
||||
beq lbl_80258588
|
||||
addi r0, r31, 0x2e0
|
||||
lis r3, __vt__Q24Game10PelletView@ha
|
||||
stw r0, 0x17c(r31)
|
||||
addi r3, r3, __vt__Q24Game10PelletView@l
|
||||
li r0, 0
|
||||
stw r3, 0x2e0(r31)
|
||||
stw r0, 0x2e4(r31)
|
||||
stw r0, 0x2e8(r31)
|
||||
|
||||
lbl_80258588:
|
||||
mr r3, r31
|
||||
li r4, 0
|
||||
bl __ct__Q24Game9EnemyBaseFv
|
||||
lis r3, __vt__Q34Game4Frog3Obj@ha
|
||||
addi r0, r31, 0x2e0
|
||||
addi r5, r3, __vt__Q34Game4Frog3Obj@l
|
||||
li r3, 0x2c
|
||||
stw r5, 0(r31)
|
||||
addi r4, r5, 0x1b0
|
||||
addi r5, r5, 0x304
|
||||
stw r4, 0x178(r31)
|
||||
lwz r4, 0x17c(r31)
|
||||
stw r5, 0(r4)
|
||||
lwz r4, 0x17c(r31)
|
||||
subf r0, r4, r0
|
||||
stw r0, 0xc(r4)
|
||||
bl __nw__FUl
|
||||
or. r30, r3, r3
|
||||
beq lbl_80258614
|
||||
bl __ct__Q24Game17EnemyAnimatorBaseFv
|
||||
lis r3, __vt__Q34Game4Frog14ProperAnimator@ha
|
||||
lis r4, __vt__Q28SysShape12BaseAnimator@ha
|
||||
addi r0, r3, __vt__Q34Game4Frog14ProperAnimator@l
|
||||
lis r3, __vt__Q28SysShape8Animator@ha
|
||||
stw r0, 0(r30)
|
||||
addi r4, r4, __vt__Q28SysShape12BaseAnimator@l
|
||||
addi r3, r3, __vt__Q28SysShape8Animator@l
|
||||
li r0, 0
|
||||
stw r4, 0x10(r30)
|
||||
stw r3, 0x10(r30)
|
||||
stb r0, 0x28(r30)
|
||||
stw r0, 0x1c(r30)
|
||||
stw r0, 0x14(r30)
|
||||
stb r0, 0x28(r30)
|
||||
stw r0, 0x20(r30)
|
||||
|
||||
lbl_80258614:
|
||||
stw r30, 0x184(r31)
|
||||
li r3, 0x1c
|
||||
bl __nw__FUl
|
||||
or. r4, r3, r3
|
||||
beq lbl_80258648
|
||||
lis r5, __vt__Q24Game17EnemyStateMachine@ha
|
||||
lis r3, __vt__Q34Game4Frog3FSM@ha
|
||||
addi r0, r5, __vt__Q24Game17EnemyStateMachine@l
|
||||
li r5, -1
|
||||
stw r0, 0(r4)
|
||||
addi r0, r3, __vt__Q34Game4Frog3FSM@l
|
||||
stw r5, 0x18(r4)
|
||||
stw r0, 0(r4)
|
||||
|
||||
lbl_80258648:
|
||||
lwz r12, 0(r31)
|
||||
mr r3, r31
|
||||
lwz r12, 0x2f8(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
mr r3, r31
|
||||
bl createEffect__Q34Game4Frog3ObjFv
|
||||
lwz r0, 0x14(r1)
|
||||
mr r3, r31
|
||||
lwz r31, 0xc(r1)
|
||||
lwz r30, 8(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
mAnimator = new ProperAnimator();
|
||||
setFSM(new FSM);
|
||||
createEffect();
|
||||
}
|
||||
|
||||
/*
|
||||
@ -445,7 +40,7 @@ void Obj::onInit(CreatureInitArg* initArg)
|
||||
mIsInAir = false;
|
||||
mIsFalling = false;
|
||||
setupEffect();
|
||||
mFsm->start(this, 1, nullptr);
|
||||
mFsm->start(this, FROG_Wait, nullptr);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -466,9 +61,8 @@ void Obj::onKill(CreatureKillArg* killArg)
|
||||
*/
|
||||
void Obj::doUpdate()
|
||||
{
|
||||
EnemyBase* frog = static_cast<EnemyBase*>(this);
|
||||
updateCaution();
|
||||
mFsm->exec(frog);
|
||||
mFsm->exec(this);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -476,7 +70,7 @@ void Obj::doUpdate()
|
||||
* Address: 80258784
|
||||
* Size: 000280
|
||||
*/
|
||||
void Obj::doSimulationFlying(f32)
|
||||
void Obj::doSimulationFlying(f32 p1)
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x60(r1)
|
||||
@ -685,29 +279,11 @@ void Obj::doDebugDraw(Graphics& gfx) { EnemyBase::doDebugDraw(gfx); }
|
||||
* Address: 80258A28
|
||||
* Size: 00004C
|
||||
*/
|
||||
void Obj::setFSM(FSM*)
|
||||
void Obj::setFSM(FSM* fsm)
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
stw r0, 0x14(r1)
|
||||
stw r31, 0xc(r1)
|
||||
mr r31, r3
|
||||
stw r4, 0x2bc(r3)
|
||||
mr r4, r31
|
||||
lwz r3, 0x2bc(r3)
|
||||
lwz r12, 0(r3)
|
||||
lwz r12, 8(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
li r0, 0
|
||||
stw r0, 0x2b4(r31)
|
||||
lwz r0, 0x14(r1)
|
||||
lwz r31, 0xc(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
mFsm = fsm;
|
||||
mFsm->init(this);
|
||||
mCurrentLifecycleState = nullptr;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1469,186 +1045,47 @@ lbl_802593D4:
|
||||
* Address: 802593E8
|
||||
* Size: 0000B0
|
||||
*/
|
||||
void Obj::createEffect()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
stw r0, 0x14(r1)
|
||||
stw r31, 0xc(r1)
|
||||
mr r31, r3
|
||||
li r3, 0x14
|
||||
bl __nw__FUl
|
||||
cmplwi r3, 0
|
||||
beq lbl_80259480
|
||||
lis r4, __vt__Q23efx5TBase@ha
|
||||
lis r5, __vt__18JPAEmitterCallBack@ha
|
||||
addi r0, r4, __vt__Q23efx5TBase@l
|
||||
lis r4, __vt__Q23efx5TSync@ha
|
||||
stw r0, 0(r3)
|
||||
addi r0, r5, __vt__18JPAEmitterCallBack@l
|
||||
addi r5, r4, __vt__Q23efx5TSync@l
|
||||
lis r4, __vt__Q23efx9TChasePos@ha
|
||||
stw r0, 4(r3)
|
||||
addi r7, r4, __vt__Q23efx9TChasePos@l
|
||||
lis r4, __vt__Q23efx9TFrogPota@ha
|
||||
addi r0, r5, 0x14
|
||||
stw r5, 0(r3)
|
||||
addi r4, r4, __vt__Q23efx9TFrogPota@l
|
||||
li r9, 0
|
||||
li r8, 0x2b2
|
||||
stw r0, 4(r3)
|
||||
addi r6, r7, 0x14
|
||||
li r5, 0x62
|
||||
addi r0, r4, 0x14
|
||||
stw r9, 8(r3)
|
||||
sth r8, 0xc(r3)
|
||||
stb r9, 0xe(r3)
|
||||
stw r7, 0(r3)
|
||||
stw r6, 4(r3)
|
||||
stw r9, 0x10(r3)
|
||||
sth r5, 0xc(r3)
|
||||
stw r4, 0(r3)
|
||||
stw r0, 4(r3)
|
||||
|
||||
lbl_80259480:
|
||||
stw r3, 0x2dc(r31)
|
||||
lwz r0, 0x14(r1)
|
||||
lwz r31, 0xc(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
}
|
||||
void Obj::createEffect() { mEfxPota = new efx::TFrogPota; }
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 80259498
|
||||
* Size: 000010
|
||||
*/
|
||||
void Obj::setupEffect()
|
||||
{
|
||||
// mEfxPota
|
||||
/*
|
||||
lwz r4, 0x2dc(r3)
|
||||
addi r0, r3, 0x18c
|
||||
stw r0, 0x10(r4)
|
||||
blr
|
||||
*/
|
||||
}
|
||||
void Obj::setupEffect() { mEfxPota->mPosition = &mPosition; }
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 802594A8
|
||||
* Size: 000034
|
||||
*/
|
||||
void Obj::startJumpEffect()
|
||||
{
|
||||
// mEfxPota->create(nullptr);
|
||||
// incomplete class
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
li r4, 0
|
||||
stw r0, 0x14(r1)
|
||||
lwz r3, 0x2dc(r3)
|
||||
lwz r12, 0(r3)
|
||||
lwz r12, 8(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lwz r0, 0x14(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
}
|
||||
void Obj::startJumpEffect() { mEfxPota->create(nullptr); }
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 802594DC
|
||||
* Size: 000030
|
||||
*/
|
||||
void Obj::finishJumpEffect()
|
||||
{
|
||||
// mEfxPota->fade();
|
||||
// incomplete class
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
stw r0, 0x14(r1)
|
||||
lwz r3, 0x2dc(r3)
|
||||
lwz r12, 0(r3)
|
||||
lwz r12, 0x10(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lwz r0, 0x14(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
}
|
||||
void Obj::finishJumpEffect() { mEfxPota->fade(); }
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 8025950C
|
||||
* Size: 0000C0
|
||||
*/
|
||||
void Obj::createDownEffect(f32)
|
||||
void Obj::createDownEffect(f32 scale)
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x40(r1)
|
||||
mflr r0
|
||||
stw r0, 0x44(r1)
|
||||
stfd f31, 0x30(r1)
|
||||
psq_st f31, 56(r1), 0, qr0
|
||||
stw r31, 0x2c(r1)
|
||||
lwz r12, 0(r3)
|
||||
fmr f31, f1
|
||||
mr r31, r3
|
||||
addi r4, r1, 0x14
|
||||
lwz r12, 0x10(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lfs f2, 0x190(r31)
|
||||
lfs f1, 0x14(r1)
|
||||
lfs f0, 0x1c(r1)
|
||||
stfs f1, 8(r1)
|
||||
stfs f2, 0xc(r1)
|
||||
stfs f0, 0x10(r1)
|
||||
lwz r0, 0x280(r31)
|
||||
cmplwi r0, 0
|
||||
beq lbl_80259578
|
||||
fmr f1, f31
|
||||
mr r3, r31
|
||||
addi r4, r1, 8
|
||||
bl "createSplashDownEffect__Q24Game9EnemyBaseFRC10Vector3<f>f"
|
||||
b lbl_80259588
|
||||
Sys::Sphere sphere;
|
||||
getBoundingSphere(sphere);
|
||||
Vector3f fxPos(sphere.mPosition.x, mPosition.y, sphere.mPosition.z);
|
||||
if (mWaterBox) {
|
||||
createSplashDownEffect(fxPos, scale);
|
||||
} else {
|
||||
createDropEffect(fxPos, scale);
|
||||
}
|
||||
|
||||
lbl_80259578:
|
||||
fmr f1, f31
|
||||
mr r3, r31
|
||||
addi r4, r1, 8
|
||||
bl "createDropEffect__Q24Game9EnemyBaseFRC10Vector3<f>f"
|
||||
|
||||
lbl_80259588:
|
||||
lwz r3, cameraMgr__4Game@sda21(r13)
|
||||
addi r5, r31, 0x18c
|
||||
li r4, 0
|
||||
li r6, 2
|
||||
bl "startVibration__Q24Game9CameraMgrFiR10Vector3<f>i"
|
||||
lwz r3, rumbleMgr__4Game@sda21(r13)
|
||||
addi r5, r31, 0x18c
|
||||
li r4, 0xb
|
||||
li r6, 2
|
||||
bl "startRumble__Q24Game9RumbleMgrFiR10Vector3<f>i"
|
||||
psq_l f31, 56(r1), 0, qr0
|
||||
lwz r0, 0x44(r1)
|
||||
lfd f31, 0x30(r1)
|
||||
lwz r31, 0x2c(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x40
|
||||
blr
|
||||
*/
|
||||
cameraMgr->startVibration(0, mPosition, 2);
|
||||
rumbleMgr->startRumble(11, mPosition, 2);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1656,48 +1093,14 @@ lbl_80259588:
|
||||
* Address: 802595CC
|
||||
* Size: 000030
|
||||
*/
|
||||
void Obj::effectDrawOn()
|
||||
{
|
||||
// mEfxPota
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
stw r0, 0x14(r1)
|
||||
lwz r3, 0x2dc(r3)
|
||||
lwz r12, 0(r3)
|
||||
lwz r12, 0x44(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lwz r0, 0x14(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
}
|
||||
void Obj::effectDrawOn() { mEfxPota->endDemoDrawOn(); }
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 802595FC
|
||||
* Size: 000030
|
||||
*/
|
||||
void Obj::effectDrawOff()
|
||||
{
|
||||
// mEfxPota
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
stw r0, 0x14(r1)
|
||||
lwz r3, 0x2dc(r3)
|
||||
lwz r12, 0(r3)
|
||||
lwz r12, 0x40(r12)
|
||||
mtctr r12
|
||||
bctrl
|
||||
lwz r0, 0x14(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
}
|
||||
void Obj::effectDrawOff() { mEfxPota->startDemoDrawOff(); }
|
||||
|
||||
} // namespace Frog
|
||||
} // namespace Game
|
||||
|
@ -359,8 +359,8 @@ void StateTurn::exec(EnemyBase* enemy)
|
||||
Vector3f targetPos = Vector3f(fuefuki->mTargetPosition);
|
||||
|
||||
// this is close.
|
||||
f32 angleDist = fuefuki->turnToTarget2(targetPos, CG_PARMS(fuefuki)->mGeneral.mRotationalAccel.mValue,
|
||||
CG_PARMS(fuefuki)->mGeneral.mRotationalSpeed.mValue);
|
||||
f32 angleDist = fuefuki->turnToTarget(targetPos, *CG_PARMS(fuefuki)->mGeneral.mRotationalAccel(),
|
||||
*CG_PARMS(fuefuki)->mGeneral.mRotationalSpeed());
|
||||
|
||||
if (FABS(angleDist) <= PI / 6) {
|
||||
fuefuki->mNextState = FUEFUKI_Walk;
|
||||
|
@ -121,8 +121,8 @@ void StateWait::exec(EnemyBase* enemy)
|
||||
Creature* target = kuma->getSearchedTarget();
|
||||
if (target) {
|
||||
// more nonsense going on in here than this
|
||||
f32 dist = kuma->turnToTargetNishi(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
f32 dist = kuma->turnToTarget(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
|
||||
// this isn't the comparison, probably a bool spat out from an inline
|
||||
if (FABS(dist) <= CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue) {
|
||||
@ -475,8 +475,8 @@ void StateAttack::exec(EnemyBase* enemy)
|
||||
Creature* target = kuma->getSearchedTarget();
|
||||
if (target) {
|
||||
// more nonsense going on in here than this
|
||||
f32 dist = kuma->turnToTargetNishi(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
f32 dist = kuma->turnToTarget(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
|
||||
// this isn't the comparison, probably a bool spat out from an inline
|
||||
if (FABS(dist) <= CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue) {
|
||||
@ -888,8 +888,8 @@ void StateFlick::exec(EnemyBase* enemy)
|
||||
Creature* target = kuma->getSearchedTarget();
|
||||
if (target) {
|
||||
// more nonsense going on in here than this
|
||||
f32 dist = kuma->turnToTargetNishi(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
f32 dist = kuma->turnToTarget(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
|
||||
// this isn't the comparison, probably a bool spat out from an inline
|
||||
if (FABS(dist) <= CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue) {
|
||||
@ -1293,8 +1293,8 @@ void StateWalk::exec(EnemyBase* enemy)
|
||||
Creature* target = kuma->getSearchedTarget();
|
||||
if (target) {
|
||||
// more nonsense going on in here than this
|
||||
f32 dist = kuma->turnToTargetNishi(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
f32 dist = kuma->turnToTarget(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
|
||||
// this isn't the comparison, probably a bool spat out from an inline
|
||||
if (FABS(dist) <= CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue) {
|
||||
@ -1749,12 +1749,10 @@ void StateWalkPath::exec(EnemyBase* enemy)
|
||||
|
||||
Creature* target = kuma->getSearchedTarget();
|
||||
if (target) {
|
||||
// more nonsense going on in here than this
|
||||
f32 dist = kuma->turnToTargetNishi(target, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
|
||||
// this isn't the comparison, probably a bool spat out from an inline
|
||||
if (FABS(dist) <= CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue) {
|
||||
f32 minRange = *CG_PARMS(kuma)->mGeneral.mMinAttackRange();
|
||||
f32 maxRange = *CG_PARMS(kuma)->mGeneral.mMaxAttackRange();
|
||||
f32 dist = kuma->getAngDist(target);
|
||||
if (kuma->checkDistAndAngle(target, dist, minRange, maxRange)) {
|
||||
kuma->mNextState = KUMAKOCHAPPY_Attack;
|
||||
kuma->finishMotion();
|
||||
kuma->setAnimSpeed(60.0f);
|
||||
@ -1771,8 +1769,8 @@ void StateWalkPath::exec(EnemyBase* enemy)
|
||||
kuma->mNextState = KUMAKOCHAPPY_Wait;
|
||||
kuma->finishMotion();
|
||||
} else {
|
||||
f32 dist = kuma->turnToTarget2(*parentPos, CG_PARMS(kuma)->mGeneral.mRotationalSpeed.mValue,
|
||||
CG_PARMS(kuma)->mGeneral.mRotationalAccel.mValue);
|
||||
f32 dist = kuma->turnToTarget(*parentPos, *CG_PARMS(kuma)->mGeneral.mRotationalAccel(),
|
||||
*CG_PARMS(kuma)->mGeneral.mRotationalSpeed());
|
||||
}
|
||||
} else {
|
||||
kuma->mNextState = KUMAKOCHAPPY_Wait;
|
||||
|
@ -288,7 +288,7 @@ void StateMove::exec(EnemyBase* enemy)
|
||||
|
||||
uji->mFaceDir = roundAng(turnSpeed + uji->getFaceDir());
|
||||
uji->mRotation.y = uji->mFaceDir;
|
||||
// uji->turnToTargetNishi(target, CG_PARMS(uji)->mGeneral.mRotationalAccel.mValue,
|
||||
// uji->turnToTarget(target, CG_PARMS(uji)->mGeneral.mRotationalAccel.mValue,
|
||||
// CG_PARMS(uji)->mGeneral.mRotationalSpeed.mValue); uji->changeFaceDir(target);
|
||||
f32 speed = CG_PARMS(uji)->mGeneral.mMoveSpeed.mValue;
|
||||
|
||||
|
@ -281,7 +281,7 @@ void StateMove::exec(EnemyBase* enemy)
|
||||
|
||||
uji->mFaceDir = roundAng(turnSpeed + uji->getFaceDir());
|
||||
uji->mRotation.y = uji->mFaceDir;
|
||||
// uji->turnToTargetNishi(target, CG_PARMS(uji)->mGeneral.mRotationalAccel.mValue, CG_PARMS(uji)->mGeneral.mRotationalSpeed.mValue);
|
||||
// uji->turnToTarget(target, CG_PARMS(uji)->mGeneral.mRotationalAccel.mValue, CG_PARMS(uji)->mGeneral.mRotationalSpeed.mValue);
|
||||
// uji->changeFaceDir(target);
|
||||
f32 speed = CG_PARMS(uji)->mGeneral.mMoveSpeed.mValue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user