| 118 | } |
| 119 | |
| 120 | bool cCampaign::SaveCampaign() { |
| 121 | Json Campaign; |
| 122 | Campaign["Author"] = mAuthor; |
| 123 | Campaign["Name"] = mName; |
| 124 | |
| 125 | // Each Mission |
| 126 | for (auto CurrentMission : mMissions) { |
| 127 | Json Mission; |
| 128 | Mission["Name"] = CurrentMission->mName; |
| 129 | |
| 130 | // Each Phase of a mission |
| 131 | for(auto CurrentPhase : CurrentMission->mPhases) { |
| 132 | Json Phase; |
| 133 | Phase["MapName"] = CurrentPhase->mMapFilename; |
| 134 | Phase["Name"] = CurrentPhase->mName; |
| 135 | Phase["Aggression"][0] = CurrentPhase->mAggression.mMin; |
| 136 | Phase["Aggression"][1] = CurrentPhase->mAggression.mMax; |
| 137 | |
| 138 | Phase["Grenades"] = CurrentPhase->mGrenades; |
| 139 | Phase["Rockets"] = CurrentPhase->mRockets; |
| 140 | |
| 141 | for (auto Goal : CurrentPhase->mGoals) |
| 142 | Phase["Objectives"].push_back(mMissionGoal_Titles[Goal - 1]); |
| 143 | |
| 144 | Mission["Phases"].push_back(Phase); |
| 145 | } |
| 146 | Campaign["Missions"].push_back(Mission); |
| 147 | } |
| 148 | |
| 149 | // Save the campaign |
| 150 | std::ofstream MissionFile(GetPathToCampaign()); |
| 151 | if (MissionFile.is_open()) { |
| 152 | MissionFile << Campaign.dump(1); |
| 153 | MissionFile.close(); |
| 154 | return true; |
| 155 | } |
| 156 | |
| 157 | return false; |
| 158 | } |
| 159 | |
| 160 | /** |
| 161 | * Load a campaign |