diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2025-05-23 16:53:14 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-23 16:53:14 -0600 |
| commit | 2a0c0939c780babc45c8c22dfd6f94563485bae5 (patch) | |
| tree | 0a8f7d6a5a99452645260d53e778204327275deb /src/engine/World.h | |
| parent | 9363e3d77631b1028a765c075a00293bd20c9ba7 (diff) | |
Refactor World::Courses to unique_ptr (#211)
* wip course unique ptr
* Track unique_ptr : This probably compiles
* Finish impl Courses as unique_ptr
* Fix error
* Fixes
* More fixes
* Cleanup
* Remove old vars
---------
Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
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: |
