summaryrefslogtreecommitdiff
path: root/src/engine/World.cpp
diff options
context:
space:
mode:
authorMegaMech <7255464+MegaMech@users.noreply.github.com>2025-05-23 11:53:03 -0600
committerMegaMech <7255464+MegaMech@users.noreply.github.com>2025-05-23 11:53:03 -0600
commitdb68d0b1c53bd9e627c0b343870bd0633bf782d4 (patch)
tree88477098a1c71fda6813455e2e1a3c675ebb3da7 /src/engine/World.cpp
parentba9af8e063b0963d06c667ddf04d8cefbf50dbb4 (diff)
Track unique_ptr : This probably compiles
Diffstat (limited to 'src/engine/World.cpp')
-rw-r--r--src/engine/World.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/engine/World.cpp b/src/engine/World.cpp
index e84cd5c47..998e3ba71 100644
--- a/src/engine/World.cpp
+++ b/src/engine/World.cpp
@@ -90,20 +90,31 @@ void World::SetCourse(const char* name) {
//! @todo Use content dictionary instead
for (size_t i = 0; i < Courses.size(); i++) {
if (strcmp(Courses[i]->Props.Name, name) == 0) {
- CurrentCourse = Courses[i];
+ CurrentCourse = Courses[i].get();
break;
}
}
std::runtime_error("SetCourse() Course name not found in Courses list");
}
+template<typename T>
+void World::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 World::NextCourse() {
if (CourseIndex < Courses.size() - 1) {
CourseIndex++;
} else {
CourseIndex = 0;
}
- gWorldInstance.CurrentCourse = Courses[CourseIndex];
+ gWorldInstance.CurrentCourse = Courses[CourseIndex].get();
}
void World::PreviousCourse() {
@@ -112,7 +123,7 @@ void World::PreviousCourse() {
} else {
CourseIndex = Courses.size() - 1;
}
- gWorldInstance.CurrentCourse = Courses[CourseIndex];
+ gWorldInstance.CurrentCourse = Courses[CourseIndex].get();
}
AActor* World::AddActor(AActor* actor) {