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.
85 lines
2.7 KiB
C++
85 lines
2.7 KiB
C++
|
|
#pragma once
|
|
#ifndef AI_ACTION_HPP
|
|
#define AI_ACTION_HPP
|
|
|
|
#include <Stuff\Auto_Ptr.hpp>
|
|
#include "AI_Fuzzy.hpp"
|
|
#include "AI_TacticInterface.hpp"
|
|
#include "aiutils.hpp"
|
|
|
|
|
|
|
|
|
|
namespace MW4AI
|
|
{
|
|
namespace Actions
|
|
{
|
|
void Fire(TacticInterface& i,
|
|
FireStyles::FireStyleID style);
|
|
|
|
enum MoveType
|
|
{
|
|
MOVE_FORWARD,
|
|
MOVE_BACKWARD,
|
|
MOVE_TO_FACE_TARGET
|
|
};
|
|
|
|
void ApproachTarget(TacticInterface& i, MoveType move_type);
|
|
void ApproachTarget(TacticInterface& i, Stuff::Scalar when);
|
|
void FleeTarget(TacticInterface& i);
|
|
void Jump(TacticInterface& i);
|
|
void Crouch(TacticInterface& i);
|
|
void ThrottleOverride(TacticInterface& i);
|
|
void FleeNearest(TacticInterface& i, Stuff::Scalar nearest);
|
|
void Disengage(TacticInterface& i, Stuff::Scalar distance);
|
|
void FindBetterLineOfFire(TacticInterface& i);
|
|
void GoToDistanceFromTarget(TacticInterface& i, Stuff::Scalar distance, MoveType move_type);
|
|
void GoToDistanceFromNearestEnemy(TacticInterface& i, Stuff::Scalar distance, MoveType move_type);
|
|
void GoToOtherSideOfTarget(TacticInterface& i, Stuff::Scalar distance);
|
|
void StopIfMoving(TacticInterface& i);
|
|
void Dodge(TacticInterface& i, Stuff::Scalar distance, MoveType move_type);
|
|
void Circle(TacticInterface& i, MoveType move_type, Stuff::Scalar distance = 0);
|
|
void CircleRandomly(TacticInterface& i);
|
|
void CircleFloat(TacticInterface& i, Stuff::Scalar distance);
|
|
void CircleToBehindTarget(TacticInterface& i, Stuff::Scalar maximum);
|
|
void CircleToFrontOfTarget(TacticInterface& i, Stuff::Scalar maximum);
|
|
void MoveForward(TacticInterface& i, Stuff::Scalar distance);
|
|
void CircleTargetNearEnemies(TacticInterface& i, Stuff::Scalar distance);
|
|
void GoBehindTarget(TacticInterface& i, Stuff::Scalar min_distance);
|
|
void GoInFrontOfTarget(TacticInterface& i, Stuff::Scalar min_distance);
|
|
void ForceDestinationRecalc(TacticInterface& i);
|
|
void RamTarget(TacticInterface& i, Stuff::Scalar recalc_tolerance = 8.0f);
|
|
void PatrolWithinRadiusOfAttackOrderPosition(TacticInterface& i, Stuff::Scalar inner_radius, Stuff::Scalar outer_radius);
|
|
void JumpToHeight(TacticInterface& i, Stuff::Scalar height);
|
|
|
|
enum FastCircleMoveType
|
|
{
|
|
MOVE_CLOSER,
|
|
MOVE_FARTHER,
|
|
MOVE_RANDOM
|
|
};
|
|
void DoFastCircle(TacticInterface& i, FastCircleMoveType move_type);
|
|
|
|
enum TrackTarget
|
|
{
|
|
TO_TARGET,
|
|
TO_NEAREST_ENEMY,
|
|
TO_NEAREST_ENEMY_OR_TARGET
|
|
};
|
|
|
|
void Track(TacticInterface& i,
|
|
TrackTarget target,
|
|
bool fTrack = true,
|
|
bool fTurn = true,
|
|
bool fPitch = false);
|
|
|
|
bool ShouldMoveForwardToPoint(TacticInterface& i, const Stuff::Point3D& dest);
|
|
|
|
extern bool g_HelicoptersIgnoreMissionBounds;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
#endif // AI_ACTION
|