| 4218 | }; |
| 4219 | |
| 4220 | void cFodder::Campaign_Select_Setup() { |
| 4221 | mCampaignList.clear(); |
| 4222 | |
| 4223 | mPhase_In_Progress = true; |
| 4224 | mPhase_Aborted = false; |
| 4225 | mGUI_SaveLoadAction = 0; |
| 4226 | |
| 4227 | { |
| 4228 | for (auto& Name : mVersions->GetCampaignNames()) { |
| 4229 | |
| 4230 | if (g_ResourceMan->isCampaignAvailable(Name) || Name == "Single Map" || Name == "Random Map") |
| 4231 | mCampaignList.push_back(Name); |
| 4232 | } |
| 4233 | } |
| 4234 | |
| 4235 | { |
| 4236 | auto Files = g_ResourceMan->GetCampaigns(); |
| 4237 | |
| 4238 | // Append all custom campaigns to the list |
| 4239 | for (auto& File : Files) { |
| 4240 | size_t Pos = File.find_first_of("."); |
| 4241 | std::string FileName = File.substr(0, Pos); |
| 4242 | |
| 4243 | // Don't add known campaigns |
| 4244 | if (mVersions->isCampaignKnown(FileName)) |
| 4245 | continue; |
| 4246 | |
| 4247 | mCampaignList.push_back(FileName); |
| 4248 | } |
| 4249 | } |
| 4250 | |
| 4251 | mGUI_Select_File_CurrentIndex = 0; |
| 4252 | mGUI_Select_File_Count = (int16)mCampaignList.size(); |
| 4253 | |
| 4254 | |
| 4255 | |
| 4256 | // Create the title screen depending on which data is loaded |
| 4257 | if (mVersionCurrent->isRetail()) { |
| 4258 | sMapParams Params(0x15, 0x0F, eTileTypes_Jungle, eTileSub_0); |
| 4259 | Map_Create(Params); |
| 4260 | std::memcpy(mMap->data() + 0x60, mCampaignSelectMap_Jungle.data(), mMap->size() - 0x60); |
| 4261 | } |
| 4262 | else { |
| 4263 | sMapParams Params(0x15, 0x0F, eTileTypes_AFX, eTileSub_0); |
| 4264 | Map_Create(Params); |
| 4265 | std::memcpy(mMap->data() + 0x60, mCampaignSelectMap_AF.data(), mMap->size() - 0x60); |
| 4266 | } |
| 4267 | |
| 4268 | Campaign_Select_Sprite_Prepare(); |
| 4269 | Music_Play(mMapLoaded->getTileType() + 0x32, 4); |
| 4270 | mSound->Music_SetVolume(-1, 0x10); |
| 4271 | |
| 4272 | if (mGUI_SaveLoadAction != 3) { |
| 4273 | mSurface->palette_FadeTowardNew(); |
| 4274 | Mouse_Setup(); |
| 4275 | } |
| 4276 | mGUI_SaveLoadAction = 0; |
| 4277 |
no test coverage detected