mirror of
https://github.com/UberGames/EF2GameSource.git
synced 2024-11-14 00:11:10 +00:00
92 lines
2.9 KiB
C++
92 lines
2.9 KiB
C++
//-----------------------------------------------------------------------------
|
|
//
|
|
// $Logfile:: /Code/DLLs/game/actor_combatsubsystem.h $
|
|
// $Revision:: 21 $
|
|
// $Author:: Steven $
|
|
// $Date:: 10/13/03 8:53a $
|
|
//
|
|
// Copyright (C) 2001 by Ritual Entertainment, Inc.
|
|
// All rights reserved.
|
|
//
|
|
// This source may not be distributed and/or modified without
|
|
// expressly written permission by Ritual Entertainment, Inc.
|
|
//
|
|
//
|
|
// DESCRIPTION:
|
|
// Combat Related Classes
|
|
//
|
|
|
|
class CombatSubsystem;
|
|
|
|
#ifndef __ACTOR_COMBAT_SUBSYSTEM_H__
|
|
#define __ACTOR_COMBAT_SUBSYSTEM_H__
|
|
|
|
//============================
|
|
// Class CombatSubsystem
|
|
//============================
|
|
//
|
|
// Encapsulates combat related data and functionality for the actor
|
|
//
|
|
class CombatSubsystem {
|
|
public:
|
|
CombatSubsystem();
|
|
explicit CombatSubsystem(Actor* actor);
|
|
virtual ~CombatSubsystem();
|
|
|
|
bool CanAttackTarget(Entity* target);
|
|
bool CanAttackTargetFrom(Entity* target, const Vector& startPos);
|
|
bool IsTargetInWeaponRange(Entity* target);
|
|
bool UsingWeaponNamed(const str& weaponName);
|
|
bool WeaponIsFireType(firetype_t fire_type);
|
|
bool HaveWeapon();
|
|
bool CanAttackEnemy();
|
|
|
|
void UseActorWeapon(const str& weaponName, weaponhand_t hand);
|
|
void SetTraceInterval(float interval);
|
|
void FireWeapon();
|
|
void StopFireWeapon();
|
|
void AimWeaponTag(Entity* target);
|
|
void AimWeaponTag(const Vector& targetPos);
|
|
void ClearAim();
|
|
|
|
void GetGunPositionData(Vector* pos, Vector* forward = nullptr, Vector* right = nullptr, Vector* up = nullptr);
|
|
float GetAimGunYaw(const Vector& target);
|
|
float GetAimGunPitch(const Vector& target);
|
|
WeaponPtr GetBestAvailableWeapon(Entity* target);
|
|
float GetActiveWeaponPowerRating(Entity* target);
|
|
str GetActiveWeaponName();
|
|
str GetActiveWeaponArchetype();
|
|
|
|
bool GetProjectileLaunchAngles(Vector& launchAngles, const Vector& launchPoint, const float initialSpeed, const float gravity, const bool useHighTrajectory = false) const;
|
|
bool shouldArcProjectile();
|
|
float GetLowArcRange();
|
|
|
|
void OverrideSpread(float spreadX, float spreadY);
|
|
|
|
str GetAnimForMyWeapon(const str& property);
|
|
float GetDataForMyWeapon(const str& property);
|
|
|
|
Vector GetLeadingTargetPos(float projSpeed, Vector originalTargetPos, Entity* target);
|
|
|
|
// Archiving
|
|
void DoArchive(Archiver& arc, Actor* actor);
|
|
virtual void Archive(Archiver& arc);
|
|
|
|
protected:
|
|
void _init();
|
|
bool _traceHitTarget(Entity* target, const Vector& startPos);
|
|
float getModifiedPowerRating(Entity* target, Weapon* weapon);
|
|
|
|
|
|
private:
|
|
ActiveWeapon _activeWeapon;
|
|
float _nextTimeTracedToTarget;
|
|
float _traceInterval;
|
|
bool _canShootTarget;
|
|
float _yawDiff;
|
|
|
|
Actor* act;
|
|
};
|
|
|
|
|
|
#endif /* __ACTOR_COMBAT_SUBSYSTEM_H__ */
|