Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Radar::Sensor Class Reference

#include <sensor.h>

Classes

struct  Capability
 
struct  ThreatLevel
 

Public Types

typedef std::vector< TrackTrackCollection
 

Public Member Functions

 Sensor (Unit *player)
 
UnitGetPlayer () const
 
float GetCloseRange () const
 
float GetMaxRange () const
 
float GetMaxCone () const
 
float GetLockCone () const
 
bool UseFriendFoe () const
 
bool UseObjectRecognition () const
 
bool UseThreatAssessment () const
 
Track CreateTrack (Unit *) const
 
Track CreateTrack (Unit *, const Vector &) const
 
bool IsTracking (const Track &) const
 
bool InsideNebula () const
 
bool InRange (const Track &) const
 
const TrackCollectionFindTracksInRange () const
 
ThreatLevel::Value IdentifyThreat (const Track &) const
 
GFXColor GetColor (const Track &) const
 

Protected Attributes

Unitplayer
 
float closeRange
 
TrackCollection collection
 
bool useThreatAssessment
 

Detailed Description

Definition at line 18 of file sensor.h.

Member Typedef Documentation

typedef std::vector<Track> Radar::Sensor::TrackCollection

Definition at line 21 of file sensor.h.

Constructor & Destructor Documentation

Radar::Sensor::Sensor ( Unit player)

Definition at line 25 of file sensor.cpp.

26  : player(player),
27  closeRange(30000.0),
28  useThreatAssessment(false)
29 {
30 }

Member Function Documentation

Track Radar::Sensor::CreateTrack ( Unit target) const

Definition at line 84 of file sensor.cpp.

References player.

Referenced by Radar::CollectRadarTracks::acquire().

85 {
86  assert(player);
87 
88  return Track(player, target);
89 }
Track Radar::Sensor::CreateTrack ( Unit target,
const Vector position 
) const

Definition at line 91 of file sensor.cpp.

References player.

92 {
93  assert(player);
94 
95  return Track(player, target, position);
96 }
const Sensor::TrackCollection & Radar::Sensor::FindTracksInRange ( ) const

Definition at line 191 of file sensor.cpp.

References _Universe, Universe::activeStarSystem(), collection, StarSystem::collidemap, UnitCollection::constIterator(), findObjects(), UnitUtil::getDistance(), GetMaxRange(), VegaConfig::getVariable(), StarSystem::gravitationalUnits(), i, is_null(), Unit::location, XMLSupport::parse_bool(), XMLSupport::parse_float(), player, Unit::Target(), Unit::UNIT_ONLY, and vs_config.

Referenced by Radar::SphereDisplay::Draw(), Radar::BubbleDisplay::Draw(), and Radar::PlaneDisplay::Draw().

192 {
193  assert(player);
194 
195  collection.clear();
196 
197  // Find all units within range
198  static float maxUnitRadius =
199  XMLSupport::parse_float(vs_config->getVariable("graphics", "hud", "radar_search_extra_radius", "1000"));
200  static bool allGravUnits =
201  XMLSupport::parse_bool(vs_config->getVariable("graphics", "hud", "draw_gravitational_objects", "true"));
202 
203  UnitWithinRangeLocator<CollectRadarTracks> unitLocator(GetMaxRange(), maxUnitRadius);
204  unitLocator.action.init(this, &collection, player);
206  {
209  &unitLocator);
210  }
211  if (allGravUnits)
212  {
213  Unit *target = player->Target();
214  Unit *gravUnit;
215  bool foundtarget = false;
217  (gravUnit = *i) != NULL;
218  ++i)
219  {
220  unitLocator.action.acquire(gravUnit, UnitUtil::getDistance(player, gravUnit));
221  if (gravUnit == target)
222  foundtarget = true;
223  }
224  if (target && !foundtarget)
225  unitLocator.action.acquire(target, UnitUtil::getDistance(player, target));
226  }
227  return collection;
228 }
float Radar::Sensor::GetCloseRange ( ) const

Definition at line 58 of file sensor.cpp.

References closeRange.

Referenced by Radar::PlaneDisplay::DrawDistant(), and Radar::PlaneDisplay::DrawNear().

