| 130 | } |
| 131 | |
| 132 | bool LevelHandler::Initialize(const LevelInitialization& levelInit) |
| 133 | { |
| 134 | ZoneScopedC(0x4876AF); |
| 135 | |
| 136 | _levelName = levelInit.LevelName; |
| 137 | _difficulty = levelInit.Difficulty; |
| 138 | _isReforged = levelInit.IsReforged; |
| 139 | _cheatsUsed = levelInit.CheatsUsed; |
| 140 | _elapsedMillisecondsBegin = levelInit.ElapsedMilliseconds; |
| 141 | |
| 142 | auto& resolver = ContentResolver::Get(); |
| 143 | resolver.BeginLoading(); |
| 144 | |
| 145 | _noiseTexture = resolver.GetNoiseTexture(); |
| 146 | |
| 147 | _rootNode = std::make_unique<SceneNode>(); |
| 148 | _rootNode->setVisitOrderState(SceneNode::VisitOrderState::Disabled); |
| 149 | |
| 150 | _console = std::make_unique<UI::InGameConsole>(this); |
| 151 | |
| 152 | auto p = _levelName.partition('/'); |
| 153 | |
| 154 | // Try to search also "unknown" directory |
| 155 | LevelDescriptor descriptor; |
| 156 | if (!resolver.TryLoadLevel(_levelName, _difficulty, descriptor) && |
| 157 | (p[0] == "unknown"_s || !resolver.TryLoadLevel(String("unknown/"_s + p[2]), _difficulty, descriptor))) { |
| 158 | LOGE("Cannot load level \"{}\"", _levelName); |
| 159 | return false; |
| 160 | } |
| 161 | |
| 162 | _console->WriteLine(UI::MessageLevel::Debug, _f("Level \"{}\" initialized", descriptor.DisplayName)); |
| 163 | |
| 164 | AttachComponents(std::move(descriptor)); |
| 165 | SpawnPlayers(levelInit); |
| 166 | |
| 167 | OnInitialized(); |
| 168 | resolver.EndLoading(); |
| 169 | |
| 170 | return true; |
| 171 | } |
| 172 | |
| 173 | bool LevelHandler::Initialize(Stream& src, std::uint16_t version) |
| 174 | { |
no test coverage detected