00001 #ifndef _RADAR_H 00002 #define _RADAR_H 00003 00004 #include "RobotObject.h" 00005 #include "MapObject.h" 00006 #include "CodeTool.h" 00007 00008 class Map; 00009 00010 00011 class Radar : public RobotObject 00012 { 00013 struct SCAN { 00014 SCAN(MapObject *p,int r,int d) : m_object(p),m_relative_angle(r),m_distance(d) {} 00015 MapObject *m_object; 00016 int m_relative_angle; 00017 int m_distance; 00018 }; 00019 typedef std::vector<SCAN *> scan_v; 00020 public: 00021 Radar(Robot&); 00022 ~Radar(); 00023 00024 void Tick(long usec); 00025 00026 long get_property(int); 00027 void set_property(int,long); 00028 long call_method(int,stack_v&); 00029 00030 // methods 00031 void Scan( Map& ,int distance ); // scan time = power / distance 00032 00033 // set properties 00034 void SetMaxPower(int x) { m_max_power = x; } 00035 void SetMaxDistance(int x) { m_max_distance = x; } 00036 void SetChargeSpeed(int x) { m_charge_speed = x; } 00037 00038 // get properties 00039 int GetMaxPower() { return m_max_power; } 00040 int GetMaxDistance() { return m_max_distance; } 00041 int GetPower() { return m_power; } 00042 int GetChargeSpeed() { return m_charge_speed; } 00043 scan_v& GetScanlist() { return m_scanlist; } 00044 00045 private: 00046 // properties 00047 int m_max_power; 00048 int m_max_distance; 00049 int m_power; 00050 int m_charge_speed; // units/sec 00051 scan_v m_scanlist; 00052 }; 00053 00054 00055 #endif // _RADAR_H