59 {
60  return closeRange;
61 }
GFXColor Radar::Sensor::GetColor ( const Track track) const

Definition at line 272 of file sensor.cpp.

References Radar::Track::Type::Base, Radar::Track::Type::CapitalShip, Radar::Track::Type::Cargo, Radar::Track::Type::DeadPlanet, Radar::Track::Relation::Enemy, Radar::Track::Relation::Friend, Radar::Track::GetRelation(), Radar::Track::GetType(), Radar::Track::HasLock(), IdentifyThreat(), Radar::Track::Type::JumpPoint, Radar::Track::Type::Missile, Radar::Track::Type::Nebula, Radar::Sensor::ThreatLevel::None, Radar::Track::Type::Planet, player, RetrColor(), Radar::Track::Type::Ship, Radar::Track::Type::Star, UseFriendFoe(), UseObjectRecognition(), and UseThreatAssessment().

Referenced by Radar::SphereDisplay::DrawTrack(), Radar::BubbleDisplay::DrawTrack(), and Radar::PlaneDisplay::DrawTrack().

273 {
274  assert(player);
275 
276  static GFXColor friendColor = RetrColor("friend", GFXColor(-1, -1, -1, -1));
277  static GFXColor enemyColor = RetrColor("enemy", GFXColor(-1, -1, -1, -1));
278  static GFXColor neutralColor = RetrColor("neutral", GFXColor(-1, -1, -1, -1));
279  static GFXColor baseColor = RetrColor("base", GFXColor( -1, -1, -1, -1 ));
280  static GFXColor planetColor = RetrColor("planet", GFXColor( -1, -1, -1, -1 ));
281  static GFXColor jumpColor = RetrColor("jump", GFXColor( 0, 1, 1, .8 ));
282  static GFXColor navColor = RetrColor("nav", GFXColor( 1, 1, 1, 1 ));
283  static GFXColor starColor = RetrColor("star", GFXColor( 1, 1, 1, 1 ));
284  static GFXColor missileColor = RetrColor("missile", GFXColor( .25, 0, .5, 1 ));
285  static GFXColor cargoColor = RetrColor("cargo", GFXColor( .6, .2, 0, 1 ));
286  static GFXColor noColor = RetrColor("black_and_white", GFXColor( .5, .5, .5 ));
287 
288  Track::Type::Value trackType = track.GetType();
289  ThreatLevel::Value threatLevel = IdentifyThreat(track);
290 
291  if (UseThreatAssessment())
292  {
293  switch (trackType)
294  {
296  return missileColor;
297 
298  default:
299  break;
300  }
301  }
302 
303  if (UseObjectRecognition())
304  {
305  switch (trackType)
306  {
307  case Track::Type::Nebula:
308  case Track::Type::Star:
309  return starColor;
310 
311  case Track::Type::Planet:
313  return planetColor;
314 
315  case Track::Type::Base:
316  if (track.HasLock())
317  return enemyColor;
318  return baseColor;
319 
321  return jumpColor;
322 
323  default:
324  break;
325  }
326  }
327 
328  if (UseFriendFoe())
329  {
330  switch (trackType)
331  {
333  case Track::Type::Ship:
334  {
335  if (track.HasLock())
336  return enemyColor;
337 
338  switch (track.GetRelation())
339  {
341  return friendColor;
342 
344  if (UseThreatAssessment() && (threatLevel == ThreatLevel::None))
345  return neutralColor;
346 
347  return enemyColor;
348 
349  default:
350  return neutralColor;
351  }
352  }
353 
354  case Track::Type::Cargo:
355  return cargoColor;
356 
357  default:
358  break;
359  }
360  }
361  return noColor;
362 }
float Radar::Sensor::GetLockCone ( ) const

Definition at line 77 of file sensor.cpp.

References Unit::GetComputerData(), Unit::Computer::RADARLIM::lockcone, player, and Unit::Computer::radar.

Referenced by Radar::PlaneDisplay::DrawGround().

78 {
79  assert(player);
80 
82 }
float Radar::Sensor::GetMaxCone ( ) const

Definition at line 70 of file sensor.cpp.

