Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/racetrack.cc')
-rw-r--r--src/game/racetrack.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/game/racetrack.cc b/src/game/racetrack.cc
index 897a839..cfacb82 100644
--- a/src/game/racetrack.cc
+++ b/src/game/racetrack.cc
@@ -56,6 +56,9 @@ void RaceTrack::add_checkpoint(CheckPoint *checkpoint)
void RaceTrack::reset()
{
+ if (track_player) {
+ track_player->set_mission_target(0);
+ }
track_player = 0;
track_racestart = 0;
track_checkpointtime = 0;
@@ -64,8 +67,7 @@ void RaceTrack::reset()
(*cpit)->set_eventstate(core::Entity::NoPower);
}
- entity_eventstate |= core::Entity::NoPower;
- entity_dirty = true;
+ set_eventstate(core::Entity::NoPower);
}
void RaceTrack::frame(float seconds)
@@ -93,6 +95,7 @@ void RaceTrack::frame(float seconds)
message.append(track_player->name());
message.append(" ^Bactivated the race! Race starts in 5...");
core::server()->broadcast(message);
+ track_player->set_mission_target(this);
return;
}
}
@@ -149,6 +152,7 @@ void RaceTrack::frame(float seconds)
track_checkpointtime = core::server()->time() + 15.0f;
track_checkpoint = track_checkpoints.begin();
(*track_checkpoint)->set_eventstate(core::Entity::Normal);
+ track_player->set_mission_target((*track_checkpoint));
}
}
@@ -175,16 +179,13 @@ void RaceTrack::frame(float seconds)
(*track_checkpoint)->set_eventstate(core::Entity::NoPower);
track_checkpoint++;
(*track_checkpoint)->set_eventstate(core::Entity::Normal);
+ track_player->set_mission_target((*track_checkpoint));
} else {
std::stringstream msgstr;
msgstr << "^BRace completed in " << core::server()->time() - track_racestart << " seconds!";
core::server()->broadcast(msgstr.str());
- track_player = 0;
- track_racestart = 0;
- track_checkpointtime = 0;
-
reset();
}
}