Files
firestorm/Gameleap/code/mw4/Code/MW4/AI_Squad.hpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

83 lines
2.1 KiB
C++

#pragma once
#ifndef AI_SQUAD_HPP
#define AI_SQUAD_HPP
#include <Stuff\Auto_Ptr.hpp>
#include <Adept\Entity.hpp>
#include <Adept\NameTable.hpp>
namespace MechWarrior4
{
class CombatAI;
class MWObject;
class Group;
};
#define INTERFACE_SquadAI(post) \
public: \
virtual void Update(MechWarrior4::Group& group, \
MechWarrior4::CombatAI& combat_ai) ##post \
virtual void NotifyShot(MechWarrior4::Group& group, \
Adept::ObjectID id) ##post \
virtual void NotifyShotFired(MechWarrior4::Group& group, \
const Stuff::Line3D& line, \
MechWarrior4::MWObject& at_who, \
MechWarrior4::MWObject& shooter) ##post \
virtual void NotifyMemberAdded(MechWarrior4::Group& group, \
MechWarrior4::MWObject& who) ##post \
virtual void SetEntityToIgnore(Adept::ObjectID objectid) ##post \
virtual void NotifyMemberRemoved(MechWarrior4::Group& group, \
MechWarrior4::MWObject& who) ##post
#define PURE_SquadAI INTERFACE_SquadAI(=0;)
#define DERIVED_SquadAI INTERFACE_SquadAI(;)
namespace MW4AI
{
namespace Squad
{
enum ID // NOTE: these constants must exactly match those in MWCONST.ABI
{
GROUPAI_FIRST = 3999,
GROUPAI_NONE = 4000,
GROUPAI_LANCEMATE = 4001,
GROUPAI_RADIOSQUAD = 4002,
GROUPAI_MOODSQUAD = 4003,
GROUPAI_FOCUSFIRESQUAD = 4004,
GROUPAI_LAST = 4005
};
class AI
{
PURE_SquadAI;
public:
virtual ~AI() {};
virtual bool IgnoresFriendlyFire() const { return (false); }
virtual ID GetID() const = 0;
virtual void NotifyMechDestroyed(MechWarrior4::Group& group,
const Adept::ReplicatorID& inflicting_id,
const Adept::ReplicatorID& victim_id)
{ };
protected:
Adept::Entity* GetLeader(const MechWarrior4::Group& group) const;
int GetIndex(const MechWarrior4::CombatAI& combat_ai, const MechWarrior4::Group& group) const;
};
Stuff::Auto_Ptr<AI> CreateAI(ID id);
};
};
#endif // AI_SQUAD_HPP