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::CollectRadarTracks Class Reference

Public Member Functions

 CollectRadarTracks ()
 
void init (const Sensor *sensor, Sensor::TrackCollection *collection, Unit *player)
 
bool acquire (Unit *target, float distance)
 

Detailed Description

Definition at line 119 of file sensor.cpp.

Constructor & Destructor Documentation

Radar::CollectRadarTracks::CollectRadarTracks ( )
inline

Definition at line 122 of file sensor.cpp.

123  : sensor(NULL),
124  player(NULL),
125  collection(NULL)
126  {}

Member Function Documentation

bool Radar::CollectRadarTracks::acquire ( Unit target,
float  distance 
)
inline

Definition at line 135 of file sensor.cpp.

References Radar::Sensor::CreateTrack(), Unit::GetComputerData(), getTopLevelOwner(), VegaConfig::getVariable(), i, Unit::InRange(), Unit::isPlanet(), Unit::Computer::RADARLIM::maxrange, Unit::owner, XMLSupport::parse_bool(), XMLSupport::parse_float(), PLANETPTR, Unit::Computer::radar, Unit::radial_size, Unit::rSize(), Unit::Target(), Unit::viewSubUnits(), and vs_config.

136  {
137  assert(sensor);
138  assert(collection);
139  assert(player);
140  assert(target);
141 
142  static bool draw_significant_blips =
143  XMLSupport::parse_bool( vs_config->getVariable( "graphics", "hud", "draw_significant_blips", "true" ) );
144  static bool untarget_out_cone =
145  XMLSupport::parse_bool( vs_config->getVariable( "graphics", "hud", "untarget_beyond_cone", "false" ) );
146  static float minblipsize =
147  XMLSupport::parse_float( vs_config->getVariable( "graphics", "hud", "min_radarblip_size", "0" ) );
148 
149  if (target != player) {
150  const bool isCurrentTarget = (player->Target() == target);
151  double dummy;
152  if (!player->InRange( target, dummy, isCurrentTarget && untarget_out_cone, true, true ))
153  {
154  if (isCurrentTarget)
155  player->Target(NULL);
156  return true;
157  }
158  if (!isCurrentTarget &&
159  !draw_significant_blips &&
160  (getTopLevelOwner() == target->owner) &&
161  (distance > player->GetComputerData().radar.maxrange))
162  return true;
163 
164  // Blips will be sorted later as different radars need to sort them differently
165  if (target->rSize() > minblipsize)
166  {
167  collection->push_back(sensor->CreateTrack(target));
168  }
169  if (target->isPlanet() == PLANETPTR && target->radial_size > 0)
170  {
171  Unit *sub = NULL;
172  for (un_kiter i = target->viewSubUnits(); (sub = *i) != NULL; ++i)
173  {
174  if (target->rSize() > minblipsize)
175  {
176  collection->push_back(sensor->CreateTrack(sub));
177  }
178  }
179  }
180  }
181  return true;
182  }
void Radar::CollectRadarTracks::init ( const Sensor sensor,
Sensor::TrackCollection collection,
Unit player 
)
inline

Definition at line 128 of file sensor.cpp.

129  {
130  this->sensor = sensor;
131  this->collection = collection;
132  this->player = player;
133  }

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