-// $Id:$
+// $Id$
//
// SuperTux
// Copyright (C) 2005 Philipp <balinor@pnxs.de>
Path::Path(const lisp::Lisp& reader)
{
- float x,y;
+ forward = true;
+ float x = 0, y = 0;
lisp::ListIterator iter(&reader);
assert(token == "name");
iter.value()->get(name);
+ circular = true;
+ assert (iter.next());
+ token = iter.item();
+ if (token == "circular") {
+ iter.value()->get(circular);
+ iter.next();
+ }
+
pixels_per_second = DEFAULT_PIXELS_PER_SECOND;
assert (iter.next());
token = iter.item();
}
void
-Path::draw(DrawingContext& context)
+Path::draw(DrawingContext& )
{
- // NOOP ;-)
+ // TODO: Add a visible flag, draw the path if true
}
const Vector&
{
Vector distance;
- ++next_target;
- if (next_target == points.end()) {
- next_target = points.begin();
+ if (circular) {
+ ++next_target;
+ if (next_target == points.end()) {
+ next_target = points.begin();
+ }
+ }
+ else if (forward) {
+ ++next_target;
+ if (next_target == points.end()) {
+ forward = false;
+ }
+ }
+ else {
+ //FIXME: Implement going backwards on the list
+ // I have no f***ing idea how this is done in C++
}
distance = *next_target - pos;