References Unit::GetComputerData(), Unit::Computer::RADARLIM::maxcone, player, and Unit::Computer::radar.

71 {
72  assert(player);
73 
75 }
Unit * Radar::Sensor::GetPlayer ( ) const

Definition at line 32 of file sensor.cpp.

References player.

Referenced by Radar::SphereDisplay::DrawBackground().

33 {
34  return player;
35 }
Sensor::ThreatLevel::Value Radar::Sensor::IdentifyThreat ( const Track track) const

Definition at line 230 of file sensor.cpp.

References Radar::Track::Type::CapitalShip, Radar::Track::Relation::Enemy, Radar::Track::GetRelation(), Radar::Track::GetType(), Radar::Track::HasTurrets(), Radar::Track::HasWeaponLock(), Radar::Track::HasWeapons(), Radar::Sensor::ThreatLevel::High, Radar::Track::IsExploding(), Radar::Sensor::ThreatLevel::Low, Radar::Sensor::ThreatLevel::Medium, Radar::Track::Type::Missile, Radar::Sensor::ThreatLevel::None, player, Radar::Track::Type::Ship, and UseThreatAssessment().

Referenced by Radar::SphereDisplay::DrawTrack(), Radar::BubbleDisplay::DrawTrack(), Radar::PlaneDisplay::DrawTrack(), and GetColor().

231 {
232  assert(player);
233 
234  if (!UseThreatAssessment())
235  return ThreatLevel::None;
236 
237  if (track.IsExploding())
238  return ThreatLevel::None;
239 
240  if (track.HasWeaponLock())
241  {
242  // I am being targetted by...
243  switch (track.GetType())
244  {
246  return ThreatLevel::High;
247 
249  if (track.GetRelation() == Track::Relation::Enemy)
250  return ThreatLevel::Medium;
251  break;
252 
253  case Track::Type::Ship:
254  if (track.HasTurrets())
255  return ThreatLevel::Medium;
256 
257  if (!track.HasWeapons())
258  {
259  // So what are you going to threaten me with? Exhaustion gas?
260  return ThreatLevel::None;
261  }
262  break;
263 
264  default:
265  break;
266  }
267  return ThreatLevel::Low;
268  }
269  return ThreatLevel::None;
270 }
bool Radar::Sensor::InRange ( const Track track) const

Definition at line 112 of file sensor.cpp.

References Radar::Track::GetDistance(), and GetMaxRange().

113 {
114  return (track.GetDistance() <= GetMaxRange());
115 }
bool Radar::Sensor::InsideNebula ( ) const

Definition at line 105 of file sensor.cpp.

References Unit::GetNebula(), and player.

Referenced by Radar::SphereDisplay::DrawTrack(), Radar::BubbleDisplay::DrawTrack(), and Radar::PlaneDisplay::DrawTrack().

106 {
107  assert(player);
108 
109  return (player->GetNebula() != NULL);
110 }
bool Radar::Sensor::IsTracking ( const Track track) const

Definition at line 98 of file sensor.cpp.

References player, Radar::Track::target, and Unit::Target().

Referenced by Radar::SphereDisplay::DrawTrack(), Radar::BubbleDisplay::DrawTrack(), and Radar::PlaneDisplay::DrawTrack().

99 {
100  assert(player);
101 
102  return (track.target == player->Target());
103 }
bool Radar::Sensor::UseFriendFoe ( ) const

Definition at line 37 of file sensor.cpp.

References Unit::GetComputerData(), player, Unit::Computer::radar, and Unit::Computer::RADARLIM::UseFriendFoe().

Referenced by GetColor().

38 {
39  assert(player);
40 
42 }
bool Radar::Sensor::UseObjectRecognition ( ) const

Member Data Documentation

float Radar::Sensor::closeRange
protected

Definition at line 76 of file sensor.h.

Referenced by GetCloseRange().

TrackCollection Radar::Sensor::collection
mutableprotected

Definition at line 77 of file sensor.h.

Referenced by FindTracksInRange().

bool Radar::Sensor::useThreatAssessment
protected

Definition at line 78 of file sensor.h.


The documentation for this class was generated from the following files: