Files
firestorm/Gameleap/code/mw4/Code/MW4/AI_TacticInterface.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

132 lines
5.5 KiB
C++

#pragma once
#ifndef AI_TACTICINTERFACE_HPP
#define AI_TACTICINTERFACE_HPP
#include <Stuff\Scalar.hpp>
#include <Stuff\Point3D.hpp>
#include "AI_FireStyle.hpp"
#include "AI_Moods.hpp"
#include "AI_FireData.hpp"
namespace MechWarrior4
{
class MWObject;
};
#define INTERFACE_TacticInterface(post) \
public: \
virtual void MoveTo(const Point3D& point, bool move_forward = true, bool throttle_override = false, MWObject* ram_target = 0) ##post \
virtual bool PointIsValid(const Point3D& point, bool ignore_mission_bounds = false, bool ignore_squads = false) const ##post \
virtual bool HasPath() const ##post \
virtual bool Moving() const ##post \
virtual void Stop() ##post \
virtual void ClearMoveOrder() ##post \
virtual Stuff::Point3D GetAimPoint() const ##post \
virtual void TrackTo(const Stuff::Point3D& point) ##post \
virtual void TurnTo(const Stuff::Point3D& point, bool must_be_torso_twisted = true) ##post \
virtual void PitchTo(const Stuff::Point3D& point) ##post \
virtual Stuff::Scalar WeaponRange(WR_WHO who, WR_QUALIFIER qualifier) const ##post \
virtual void Fire(FireStyles::FireStyleID style = FireStyles::FIRE_MAXIMUM) ##post \
virtual MechWarrior4::MWObject& GetSelf() const ##post \
virtual MechWarrior4::Vehicle* GetSelf_AsVehicle() const ##post \
virtual MechWarrior4::MWObject& GetTarget() const ##post \
virtual MechWarrior4::Vehicle* GetTarget_AsVehicle() const ##post \
virtual MechWarrior4::MWObject* GetNearest(bool fMustBeEnemy = false) ##post \
virtual Stuff::Scalar GetDistanceFromTargetSquared() const ##post \
virtual Stuff::Scalar GetDistanceFromDestinationSquared() const ##post \
virtual Moods::ID GetMood() const ##post \
virtual bool ProjectileApproaching(Stuff::Scalar interval = 4.0f) ##post \
virtual const Stuff::Point3D& GetProjectileOrigin() ##post \
virtual void Stand() ##post \
virtual void Crouch() ##post \
virtual bool Crouching() const ##post \
virtual FireData::HIT_RESULT GetLastHitResult() const ##post \
virtual void ThrottleOverride(Stuff::Scalar duration, bool force = false) ##post \
virtual bool GetLastMoveDest(Stuff::Point3D& dest, bool ignore_movement = false) const ##post \
virtual bool ShotWithin(Stuff::Scalar lastvalid) const ##post \
virtual bool FiredWithin(Stuff::Scalar lastvalid) const ##post \
virtual void Jump(Stuff::Scalar duration) ##post \
virtual void Jump() ##post \
virtual void StopJumping() ##post \
virtual bool GetUnableToFireDuration(Stuff::Scalar duration) const ##post \
virtual bool ShouldForceDestinationRecalc() const ##post \
virtual int GetEliteLevel() const ##post \
virtual Stuff::Scalar GetTimeTargetedByEnemy() const ##post \
virtual Stuff::Scalar GetAttackThrottle() const ##post \
virtual void ForceDestinationRecalc() ##post \
virtual Stuff::Point3D GetMoveDest() const ##post \
virtual Stuff::Scalar GetLastTimeRammedTarget() const ##post \
virtual Stuff::Scalar GetLastTimeJumped() const ##post \
virtual Stuff::LinearMatrix4D GetAttackOrderPosition() const ##post \
virtual Stuff::LinearMatrix4D GetLastMoveOrderPosition() const ##post \
virtual bool GetEscapeRegionFocusIfAvailable(Stuff::Point3D& focus) const ##post \
virtual void SurrenderPose() ##post \
virtual void SetSpeed(Stuff::Scalar speed) ##post \
virtual bool SuicideIsOK() const ##post \
virtual unsigned int NumLegsDestroyed() const ##post \
virtual Stuff::Scalar GetMovementScore() const ##post \
virtual void SetMovementScore(Stuff::Scalar score) ##post \
virtual bool PointIsInBadNeighborhood(const Stuff::Point3D& point) const ##post \
virtual bool ShouldRun() const ##post \
virtual Stuff::Scalar GetCombatRadiusForRange(Stuff::Scalar percentile_range) ##post \
virtual Stuff::Scalar GetNormalizedJumpJetFuel() ##post \
virtual bool CanRetreat() const ##post \
virtual Stuff::Scalar GetCurrentVulnerableComponent() ##post \
virtual bool CanJump() const ##post \
virtual bool CanCrouch() const ##post \
virtual void FloatToPoint(const Stuff::Point3D& point) ##post \
virtual bool IsShootOnlyAI() const ##post \
virtual void SetFallDampingEnabled(bool enabled) ##post \
virtual Adept::ObjectID GetObjectID() const ##post \
virtual Stuff::Scalar GetMaxFireCheatAngle() const ##post \
virtual bool LineMightHitFriendlyUnits(const Stuff::Line3D& line) const ##post \
virtual bool MovedWithin(Stuff::Scalar duration) const ##post \
virtual void ContinuousFlyBy(const Stuff::Point3D& loc) ##post \
virtual bool RecentPathsFailed() const ##post \
virtual bool CanMove() const ##post \
virtual bool MoveRequestPending() const ##post \
virtual bool CanTrack() const ##post \
virtual bool CanTurn() const ##post \
virtual Stuff::Scalar DamageTakenSinceAttackOrder() const ##post \
virtual Stuff::Point3D GetLeashCenter() const ##post \
virtual Stuff::Scalar GetLeashRadius() const ##post
#define PURE_TacticInterface INTERFACE_TacticInterface(=0;)
#define DERIVED_TacticInterface INTERFACE_TacticInterface(;)
namespace MechWarrior4
{
class Vehicle;
};
namespace MW4AI
{
class TacticInterface
{
protected:
TacticInterface() {};
virtual ~TacticInterface() {};
public:
enum WR_WHO
{
SELF,
TARGET
};
enum WR_QUALIFIER
{
MIN,
MAX
};
PURE_TacticInterface;
};
};
#endif // AI_TACTICINTERFACE_HPP