1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef WEAPONTARGET_H
#define WEAPONTARGET_H
#include "System/float3.h"
#include "System/creg/creg_cond.h"
class CUnit;
class CWeaponProjectile;
enum TargetType {
Target_None,
Target_Unit,
Target_Pos,
Target_Intercept
};
struct SWeaponTarget {
CR_DECLARE_STRUCT(SWeaponTarget)
SWeaponTarget();
// explicit ctors
SWeaponTarget(const CUnit* unit, bool isUserTarget = false);
SWeaponTarget(float3 groundPos, bool isUserTarget = false);
SWeaponTarget(CWeaponProjectile* intercept, bool isUserTarget = false);
// conditional ctors
SWeaponTarget(const CUnit* unit, float3 groundPos, bool isUserTarget = false);
// operators
bool operator!=(const SWeaponTarget& other) const;
bool operator==(const SWeaponTarget& other) const { return !(*this != other); }
public:
TargetType type; // indicates if we have a target and what type
bool isUserTarget;
bool isManualFire;
CUnit* unit; // if targettype=unit: the targeted unit
CWeaponProjectile* intercept; // if targettype=intercept: projectile that we currently target for interception
float3 groundPos; // if targettype=ground: the ground position
};
#endif // WEAPONTARGET_H
|