Pioneer
Loading...
Searching...
No Matches
Sensors.h
Go to the documentation of this file.
1// Copyright © 2008-2024 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _SENSORS_H
5#define _SENSORS_H
6/*
7 * Ship/station subsystem that holds a list of known contacts
8 * and handles IFF
9 * Some ideas:
10 * - targeting should be lost when going out of range
11 * - don't run radar sweep every frame (more of an optimization than simulation)
12 * - allow "pinned" radar contacts (visible at all ranges, for missions)
13 */
14#include "Body.h"
15
16#include <list>
17
18class Body;
19class HudTrail;
20class Ship;
21
22class Sensors {
23public:
24 enum IFF {
25 IFF_UNKNOWN, //also applies to inert objects
29 };
30
34 };
35
36 struct RadarContact {
42 double distance;
44 bool fresh;
45 };
46
47 typedef std::list<RadarContact> ContactList;
48
49 static Color IFFColor(IFF);
50 static bool ContactDistanceSort(const RadarContact &a, const RadarContact &b);
51
52 Sensors(Ship *owner);
53 Body* ChooseTarget(TargetingCriteria, const Body* oldTarget);
54 IFF CheckIFF(Body *other);
55 const ContactList &GetContacts() { return m_radarContacts; }
56 const ContactList &GetStaticContacts() { return m_staticContacts; }
57 void Update(float time);
58 void UpdateIFF(Body *);
59 void ResetTrails();
60
61private:
62 Ship *m_owner;
63 ContactList m_radarContacts;
64 ContactList m_staticContacts; //things we know of regardless of range
65
66 void PopulateStaticContacts();
67};
68
69#endif
Definition: Body.h:65
Definition: HudTrail.h:22
Definition: Sensors.h:22
std::list< RadarContact > ContactList
Definition: Sensors.h:47
void UpdateIFF(Body *)
Definition: Sensors.cpp:166
IFF CheckIFF(Body *other)
Definition: Sensors.cpp:94
static bool ContactDistanceSort(const RadarContact &a, const RadarContact &b)
Definition: Sensors.cpp:49
const ContactList & GetStaticContacts()
Definition: Sensors.h:56
const ContactList & GetContacts()
Definition: Sensors.h:55
IFF
Definition: Sensors.h:24
@ IFF_NEUTRAL
Definition: Sensors.h:26
@ IFF_UNKNOWN
Definition: Sensors.h:25
@ IFF_HOSTILE
Definition: Sensors.h:28
@ IFF_ALLY
Definition: Sensors.h:27
TargetingCriteria
Definition: Sensors.h:31
@ CYCLE_HOSTILE
Definition: Sensors.h:33
@ TARGET_NEAREST_HOSTILE
Definition: Sensors.h:32
Body * ChooseTarget(TargetingCriteria, const Body *oldTarget)
Definition: Sensors.cpp:59
void ResetTrails()
Definition: Sensors.cpp:177
void Update(float time)
Definition: Sensors.cpp:113
static Color IFFColor(IFF)
Definition: Sensors.cpp:37
Definition: Ship.h:64
Definition: Color.h:66
Definition: Sensors.h:36
double distance
Definition: Sensors.h:42
RadarContact()
Definition: Sensors.cpp:13
IFF iff
Definition: Sensors.h:43
~RadarContact()
Definition: Sensors.cpp:31
Body * body
Definition: Sensors.h:40
bool fresh
Definition: Sensors.h:44
HudTrail * trail
Definition: Sensors.h:41