OdysseyDecomp/lib/al/include/Library/LiveActor/LiveActor.h
MonsterDruide1 69d81ebd91
Custom format validation (Linting) (#17)
* Add script to verify formatting
* Add newline to end of files
* Add `#pragma once` to top of headers
* Add own header to includes at top of source files
* Remove useless namespace qualifiers
* Sort visibility modifiers correctly
* Format `#include`s in three blocks
* Remove `;` after namespaces
* Add for custom style checking to `lint`-GitHub-Action
* Format: No "// 0x" offset comments
* Remove macros from padding
2024-01-07 00:33:09 +01:00

157 lines
5.9 KiB
C++
Executable file

#pragma once
#include <math/seadMatrix.h>
#include "Library/Area/IUseAreaObj.h"
#include "Library/Audio/IUseAudioKeeper.h"
#include "Library/Camera/IUseCamera.h"
#include "Library/Collision/IUseCollision.h"
#include "Library/Effect/IUseEffectKeeper.h"
#include "Library/HostIO/HioNode.h"
#include "Library/Nerve/IUseNerve.h"
#include "Library/Rail/IUseRail.h"
#include "Library/Scene/IUseSceneObjHolder.h"
#include "Library/Stage/IUseStageSwitch.h"
namespace al {
class ActorPoseKeeperBase;
class ActorExecuteInfo;
class ActorActionKeeper;
class ActorItemKeeper;
class ActorScoreKeeper;
class Collider;
class CollisionParts;
class ModelKeeper;
class NerveKeeper;
class HitSensorKeeper;
class ScreenPointKeeper;
class EffectKeeper;
class AudioKeeper;
class HitReactionKeeper;
class StageSwitchKeeper;
class RailKeeper;
class ShadowKeeper;
class ActorPrePassLightKeeper;
class ActorOcclusionKeeper;
class SubActorKeeper;
class ActorParamHolder;
struct ActorSceneInfo;
struct LiveActorFlag;
class ActorInitInfo;
class HitSensor;
class SensorMsg;
class ScreenPointer;
class ScreenPointTarget;
class LiveActor : public IUseNerve,
public IUseEffectKeeper,
public IUseAudioKeeper,
public IUseStageSwitch,
public IUseSceneObjHolder,
public IUseAreaObj,
public IUseCamera,
public IUseCollision,
public IUseRail,
public IUseHioNode {
friend class alActorFunction;
public:
LiveActor(const char* actorName);
NerveKeeper* getNerveKeeper() const override;
virtual void init(const ActorInitInfo& info);
virtual void initAfterPlacement();
virtual void appear();
virtual void makeActorAlive();
virtual void kill();
virtual void makeActorDead();
virtual void movement();
virtual void calcAnim();
virtual void draw() const;
virtual void startClipped();
virtual void endClipped();
virtual void attackSensor(HitSensor* target, HitSensor* source);
virtual bool receiveMsg(const SensorMsg* message, HitSensor* source, HitSensor* target);
virtual bool receiveMsgScreenPoint(const SensorMsg*, ScreenPointer*, ScreenPointTarget*);
virtual const char* getName() const override;
virtual sead::Matrix34f* getBaseMtx() const;
virtual EffectKeeper* getEffectKeeper() const override;
virtual AudioKeeper* getAudioKeeper() const override;
virtual StageSwitchKeeper* getStageSwitchKeeper() const override;
virtual RailRider* getRailRider() const override;
virtual SceneObjHolder* getSceneObjHolder() const override;
virtual CollisionDirector* getCollisionDirector() const override;
virtual AreaObjDirector* getAreaObjDirector() const override;
virtual CameraDirector* getCameraDirector() const override;
virtual void initStageSwitchKeeper() override;
virtual void control();
virtual void updateCollider();
ActorSceneInfo* getSceneInfo() const;
void initPoseKeeper(ActorPoseKeeperBase*);
void initExecuteInfo(ActorExecuteInfo*);
void initModelKeeper(ModelKeeper*);
void initActionKeeper(ActorActionKeeper*);
void initNerveKeeper(NerveKeeper*);
void initHitSensor(s32);
void initScreenPointKeeper(ScreenPointKeeper*);
void initEffectKeeper(EffectKeeper*);
void initAudioKeeper(AudioKeeper*);
void initRailKeeper(const ActorInitInfo&, const char*);
void initCollider(f32, f32, u32);
void initItemKeeper(s32);
void initScoreKeeper();
void initActorPrePassLightKeeper(ActorPrePassLightKeeper*);
void initActorOcclusionKeeper(ActorOcclusionKeeper*);
void initSubActorKeeper(SubActorKeeper*);
void initSceneInfo(ActorSceneInfo*);
LiveActorFlag* getFlags() const { return mFlags; }
ModelKeeper* getModelKeeper() const { return mModelKeeper; }
ActorPoseKeeperBase* getPoseKeeper() const { return mPoseKeeper; }
ActorExecuteInfo* getExecuteInfo() const { return mExecuteInfo; }
ActorActionKeeper* getActorActionKeeper() const { return mActorActionKeeper; }
ActorItemKeeper* getActorItemKeeper() const { return mActorItemKeeper; }
ActorScoreKeeper* getActorScoreKeeper() const { return mActorScoreKeeper; }
Collider* getCollider() const { return mCollider; }
CollisionParts* getCollisionParts() const { return mCollisionParts; }
HitSensorKeeper* getHitSensorKeeper() const { return mHitSensorKeeper; }
ScreenPointKeeper* getScreenPointKeeper() const { return mScreenPointKeeper; }
HitReactionKeeper* getHitReactionKeeper() const { return mHitReactionKeeper; }
RailKeeper* getRailKeeper() const { return mRailKeeper; }
ShadowKeeper* getShadowKeeper() const { return mShadowKeeper; }
ActorPrePassLightKeeper* getActorPrePassLightKeeper() const { return mActorPrePassLightKeeper; }
ActorOcclusionKeeper* getActorOcclusionKeeper() const { return mActorOcclusionKeeper; }
SubActorKeeper* getSubActorKeeper() const { return mSubActorKeeper; }
ActorParamHolder* getActorParamHolder() const { return mActorParamHolder; }
void setName(const char* newName) { mActorName = newName; }
private:
const char* mActorName;
ActorPoseKeeperBase* mPoseKeeper;
ActorExecuteInfo* mExecuteInfo;
ActorActionKeeper* mActorActionKeeper;
ActorItemKeeper* mActorItemKeeper;
ActorScoreKeeper* mActorScoreKeeper;
Collider* mCollider;
CollisionParts* mCollisionParts;
ModelKeeper* mModelKeeper;
NerveKeeper* mNerveKeeper;
HitSensorKeeper* mHitSensorKeeper;
ScreenPointKeeper* mScreenPointKeeper;
EffectKeeper* mEffectKeeper;
AudioKeeper* mAudioKeeper;
HitReactionKeeper* mHitReactionKeeper;
StageSwitchKeeper* mStageSwitchKeeper;
RailKeeper* mRailKeeper;
ShadowKeeper* mShadowKeeper;
ActorPrePassLightKeeper* mActorPrePassLightKeeper;
ActorOcclusionKeeper* mActorOcclusionKeeper;
SubActorKeeper* mSubActorKeeper;
ActorParamHolder* mActorParamHolder;
ActorSceneInfo* mSceneInfo;
LiveActorFlag* mFlags;
};
} // namespace al