mirror of
https://github.com/projectPiki/pikmin2.git
synced 2025-02-17 12:27:28 +00:00
Do InteractBattle.cpp
This commit is contained in:
parent
bacbbeeda3
commit
c22dd7b53f
@ -69,6 +69,7 @@ pikmin2.usa.dol: `sha1: 90d328bf8f190c90472e8c19e7e53c6ad0fe0d1a`
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gameHighscore.cpp">plugProjectKandoU/gameHighscore.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gameIconTexture.cpp">plugProjectKandoU/gameIconTexture.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gameSoundEvent.cpp">plugProjectKandoU/gameSoundEvent.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/interactBattle.cpp">plugProjectKandoU/interactBattle.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/kandoLib.cpp">plugProjectKandoU/kandoLib.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/objectTypes.cpp">plugProjectKandoU/objectTypes.cpp</a>
|
||||
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/pelletCarry.cpp">plugProjectKandoU/pelletCarry.cpp</a>
|
||||
|
@ -1,111 +0,0 @@
|
||||
.include "macros.inc"
|
||||
.section .data, "wa" # 0x8049E220 - 0x804EFC20
|
||||
.balign 0x8
|
||||
.global __vt__Q24Game12InteractKill
|
||||
__vt__Q24Game12InteractKill:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game12InteractKillFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game12InteractKillFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game11InteractionFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
|
||||
.global __vt__Q24Game15InteractSwallow
|
||||
__vt__Q24Game15InteractSwallow:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game15InteractSwallowFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game15InteractSwallowFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
|
||||
.global __vt__Q24Game14InteractAttack
|
||||
__vt__Q24Game14InteractAttack:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game14InteractAttackFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game11InteractionFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
|
||||
.global __vt__Q24Game13InteractFlick
|
||||
__vt__Q24Game13InteractFlick:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game13InteractFlickFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game13InteractFlickFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game13InteractFlickFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
|
||||
|
||||
.section .text, "ax" # 0x800056C0 - 0x80472F00
|
||||
.global actCommon__Q24Game13InteractFlickFPQ24Game8Creature
|
||||
actCommon__Q24Game13InteractFlickFPQ24Game8Creature:
|
||||
/* 8019FE78 0019CDB8 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 8019FE7C 0019CDBC 7C 08 02 A6 */ mflr r0
|
||||
/* 8019FE80 0019CDC0 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8019FE84 0019CDC4 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 8019FE88 0019CDC8 7C 9F 23 78 */ mr r31, r4
|
||||
/* 8019FE8C 0019CDCC 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8019FE90 0019CDD0 4B FF F6 E5 */ bl isStickTo__Q24Game8CreatureFv
|
||||
/* 8019FE94 0019CDD4 54 60 06 3F */ clrlwi. r0, r3, 0x18
|
||||
/* 8019FE98 0019CDD8 41 82 00 0C */ beq lbl_8019FEA4
|
||||
/* 8019FE9C 0019CDDC 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8019FEA0 0019CDE0 4B FF F5 85 */ bl endStick__Q24Game8CreatureFv
|
||||
lbl_8019FEA4:
|
||||
/* 8019FEA4 0019CDE4 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8019FEA8 0019CDE8 38 60 00 01 */ li r3, 1
|
||||
/* 8019FEAC 0019CDEC 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 8019FEB0 0019CDF0 7C 08 03 A6 */ mtlr r0
|
||||
/* 8019FEB4 0019CDF4 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8019FEB8 0019CDF8 4E 80 00 20 */ blr
|
||||
|
||||
.global actCommon__Q24Game14InteractAttackFPQ24Game8Creature
|
||||
actCommon__Q24Game14InteractAttackFPQ24Game8Creature:
|
||||
/* 8019FEBC 0019CDFC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 8019FEC0 0019CE00 7C 08 02 A6 */ mflr r0
|
||||
/* 8019FEC4 0019CE04 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8019FEC8 0019CE08 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 8019FECC 0019CE0C 7C 9F 23 78 */ mr r31, r4
|
||||
/* 8019FED0 0019CE10 80 63 00 04 */ lwz r3, 4(r3)
|
||||
/* 8019FED4 0019CE14 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 8019FED8 0019CE18 81 8C 00 1C */ lwz r12, 0x1c(r12)
|
||||
/* 8019FEDC 0019CE1C 7D 89 03 A6 */ mtctr r12
|
||||
/* 8019FEE0 0019CE20 4E 80 04 21 */ bctrl
|
||||
/* 8019FEE4 0019CE24 54 60 06 3F */ clrlwi. r0, r3, 0x18
|
||||
/* 8019FEE8 0019CE28 41 82 00 28 */ beq lbl_8019FF10
|
||||
/* 8019FEEC 0019CE2C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8019FEF0 0019CE30 81 9F 00 00 */ lwz r12, 0(r31)
|
||||
/* 8019FEF4 0019CE34 81 8C 00 7C */ lwz r12, 0x7c(r12)
|
||||
/* 8019FEF8 0019CE38 7D 89 03 A6 */ mtctr r12
|
||||
/* 8019FEFC 0019CE3C 4E 80 04 21 */ bctrl
|
||||
/* 8019FF00 0019CE40 54 60 06 3F */ clrlwi. r0, r3, 0x18
|
||||
/* 8019FF04 0019CE44 40 82 00 0C */ bne lbl_8019FF10
|
||||
/* 8019FF08 0019CE48 38 60 00 00 */ li r3, 0
|
||||
/* 8019FF0C 0019CE4C 48 00 00 08 */ b lbl_8019FF14
|
||||
lbl_8019FF10:
|
||||
/* 8019FF10 0019CE50 38 60 00 01 */ li r3, 1
|
||||
lbl_8019FF14:
|
||||
/* 8019FF14 0019CE54 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8019FF18 0019CE58 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 8019FF1C 0019CE5C 7C 08 03 A6 */ mtlr r0
|
||||
/* 8019FF20 0019CE60 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8019FF24 0019CE64 4E 80 00 20 */ blr
|
||||
|
||||
.global actCommon__Q24Game15InteractSwallowFPQ24Game8Creature
|
||||
actCommon__Q24Game15InteractSwallowFPQ24Game8Creature:
|
||||
/* 8019FF28 0019CE68 38 60 00 01 */ li r3, 1
|
||||
/* 8019FF2C 0019CE6C 4E 80 00 20 */ blr
|
||||
|
||||
.global actCommon__Q24Game12InteractKillFPQ24Game8Creature
|
||||
actCommon__Q24Game12InteractKillFPQ24Game8Creature:
|
||||
/* 8019FF30 0019CE70 38 60 00 01 */ li r3, 1
|
||||
/* 8019FF34 0019CE74 4E 80 00 20 */ blr
|
@ -66,112 +66,103 @@ struct Creature : public CellObject {
|
||||
|
||||
Creature();
|
||||
|
||||
virtual Vector3f getPosition() = 0; // _00
|
||||
virtual void checkCollision(CellObject*); // _04
|
||||
virtual void getBoundingSphere(Sys::Sphere&) = 0; // _08
|
||||
virtual bool collisionUpdatable(); // _0C
|
||||
virtual bool isPiki(); // _10
|
||||
virtual bool isNavi(); // _14
|
||||
virtual bool deferPikiCollision(); // _18
|
||||
virtual char* getTypeName(); // _1C
|
||||
virtual u8 getObjType(); // _20
|
||||
virtual void constructor(); // _24
|
||||
virtual void onInit(CreatureInitArg*); // _28
|
||||
virtual void onKill(CreatureKillArg*); // _2C
|
||||
virtual void onInitPost(CreatureInitArg*); // _30
|
||||
virtual void doAnimation(); // _34
|
||||
virtual void doEntry(); // _38
|
||||
virtual void doSetView(int); // _3C
|
||||
virtual void doViewCalc(); // _40
|
||||
virtual void doSimulation(float); // _44
|
||||
virtual void doDirectDraw(Graphics&); // _48
|
||||
virtual float getBodyRadius(); // _4C
|
||||
virtual float getCellRadius(); // _50
|
||||
virtual void initPosition(Vector3f&); // _54
|
||||
virtual void onInitPosition(Vector3f&); // _58
|
||||
virtual float getFaceDir() = 0; // _5C
|
||||
virtual void setVelocity(Vector3f&) = 0; // _60
|
||||
virtual Vector3f getVelocity() = 0; // _64
|
||||
virtual void onSetPosition(Vector3f&) = 0; // _68
|
||||
virtual void onSetPositionPost(Vector3f&); // _6C
|
||||
virtual void updateTrMatrix() = 0; // _70
|
||||
virtual bool isTeki(); // _74
|
||||
virtual bool isPellet(); // _78
|
||||
virtual void inWaterCallback(WaterBox*); // _7C
|
||||
virtual void outWaterCallback(); // _80
|
||||
virtual bool inWater(); // _84
|
||||
virtual void getFlockMgr(); // _88
|
||||
virtual void onStartCapture(); // _8C
|
||||
virtual void onUpdateCapture(Matrixf&); // _90
|
||||
virtual void onEndCapture(); // _94
|
||||
virtual bool isAtari(); // _98
|
||||
virtual void setAtari(bool); // _9C
|
||||
virtual bool isAlive(); // _A0
|
||||
virtual void setAlive(bool); // _A4
|
||||
virtual bool isCollisionFlick(); // _A8
|
||||
virtual void setCollisionFlick(bool); // _AC
|
||||
virtual bool isMovieActor(); // _B0
|
||||
virtual bool isMovieExtra(); // _B4
|
||||
virtual bool isMovieMotion(); // _B8
|
||||
virtual void setMovieMotion(bool); // _BC
|
||||
virtual bool isBuried(); // _C0
|
||||
virtual bool isFlying(); // _C4
|
||||
virtual bool isUnderground(); // _C8
|
||||
virtual bool isLivingThing(); // _CC
|
||||
virtual bool isDebugCollision(); // _D0
|
||||
virtual void setDebugCollision(bool); // _D4
|
||||
virtual void doSave(Stream&); // _D8
|
||||
virtual void doLoad(Stream&); // _DC
|
||||
virtual void bounceCallback(Sys::Triangle*); // _E0
|
||||
virtual void collisionCallback(CollEvent&); // _E4
|
||||
virtual void platCallback(PlatEvent&); // _E8
|
||||
virtual void getJAIObject(); // _EC
|
||||
virtual PSM::Creature* getPSCreature(); // _F0
|
||||
virtual void getSound_AILOD(); // _F4
|
||||
virtual Vector3f* getSound_PosPtr(); // _F8
|
||||
virtual bool sound_culling(); // _FC
|
||||
virtual float getSound_CurrAnimFrame(); // _100
|
||||
virtual float getSound_CurrAnimSpeed(); // _104
|
||||
virtual void on_movie_begin(bool); // _108
|
||||
virtual void on_movie_end(bool); // _10C
|
||||
virtual void movieStartAnimation(ulong); // _110
|
||||
virtual void movieStartDemoAnimation(SysShape::AnimInfo*); // _114
|
||||
virtual void movieSetAnimationLastFrame(); // _118
|
||||
virtual void movieSetTranslation(Vector3f&, float); // _11C
|
||||
virtual void movieSetFaceDir(float); // _120
|
||||
virtual bool movieGotoPosition(Vector3f&); // _124
|
||||
virtual void movieUserCommand(ulong, MoviePlayer*); // _128
|
||||
virtual void getShadowParam(ShadowParam&); // _12C
|
||||
virtual bool needShadow(); // _130
|
||||
virtual void getLifeGaugeParam(LifeGaugeParam&); // _134
|
||||
virtual void getLODSphere(Sys::Sphere&); // _138
|
||||
virtual void getLODCylinder(Sys::Cylinder&); // _13C
|
||||
virtual void startPick(); // _140
|
||||
virtual void endPick(bool); // _144
|
||||
virtual u32* getMabiki(); // _148
|
||||
virtual Footmarks* getFootmarks(); // _14C
|
||||
virtual void onStickStart(Creature*); // _150
|
||||
virtual void onStickEnd(Creature*); // _154
|
||||
virtual void onStickStartSelf(Creature*); // _158
|
||||
virtual void onStickEndSelf(Creature*); // _15C
|
||||
virtual bool isSlotFree(short); // _160
|
||||
virtual int getFreeStickSlot(); // _164
|
||||
virtual int getNearFreeStickSlot(Vector3f&); // _168
|
||||
virtual int getRandomFreeStickSlot(); // _16C
|
||||
virtual void onSlotStickStart(Creature*, short); // _170
|
||||
virtual void onSlotStickEnd(Creature*, short); // _174
|
||||
virtual void calcStickSlotGlobal(short, Vector3f&); // _178
|
||||
virtual void getVelocityAt(Vector3f&, Vector3f&) = 0; // _17C
|
||||
virtual void getAngularEffect(Vector3f&, Vector3f&); // _180
|
||||
virtual void applyImpulse(Vector3f&, Vector3f&); // _184
|
||||
virtual bool ignoreAtari(Creature*); // _188
|
||||
virtual void getSuckPos(); // _18C
|
||||
virtual void getGoalPos(); // _190
|
||||
virtual bool isSuckReady(); // _194
|
||||
virtual bool isSuckArriveWait(); // _198
|
||||
virtual void stimulate(Interaction&); // _19C
|
||||
virtual char* getCreatureName(); // _1A0
|
||||
virtual s32 getCreatureID(); // _1A4
|
||||
virtual void constructor(); // _2C
|
||||
virtual void onInit(CreatureInitArg*); // _30
|
||||
virtual void onKill(CreatureKillArg*); // _34
|
||||
virtual void onInitPost(CreatureInitArg*); // _38
|
||||
virtual void doAnimation(); // _3C
|
||||
virtual void doEntry(); // _40
|
||||
virtual void doSetView(int); // _44
|
||||
virtual void doViewCalc(); // _48
|
||||
virtual void doSimulation(float); // _4C
|
||||
virtual void doDirectDraw(Graphics&); // _50
|
||||
virtual float getBodyRadius(); // _54
|
||||
virtual float getCellRadius(); // _58
|
||||
virtual void initPosition(Vector3f&); // _5C
|
||||
virtual void onInitPosition(Vector3f&); // _60
|
||||
virtual float getFaceDir() = 0; // _64
|
||||
virtual void setVelocity(Vector3f&) = 0; // _68
|
||||
virtual Vector3f getVelocity() = 0; // _6C
|
||||
virtual void onSetPosition(Vector3f&) = 0; // _70
|
||||
virtual void onSetPositionPost(Vector3f&); // _74
|
||||
virtual void updateTrMatrix() = 0; // _78
|
||||
virtual bool isTeki(); // _7C
|
||||
virtual bool isPellet(); // _80
|
||||
virtual void inWaterCallback(WaterBox*); // _84
|
||||
virtual void outWaterCallback(); // _88
|
||||
virtual bool inWater(); // _8C
|
||||
virtual void getFlockMgr(); // _90
|
||||
virtual void onStartCapture(); // _94
|
||||
virtual void onUpdateCapture(Matrixf&); // _98
|
||||
virtual void onEndCapture(); // _9C
|
||||
virtual bool isAtari(); // _A0
|
||||
virtual void setAtari(bool); // _A4
|
||||
virtual bool isAlive(); // _A8
|
||||
virtual void setAlive(bool); // _AC
|
||||
virtual bool isCollisionFlick(); // _B0
|
||||
virtual void setCollisionFlick(bool); // TODO: Write the rest
|
||||
virtual bool isMovieActor();
|
||||
virtual bool isMovieExtra();
|
||||
virtual bool isMovieMotion();
|
||||
virtual void setMovieMotion(bool);
|
||||
virtual bool isBuried();
|
||||
virtual bool isFlying();
|
||||
virtual bool isUnderground();
|
||||
virtual bool isLivingThing();
|
||||
virtual bool isDebugCollision();
|
||||
virtual void setDebugCollision(bool);
|
||||
virtual void doSave(Stream&);
|
||||
virtual void doLoad(Stream&);
|
||||
virtual void bounceCallback(Sys::Triangle*);
|
||||
virtual void collisionCallback(CollEvent&);
|
||||
virtual void platCallback(PlatEvent&);
|
||||
virtual void getJAIObject();
|
||||
virtual PSM::Creature* getPSCreature();
|
||||
virtual void getSound_AILOD();
|
||||
virtual Vector3f* getSound_PosPtr();
|
||||
virtual bool sound_culling();
|
||||
virtual float getSound_CurrAnimFrame();
|
||||
virtual float getSound_CurrAnimSpeed();
|
||||
virtual void on_movie_begin(bool);
|
||||
virtual void on_movie_end(bool);
|
||||
virtual void movieStartAnimation(ulong);
|
||||
virtual void movieStartDemoAnimation(SysShape::AnimInfo*);
|
||||
virtual void movieSetAnimationLastFrame();
|
||||
virtual void movieSetTranslation(Vector3f&, float);
|
||||
virtual void movieSetFaceDir(float);
|
||||
virtual bool movieGotoPosition(Vector3f&);
|
||||
virtual void movieUserCommand(ulong, MoviePlayer*);
|
||||
virtual void getShadowParam(ShadowParam&);
|
||||
virtual bool needShadow();
|
||||
virtual void getLifeGaugeParam(LifeGaugeParam&);
|
||||
virtual void getLODSphere(Sys::Sphere&);
|
||||
virtual void getLODCylinder(Sys::Cylinder&);
|
||||
virtual void startPick();
|
||||
virtual void endPick(bool);
|
||||
virtual u32* getMabiki();
|
||||
virtual Footmarks* getFootmarks();
|
||||
virtual void onStickStart(Creature*);
|
||||
virtual void onStickEnd(Creature*);
|
||||
virtual void onStickStartSelf(Creature*);
|
||||
virtual void onStickEndSelf(Creature*);
|
||||
virtual bool isSlotFree(short);
|
||||
virtual int getFreeStickSlot();
|
||||
virtual int getNearFreeStickSlot(Vector3f&);
|
||||
virtual int getRandomFreeStickSlot();
|
||||
virtual void onSlotStickStart(Creature*, short);
|
||||
virtual void onSlotStickEnd(Creature*, short);
|
||||
virtual void calcStickSlotGlobal(short, Vector3f&);
|
||||
virtual void getVelocityAt(Vector3f&, Vector3f&) = 0;
|
||||
virtual void getAngularEffect(Vector3f&, Vector3f&);
|
||||
virtual void applyImpulse(Vector3f&, Vector3f&);
|
||||
virtual bool ignoreAtari(Creature*);
|
||||
virtual void getSuckPos();
|
||||
virtual void getGoalPos();
|
||||
virtual bool isSuckReady();
|
||||
virtual bool isSuckArriveWait();
|
||||
virtual void stimulate(Interaction&);
|
||||
virtual char* getCreatureName();
|
||||
virtual s32 getCreatureID();
|
||||
|
||||
void applyAirDrag(float, float, float);
|
||||
void calcSphereDistance(Game::Creature*);
|
||||
@ -201,6 +192,7 @@ struct Creature : public CellObject {
|
||||
void updateCell();
|
||||
void updateLOD(Game::AILODParm&);
|
||||
void updateStick(Vector3f&);
|
||||
bool isStickTo();
|
||||
|
||||
Matrixf* m_captureMatrix; // _0B8
|
||||
union {
|
||||
|
@ -1,51 +0,0 @@
|
||||
#ifndef _GAME_INTERACTBATTLE_H
|
||||
#define _GAME_INTERACTBATTLE_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace Game {
|
||||
struct Piki;
|
||||
struct Navi;
|
||||
struct EnemyBase;
|
||||
struct Pellet;
|
||||
struct Onyon;
|
||||
struct BaseItem;
|
||||
struct Creature;
|
||||
|
||||
struct Interaction__vt {
|
||||
void* pointer;
|
||||
void* pointer2;
|
||||
bool (*actCommon)(void*, void*);
|
||||
bool (*actPiki)(void*, Piki*);
|
||||
bool (*actNavi)(void*, Navi*);
|
||||
bool (*actEnemy)(void*, EnemyBase*);
|
||||
bool (*actPellet)(void*, Pellet*);
|
||||
bool (*actOnyon)(void*, Onyon*);
|
||||
bool (*actItem)(void*, BaseItem*);
|
||||
};
|
||||
|
||||
struct InteractFlick {
|
||||
bool actCommon(Creature*);
|
||||
bool actNavi(Navi*);
|
||||
bool actPiki(Piki*);
|
||||
|
||||
Interaction__vt* m_vtbl; // _00
|
||||
Creature* m_creature; // _04
|
||||
f32 m_knockback; // _08
|
||||
f32 m_damage; // _0C
|
||||
f32 _10; // _10
|
||||
};
|
||||
|
||||
struct InteractAttack {
|
||||
bool actCommon(Creature*);
|
||||
bool actNavi(Navi*);
|
||||
bool actEnemy(EnemyBase*);
|
||||
bool actItem(BaseItem*);
|
||||
|
||||
Interaction__vt* m_vtbl; // _00
|
||||
Creature* m_creature; // _04
|
||||
f32 _08; // _08
|
||||
f32 _0C; // _0C
|
||||
};
|
||||
} // namespace Game
|
||||
#endif
|
@ -1,23 +0,0 @@
|
||||
#ifndef _GAME_INTERACTDOPE_H
|
||||
#define _GAME_INTERACTDOPE_H
|
||||
|
||||
#include "types.h"
|
||||
#include "Game/Interaction.h"
|
||||
|
||||
namespace Game {
|
||||
struct InteractDope : public Interaction {
|
||||
virtual bool actCommon(Creature*); // _00
|
||||
virtual bool actPiki(Piki*); // _04
|
||||
virtual bool actNavi(Navi*); // _08
|
||||
virtual bool actEnemy(EnemyBase*); // _0C
|
||||
virtual bool actPellet(Pellet*); // _10
|
||||
virtual bool actOnyon(Onyon*); // _14
|
||||
virtual bool actItem(BaseItem*); // _18
|
||||
|
||||
// _00 VTBL
|
||||
Creature* m_creature; // _04
|
||||
s32 _08;
|
||||
};
|
||||
} // namespace Game
|
||||
|
||||
#endif
|
@ -15,6 +15,55 @@ struct Interaction {
|
||||
|
||||
// _00 VTBL
|
||||
};
|
||||
|
||||
struct InteractFlick : public Interaction {
|
||||
virtual bool actCommon(Creature*);
|
||||
virtual bool actPiki(Piki*);
|
||||
virtual bool actNavi(Navi*);
|
||||
|
||||
// _00 VTBL
|
||||
Creature* m_creature; // _04
|
||||
f32 m_knockback; // _08
|
||||
f32 m_damage; // _0C
|
||||
f32 _10; // _10
|
||||
};
|
||||
|
||||
struct InteractAttack : public Interaction {
|
||||
virtual bool actCommon(Creature*);
|
||||
virtual bool actNavi(Navi*);
|
||||
virtual bool actEnemy(EnemyBase*);
|
||||
virtual bool actItem(BaseItem*);
|
||||
|
||||
// _00 VTBL
|
||||
Creature* m_creature; // _04
|
||||
f32 _08; // _08
|
||||
f32 _0C; // _0C
|
||||
};
|
||||
|
||||
struct InteractDope : public Interaction {
|
||||
virtual bool actPiki(Piki*); // _04
|
||||
virtual bool actEnemy(EnemyBase*); // _0C
|
||||
|
||||
// _00 VTBL
|
||||
Creature* m_creature; // _04
|
||||
s32 _08;
|
||||
};
|
||||
|
||||
struct InteractSwallow : public InteractAttack {
|
||||
virtual bool actCommon(Creature*);
|
||||
virtual bool actPiki(Piki*);
|
||||
|
||||
// _00 VTBL
|
||||
Creature* m_creature; // _04
|
||||
};
|
||||
|
||||
struct InteractKill : public Interaction {
|
||||
virtual bool actCommon(Creature*);
|
||||
virtual bool actPiki(Piki*);
|
||||
|
||||
// _00 VTBL
|
||||
Creature* m_creature; // _04
|
||||
};
|
||||
} // namespace Game
|
||||
|
||||
#endif
|
||||
|
@ -514,7 +514,7 @@ KANDO:=\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/aiPrimitives.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/aiFormation.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/creatureStick.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/interactBattle.o\
|
||||
$(BUILD_DIR)/src/plugProjectKandoU/interactBattle.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/aiFree.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/aiAttack.o\
|
||||
$(BUILD_DIR)/asm/plugProjectKandoU/aiTransport.o\
|
||||
|
@ -1,140 +1,49 @@
|
||||
#include "Game/InteractBattle.h"
|
||||
#include "Game/Interaction.h"
|
||||
#include "Game/Creature.h"
|
||||
#include "types.h"
|
||||
|
||||
/*
|
||||
Generated from dpostproc
|
||||
|
||||
.section .data, "wa" # 0x8049E220 - 0x804EFC20
|
||||
.global __vt__Q24Game12InteractKill
|
||||
__vt__Q24Game12InteractKill:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game12InteractKillFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game12InteractKillFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game11InteractionFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
|
||||
.global __vt__Q24Game15InteractSwallow
|
||||
__vt__Q24Game15InteractSwallow:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game15InteractSwallowFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game15InteractSwallowFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
|
||||
.global __vt__Q24Game14InteractAttack
|
||||
__vt__Q24Game14InteractAttack:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game14InteractAttackFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game11InteractionFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
|
||||
.global __vt__Q24Game13InteractFlick
|
||||
__vt__Q24Game13InteractFlick:
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
.4byte actCommon__Q24Game13InteractFlickFPQ24Game8Creature
|
||||
.4byte actPiki__Q24Game13InteractFlickFPQ24Game4Piki
|
||||
.4byte actNavi__Q24Game13InteractFlickFPQ24Game4Navi
|
||||
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
|
||||
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
|
||||
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
|
||||
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
|
||||
*/
|
||||
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 8019FE78
|
||||
* Size: 000044
|
||||
*/
|
||||
namespace Game {
|
||||
bool InteractFlick::actCommon(Creature* param_1)
|
||||
bool InteractFlick::actCommon(Creature* creature)
|
||||
{
|
||||
if (param_1->isStickTo()) {
|
||||
param_1->endStick();
|
||||
// On flick, we unstick and get sent flying away. Weeeee.
|
||||
if (creature->isStickTo()) {
|
||||
creature->endStick();
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
///*
|
||||
// * --INFO--
|
||||
// * Address: 8019FEBC
|
||||
// * Size: 00006C
|
||||
// */
|
||||
// void Game::InteractAttack::actCommon(Game::Creature*)
|
||||
//{
|
||||
// /*
|
||||
// .loc_0x0:
|
||||
// stwu r1, -0x10(r1)
|
||||
// mflr r0
|
||||
// stw r0, 0x14(r1)
|
||||
// stw r31, 0xC(r1)
|
||||
// mr r31, r4
|
||||
// lwz r3, 0x4(r3)
|
||||
// lwz r12, 0x0(r3)
|
||||
// lwz r12, 0x1C(r12)
|
||||
// mtctr r12
|
||||
// bctrl
|
||||
// rlwinm. r0,r3,0,24,31
|
||||
// beq- .loc_0x54
|
||||
// mr r3, r31
|
||||
// lwz r12, 0x0(r31)
|
||||
// lwz r12, 0x7C(r12)
|
||||
// mtctr r12
|
||||
// bctrl
|
||||
// rlwinm. r0,r3,0,24,31
|
||||
// bne- .loc_0x54
|
||||
// li r3, 0
|
||||
// b .loc_0x58
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 8019FEBC
|
||||
* Size: 00006C
|
||||
*/
|
||||
bool InteractAttack::actCommon(Creature* creature)
|
||||
{
|
||||
// If anything other than a teki tries to attack the navi, don't register
|
||||
if (m_creature->isNavi() && !creature->isTeki()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// .loc_0x54:
|
||||
// li r3, 0x1
|
||||
return true;
|
||||
}
|
||||
|
||||
// .loc_0x58:
|
||||
// lwz r0, 0x14(r1)
|
||||
// lwz r31, 0xC(r1)
|
||||
// mtlr r0
|
||||
// addi r1, r1, 0x10
|
||||
// blr
|
||||
// */
|
||||
//}
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 8019FF28
|
||||
* Size: 000008
|
||||
*/
|
||||
bool InteractSwallow::actCommon(Game::Creature* creature) { return true; }
|
||||
|
||||
///*
|
||||
// * --INFO--
|
||||
// * Address: 8019FF28
|
||||
// * Size: 000008
|
||||
// */
|
||||
// void Game::InteractSwallow::actCommon(Game::Creature*)
|
||||
//{
|
||||
// /*
|
||||
// .loc_0x0:
|
||||
// li r3, 0x1
|
||||
// blr
|
||||
// */
|
||||
//}
|
||||
|
||||
///*
|
||||
// * --INFO--
|
||||
// * Address: 8019FF30
|
||||
// * Size: 000008
|
||||
// */
|
||||
// void Game::InteractKill::actCommon(Game::Creature*)
|
||||
//{
|
||||
// /*
|
||||
// .loc_0x0:
|
||||
// li r3, 0x1
|
||||
// blr
|
||||
// */
|
||||
//}
|
||||
/*
|
||||
* --INFO--
|
||||
* Address: 8019FF30
|
||||
* Size: 000008
|
||||
*/
|
||||
bool InteractKill::actCommon(Game::Creature* creature) { return true; }
|
||||
}; // namespace Game
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "Game/InteractFarmKarero.h"
|
||||
#include "Game/InteractFarmHaero.h"
|
||||
#include "Game/InteractDope.h"
|
||||
#include "Game/Interaction.h"
|
||||
#include "Game/EnemyBase.h"
|
||||
|
||||
namespace Game {
|
||||
|
Loading…
x
Reference in New Issue
Block a user