1#include "RailManager.hh"
3#include "game/system/CourseMap.hh"
4#include "game/system/map/MapdataGeoObj.hh"
9RailManager *RailManager::CreateInstance() {
11 s_instance =
new RailManager;
12 s_instance->createPaths();
17void RailManager::DestroyInstance() {
19 auto *instance = s_instance;
25RailManager::RailManager() =
default;
28RailManager::~RailManager() {
31 WARN(
"RailManager instance not explicitly handled!");
34 for (
auto *&rail : m_rails) {
40void RailManager::createPaths() {
41 auto *courseMap = System::CourseMap::Instance();
42 m_pointCount = courseMap->getPointInfoCount();
43 m_extraInterplatorCount = 8;
44 u16 geoCount = courseMap->getGeoObjCount();
45 m_rails.reserve(m_pointCount + m_extraInterplatorCount);
47 for (u16 i = 0; i < m_pointCount; ++i) {
48 bool isObjectRoute =
false;
49 auto *pointInfo = courseMap->getPointInfo(i);
50 bool isSpline = pointInfo->setting(0);
52 for (u16 j = 0; j < geoCount; ++j) {
53 auto *geoObj = courseMap->getGeoObj(j);
55 if (geoObj->pathId() != i) {
60 m_rails.push_back(
new RailSpline(i, pointInfo));
62 m_rails.push_back(
new RailLine(i, pointInfo));
74 m_rails.push_back(
new RailSpline(i, pointInfo));
76 m_rails.push_back(
new RailLine(i, pointInfo));
81RailManager *RailManager::s_instance =
nullptr;