| 19038 | } |
| 19039 | |
| 19040 | int16 cFodder::Mission_Loop() { |
| 19041 | |
| 19042 | for (;;) { |
| 19043 | mGame_Data.mDemoRecorded.save(); |
| 19044 | |
| 19045 | if (GameOverCheck()) |
| 19046 | return -1; |
| 19047 | |
| 19048 | // Prepare the next mission |
| 19049 | Phase_EngineReset(); |
| 19050 | Phase_SquadPrepare(); |
| 19051 | |
| 19052 | mInput_Enabled = false; |
| 19053 | |
| 19054 | intro_main(); |
| 19055 | |
| 19056 | // Single / Random Map mode |
| 19057 | if (mCustom_Mode == eCustomMode_Map) { |
| 19058 | if (mVersionDefault->mName == "Random Map") { |
| 19059 | sMapParams Params(mRandom.get()); |
| 19060 | CreateRandom(Params); |
| 19061 | mGame_Data.mMission_Recruitment = 0; |
| 19062 | } |
| 19063 | else { |
| 19064 | Custom_ShowMapSelection(); |
| 19065 | } |
| 19066 | |
| 19067 | if (mCustom_Mode == eCustomMode_None) |
| 19068 | return -1; |
| 19069 | } |
| 19070 | else { |
| 19071 | // Prepare a new game? |
| 19072 | if (mGame_Data.mMission_Recruitment && !mParams->mSkipRecruit) { |
| 19073 | mGame_Data.mMission_Recruitment = 0; |
| 19074 | |
| 19075 | switch (Recruit_Show()) { |
| 19076 | case 0: // Start Mission |
| 19077 | break; |
| 19078 | |
| 19079 | case -1: // Return to version select |
| 19080 | return -1; |
| 19081 | |
| 19082 | case -2: // Custom set mode |
| 19083 | return -2; |
| 19084 | |
| 19085 | case -3: // Load/Save pressed |
| 19086 | continue; |
| 19087 | } |
| 19088 | } |
| 19089 | } |
| 19090 | |
| 19091 | |
| 19092 | mMusic_SlowVolumeDecrease = true; |
| 19093 | |
| 19094 | WindowTitleSet(true); |
| 19095 | |
| 19096 | switch (Briefing_Show()) { |
| 19097 | |