diff options
Diffstat (limited to 'src/engine/World.h')
| -rw-r--r-- | src/engine/World.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/engine/World.h b/src/engine/World.h index 91287b162..f32cf00ff 100644 --- a/src/engine/World.h +++ b/src/engine/World.h @@ -54,7 +54,7 @@ public: explicit World(); ~World(); - void AddCourse(Course* course); + Course* AddCourse(std::unique_ptr<Course> course); AActor* AddActor(AActor* actor); struct Actor* AddBaseActor(); @@ -96,6 +96,16 @@ public: // These are only for browsing through the course list void SetCourse(const char*); + template<typename T> + void SetCourseByType() { + for (const auto& course : Courses) { + if (dynamic_cast<T*>(course.get())) { + CurrentCourse = course.get(); + return; + } + } + printf("World::SetCourseByType() No course by the type found"); + } void NextCourse(void); void PreviousCourse(void); @@ -122,7 +132,7 @@ public: std::vector<std::shared_ptr<TrainCrossing>> Crossings; // Holds all available courses - std::vector<Course*> Courses; + std::vector<std::unique_ptr<Course>> Courses; size_t CourseIndex = 0; // For browsing courses. private: |
