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

100 lines
3.0 KiB
C++

#pragma once
#ifndef AI_WEAPONS_HPP
#define AI_WEAPONS_HPP
#include <Stuff\Scalar.hpp>
#pragma warning (push)
#include <stlport\vector>
#pragma warning (pop)
#include "AI_HitTesting.hpp"
namespace Adept
{
class Entity__CollisionQuery;
};
namespace MechWarrior4
{
class MWObject;
class Weapon;
};
namespace Adept
{
class DamageObject;
};
namespace MW4AI
{
Stuff::Scalar GetMaxWeaponDistance(MechWarrior4::Weapon& weapon);
// Stuff::Scalar GetMinWeaponDistance(MechWarrior4::Weapon& weapon);
Stuff::Scalar GetMaxWeaponDistance(MechWarrior4::MWObject& vehicle);
Stuff::Scalar GetMinWeaponDistance(MechWarrior4::MWObject& vehicle);
void SetWeaponsToMaxWaitValue(MechWarrior4::MWObject& object);
bool HasAnyUnlimitedAmmoWeapons(MechWarrior4::MWObject& object);
bool HasAnyProjectileWeapons(MechWarrior4::MWObject& object);
bool WeaponCanFire(MechWarrior4::Weapon& weapon,
Stuff::Scalar line_length = 0,
Stuff::Time min_delay = 0,
Stuff::Time max_delay = 0);
bool GetWeaponsThatCanFire(std::vector<Weapon *>& weapons,
bool can_spend_ammo,
Stuff::Time min_delay,
Stuff::Time max_delay);
bool GetWeaponsThatCanFireAt(std::vector<Weapon *>& weapons,
const Stuff::Point3D& aim);
bool GetWeaponsThatCanFireFrom(std::vector<Weapon *>& weapons,
FireSource fire_source);
bool MightHitFriendlies(const Stuff::Line3D& line,
Stuff::Scalar line_length,
MechWarrior4::MWObject& shooter,
MechWarrior4::MWObject* ignore = 0);
bool AnyWeaponReady(MechWarrior4::MWObject& vehicle,
Stuff::Time min_delay = 0,
Stuff::Time max_delay = 0);
bool AnyWeaponNotReady(MechWarrior4::MWObject& vehicle,
Stuff::Time min_delay = 0,
Stuff::Time max_delay = 0);
unsigned int NumWeapons(MechWarrior4::MWObject& vehicle);
unsigned int NumWeaponsReady(MechWarrior4::MWObject& vehicle,
Stuff::Time min_delay = 0,
Stuff::Time max_delay = 0);
bool WeaponIsArmWeapon(const MechWarrior4::Weapon& weapon, bool left);
Stuff::LinearMatrix4D WeaponSiteLocalToWorld(const MechWarrior4::Weapon& weapon);
typedef std::vector<Adept::DamageObject*> component_vector;
void DamageObjectChainToVector(Stuff::SortedChainOf<Adept::DamageObject*,int>& chain, component_vector& v);
Adept::DamageObject* GetComponent_MostDamaged(MechWarrior4::MWObject& who, const component_vector& v);
Adept::DamageObject* GetComponent_LeastDamaged(const component_vector& v);
Adept::DamageObject* GetComponent_Random(const component_vector& v);
Adept::DamageObject* GetComponent_TorsoThenTopDown(const component_vector& v);
void GetLeftmostAndRightmostWeapons(MechWarrior4::MWObject& object,
std::vector<MechWarrior4::Weapon*>& weapons);
Stuff::Point3D GetWeaponCenter(MechWarrior4::MWObject& object);
void SetRaySourceToBestComponent(Adept::Entity__CollisionQuery& query);
};
#endif AI_WEAPONS_HPP