-/* $Id$
-
-This file is part of R²C²
-Copyright © 2010 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
-#include <msp/core/except.h>
+#include <msp/core/maputils.h>
#include <msp/time/units.h>
#include "simplecontroller.h"
target_speed.set(0);
}
+const char *SimpleController::enumerate_controls(unsigned index) const
+{
+ if(index==0)
+ return target_speed.name.c_str();
+ else if(index==1)
+ return reverse.name.c_str();
+ else
+ return 0;
+}
+
void SimpleController::set_control(const string &name, float v)
{
- if(name=="speed")
+ if(name==target_speed.name)
{
target_speed.set(v);
signal_control_changed.emit(target_speed);
}
- else if(name=="reverse")
+ else if(name==reverse.name)
{
if(target_speed.value || speed)
- throw InvalidState("Must be stopped to change reverse");
+ throw logic_error("Must be stopped to change reverse");
reverse.set(v);
signal_control_changed.emit(reverse);
}
const Controller::Control &SimpleController::get_control(const string &name) const
{
- if(name=="speed")
+ if(name==target_speed.name)
return target_speed;
- else if(name=="reverse")
+ else if(name==reverse.name)
return reverse;
else
- throw KeyError("Unknown control", name);
+ throw key_error(name);
}
float SimpleController::get_braking_distance() const