#include <Robot.h>
Inheritance diagram for Robot:


Definition at line 17 of file Robot.h.
| Robot::Robot | ( | Map & | , | |
| const std::string & | xmlfile | |||
| ) | 
Definition at line 7 of file Robot.cpp.
References m_code, and m_config.
00007 : MapObject(m) 00008 ,m_config(xmlfile) 00009 ,m_code(NULL) 00010 ,m_life(*this) 00011 ,m_radar(*this) 00012 ,m_turret(*this) 00013 ,m_gun(*this) 00014 ,m_shields(*this) 00015 ,m_power_level(0) 00016 ,m_max_power_level(10000) 00017 ,m_charge_rate(1000) 00018 ,m_current_heading(0) 00019 ,m_set_heading(m_current_heading) 00020 ,m_turn_rate(12) 00021 { 00022 m_code = new CodeTool(m_config); 00023 m_code -> SetRobot( this ); 00024 }
| Robot::~Robot | ( | ) | 
| bool Robot::IsOk | ( | ) |  [inline] | 
| mapobject_t Robot::GetType | ( | ) |  [inline, virtual] | 
Implements MapObject.
Definition at line 26 of file Robot.h.
References MAPOBJECT_ROBOT.
00026 { return MAPOBJECT_ROBOT; }
| long Robot::get_property | ( | const std::string & | ) |  [virtual] | 
Implements MapObject.
Definition at line 169 of file Robot.cpp.
Referenced by CodeTool::get_property().
| void Robot::Tick | ( | long | usec | ) | 
Definition at line 33 of file Robot.cpp.
References Call(), m_charge_rate, m_current_heading, m_gun, m_life, m_max_power_level, m_power_level, m_radar, m_set_heading, m_shields, m_turn_rate, m_turret, Life::Tick(), Gun::Tick(), Turret::Tick(), Radar::Tick(), Shields::Tick(), and UsePower().
00034 { 00035 // Robot: charge 00036 { 00037 double x = (usec * m_charge_rate) / 1000000; 00038 m_power_level += x; 00039 if (m_power_level > m_max_power_level) 00040 m_power_level = m_max_power_level; 00041 } 00042 // Robot: turn 00043 { 00044 double diff_cw = m_set_heading - m_current_heading; 00045 if (diff_cw < 0) 00046 diff_cw += 360; 00047 if (diff_cw >= 0.1 && diff_cw <= 180) 00048 { 00049 // cw turn 00050 double angl = (usec * m_turn_rate) / 1000000; // 12 degrees/sec 00051 angl = (angl < diff_cw) ? angl : diff_cw; 00052 double powr = (angl * 550) / m_turn_rate; // 550 power units / 12 degrees 00053 // ... 00054 if (UsePower(powr)) 00055 { 00056 m_current_heading += angl; 00057 if (m_current_heading >= 360) 00058 m_current_heading -= 360; 00059 double diff = m_current_heading - m_set_heading; 00060 if (diff < 0) 00061 diff *= -1; 00062 if (diff < 0.1) 00063 { 00064 Call( "OnTurnComplete" ); 00065 } 00066 } 00067 } 00068 else 00069 if (diff_cw >= 0.1) 00070 { 00071 // ccw turn 00072 double diff_ccw = m_current_heading - m_set_heading; 00073 if (diff_ccw < 0) 00074 diff_ccw += 360; 00075 double angl = (usec * m_turn_rate) / 1000000; // 12 degrees/sec 00076 angl = (angl < diff_ccw) ? angl : diff_ccw; 00077 double powr = (angl * 550) / m_turn_rate; // 550 power units / 12 degrees 00078 // ... 00079 if (UsePower(powr)) 00080 { 00081 m_current_heading -= angl; 00082 if (m_current_heading < 0) 00083 m_current_heading += 360; 00084 double diff = m_current_heading - m_set_heading; 00085 if (diff < 0) 00086 diff *= -1; 00087 if (diff < 0.1) 00088 { 00089 Call( "OnTurnComplete" ); 00090 } 00091 } 00092 } 00093 } 00094 00095 // Robot parts Tick 00096 m_shields.Tick( usec ); 00097 m_radar.Tick( usec ); 00098 m_turret.Tick( usec ); 00099 m_gun.Tick( usec ); 00100 m_life.Tick( usec ); 00101 }
| Life& Robot::PartLife | ( | ) |  [inline] | 
| Radar& Robot::PartRadar | ( | ) |  [inline] | 
| Turret& Robot::PartTurret | ( | ) |  [inline] | 
| Gun& Robot::PartGun | ( | ) |  [inline] | 
| Shields& Robot::PartShields | ( | ) |  [inline] | 
| long Robot::get_property | ( | int | ) | 
Definition at line 128 of file Robot.cpp.
References RobotObject::GetDamage(), RobotObject::GetRepairRate(), m_life, m_max_power_level, m_power_level, and RobotObject::Ok().
00129 { 00130 switch (prop) 00131 { 00132 case 1: // ok 00133 return m_life.Ok(); 00134 case 2: // damage 00135 return m_life.GetDamage(); 00136 case 3: // repair_rate 00137 return m_life.GetRepairRate(); 00138 case 4: // inventory 00139 break; 00140 case 5: // power 0 .. 100 % 00141 return (int)((100 * m_power_level) / m_max_power_level); 00142 case 6: // charging 00143 return (m_power_level < m_max_power_level) ? true : false; 00144 } 00145 return 0; 00146 }
| void Robot::set_property | ( | int | , | |
| long | ||||
| ) | 
Definition at line 149 of file Robot.cpp.
References m_life, and RobotObject::SetRepairRate().
Referenced by CodeTool::set_property().
00150 { 00151 switch (prop) 00152 { 00153 case 1: // ok 00154 break; 00155 case 2: // damage 00156 break; 00157 case 3: // repair_rate 00158 m_life.SetRepairRate(value); 00159 break; 00160 } 00161 }
| long Robot::call_method | ( | int | , | |
| stack_v & | ||||
| ) | 
| void Robot::Call | ( | const std::string & | method | ) | 
| void Robot::AddObject | ( | MapObject * | ) | 
Definition at line 104 of file Robot.cpp.
References m_inventory.
00105 { 00106 m_inventory.push_back(p); 00107 }
| mapobject_v& Robot::GetInventory | ( | ) |  [inline] | 
Definition at line 46 of file Robot.h.
References m_inventory.
00046 { return m_inventory; } // robot.inventory
| int Robot::GetPower | ( | ) |  [inline] | 
Definition at line 49 of file Robot.h.
References m_max_power_level, and m_power_level.
00049 { return (int)((m_power_level * 100) / m_max_power_level); } // robot.power
| int Robot::GetPowerLevel | ( | ) |  [inline] | 
Definition at line 50 of file Robot.h.
References m_power_level.
Referenced by Charging().
00050 { return (int)m_power_level; }
| int Robot::GetMaxPowerLevel | ( | ) |  [inline] | 
Definition at line 51 of file Robot.h.
References m_max_power_level.
Referenced by Charging(), and RobotObject::Tick().
00051 { return m_max_power_level; }
| void Robot::SetMaxPowerLevel | ( | int | x | ) |  [inline] | 
Definition at line 52 of file Robot.h.
References m_max_power_level.
00052 { m_max_power_level = x; }
| bool Robot::Charging | ( | ) |  [inline] | 
Definition at line 53 of file Robot.h.
References GetMaxPowerLevel(), and GetPowerLevel().
00053 { return GetPowerLevel() < GetMaxPowerLevel(); } // robot.charging
| int Robot::GetChargeRate | ( | ) |  [inline] | 
| void Robot::SetChargeRate | ( | int | x | ) |  [inline] | 
| bool Robot::UsePower | ( | double | units | ) | 
Definition at line 110 of file Robot.cpp.
References Call(), and m_power_level.
Referenced by Tick().
00111 { 00112 if (m_power_level < units) 00113 { 00114 Call( "OnOutOfPower" ); 00115 return false; 00116 } 00117 m_power_level -= units; 00118 return true; 00119 }
| int Robot::GetCurrentHeading | ( | ) |  [inline] | 
Definition at line 59 of file Robot.h.
References m_current_heading.
00059 { return (int)m_current_heading; }
| void Robot::SetHeading | ( | double | x | ) |  [inline] | 
| double Robot::GetTurnRate | ( | ) |  [inline] | 
| void Robot::SetTurnRate | ( | double | x | ) |  [inline] | 
| RobotXMLFile Robot::m_config  [private] | 
| CodeTool* Robot::m_code  [private] | 
| Life Robot::m_life  [private] | 
Definition at line 68 of file Robot.h.
Referenced by get_property(), PartLife(), set_property(), and Tick().
| Radar Robot::m_radar  [private] | 
| Turret Robot::m_turret  [private] | 
| Gun Robot::m_gun  [private] | 
| Shields Robot::m_shields  [private] | 
| mapobject_v Robot::m_inventory  [private] | 
| double Robot::m_power_level  [private] | 
Definition at line 76 of file Robot.h.
Referenced by get_property(), GetPower(), GetPowerLevel(), Tick(), and UsePower().
| int Robot::m_max_power_level  [private] | 
Definition at line 77 of file Robot.h.
Referenced by get_property(), GetMaxPowerLevel(), GetPower(), SetMaxPowerLevel(), and Tick().
| int Robot::m_charge_rate  [private] | 
| double Robot::m_current_heading  [private] | 
| double Robot::m_set_heading  [private] | 
| double Robot::m_turn_rate  [private] | 
 1.3.6
 
1.3.6