public void SaveArmy(LuaParser.Creator LuaFile, string ArmyName) { LuaFile.AddSaveComent(""); LuaFile.AddSaveComent(ArmyName); LuaFile.AddSaveComent(""); LuaFile.AddLine(LuaParser.Write.PropertieToLua(ArmyName) + LuaParser.Write.SetValue); LuaFile.OpenTab(LuaParser.Write.OpenBracket); LuaFile.AddLine(LuaParser.Write.StringToLua(KEY_PERSONALITY, personality)); LuaFile.AddLine(LuaParser.Write.StringToLua(KEY_PLANS, plans)); LuaFile.AddLine(LuaParser.Write.IntToLua(KEY_COLOR, color)); LuaFile.AddLine(LuaParser.Write.IntToLua(KEY_FACTION, faction)); // Economy LuaFile.OpenTab(KEY_ECONOMY + LuaParser.Write.OpenBracketValue); LuaFile.AddLine(LuaParser.Write.FloatToLua(EconomyTab.KEY_MASS, Economy.mass)); LuaFile.AddLine(LuaParser.Write.FloatToLua(EconomyTab.KEY_ENERGY, Economy.energy)); LuaFile.CloseTab(LuaParser.Write.EndBracketNext); // Aliances LuaFile.OpenTab(KEY_ALLIANCES + LuaParser.Write.OpenBracketValue); for (int a = 0; a < Alliances.Count; a++) { if (Alliances[a].ConnectedArmy == null) { continue; } LuaFile.AddLine(LuaParser.Write.StringToLua(LuaParser.Write.PropertieToLua(Alliances[a].ConnectedArmy.Name), Alliances[a].AllianceType)); } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); // Units Units.SaveUnitsGroup(LuaFile); //Platoon Builders LuaFile.OpenTab(KEY_PLATOONBUILDERS + LuaParser.Write.OpenBracketValue); LuaFile.AddLine(LuaParser.Write.StringToLua(PlatoonBuilder.KEY_NEXTPLATOONBUILDERID, "1")); LuaFile.OpenTab(PlatoonBuilder.KEY_BUILDERS + LuaParser.Write.OpenBracketValue); for (int i = 0; i < PlatoonBuilders.Length; i++) { PlatoonBuilders[i].SavePlatoonBuilder(LuaFile); } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); LuaFile.CloseTab(LuaParser.Write.EndBracketNext); LuaFile.CloseTab(LuaParser.Write.EndBracketNext); }
public void Save(string Path) { LuaParser.Creator LuaFile = new LuaParser.Creator(); LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Generated by FAF Map Editor"); LuaFile.AddSaveComent(""); LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Scenario"); LuaFile.AddSaveComent(""); LuaFile.AddLine(KEY_Scenario + LuaParser.Write.OpenBracketValue); { LuaFile.OpenTab(); LuaFile.AddLine(LuaParser.Write.StringToLua(Scenario.KEY_NEXTAREAID, Data.next_area_id.ToString())); // Props LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Props"); LuaFile.AddSaveComent(""); LuaFile.AddLine(Scenario.KEY_PROPS + LuaParser.Write.OpenBracketValue); LuaFile.AddLine(LuaParser.Write.EndBracketNext); // Areas LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Areas"); LuaFile.AddSaveComent(""); LuaFile.OpenTab(Scenario.KEY_AREAS + LuaParser.Write.OpenBracketValue); { for (int a = 0; a < Data.areas.Length; a++) { LuaFile.OpenTab(LuaParser.Write.PropertieToLua(Data.areas[a].Name) + LuaParser.Write.OpenBracketValue); LuaFile.AddLine(LuaParser.Write.RectangleToLua(LuaParser.Write.PropertieToLua(Areas.KEY_RECTANGLE), Data.areas[a].rectangle)); LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); //Markers GenerateAutoMarkers(); LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Markers"); LuaFile.AddSaveComent(""); LuaFile.OpenTab(Scenario.KEY_MASTERCHAIN + LuaParser.Write.OpenBracketValue); { for (int mc = 0; mc < Data.MasterChains.Length; mc++) { LuaFile.OpenTab(LuaParser.Write.PropertieToLua(Data.MasterChains[mc].Name) + LuaParser.Write.OpenBracketValue); { LuaFile.OpenTab(MasterChain.KEY_MARKERS + LuaParser.Write.OpenBracketValue); { if (Data.MasterChains[mc].Markers == null) { Data.MasterChains[mc].Markers = new List <Marker>(); } int Mcount = Data.MasterChains[mc].Markers.Count; for (int m = 0; m < Mcount; m++) { //LuaFile.OpenTab(LuaParser.Write.PropertiveToLua(Data.MasterChains[mc].Markers[m].Name) + LuaParser.Write.OpenBracketValue); Data.MasterChains[mc].Markers[m].SaveMarkerValues(LuaFile); //LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); //Chains LuaFile.OpenTab(Scenario.KEY_CHAINS + LuaParser.Write.OpenBracketValue); { for (int c = 0; c < Data.Chains.Length; c++) { Data.Chains[c].BakeMarkers(); LuaFile.OpenTab(LuaParser.Write.PropertieToLua(Data.Chains[c].Name) + LuaParser.Write.OpenBracketValue); LuaFile.OpenTab(Chain.KEY_MARKERS + LuaParser.Write.OpenBracketValue); for (int i = 0; i < Data.Chains[c].Markers.Length; i++) { LuaFile.AddLine("\"" + Data.Chains[c].Markers[i] + "\","); } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); LuaFile.AddLine(LuaParser.Write.StringToLua(Scenario.KEY_NEXTQUEUEID, Data.next_queue_id.ToString())); //Orders LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Orders"); LuaFile.AddSaveComent(""); LuaFile.OpenTab(Scenario.KEY_ORDERS + LuaParser.Write.OpenBracketValue); { //Leave empty } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); LuaFile.AddLine(LuaParser.Write.StringToLua(Scenario.KEY_NEXTPLATOONID, Data.next_platoon_id.ToString())); Debug.Log(Data.MasterChains[0].Markers.Count); //Platoons LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Platoons"); LuaFile.AddSaveComent(""); LuaFile.OpenTab(Scenario.KEY_PLATOONS + LuaParser.Write.OpenBracketValue); { for (int p = 0; p < Data.Platoons.Length; p++) { LuaFile.OpenTab(LuaParser.Write.PropertieToLua(Data.Platoons[p].Name) + LuaParser.Write.OpenBracketValue); LuaFile.AddLine(LuaParser.Write.Coma + Data.Platoons[p].PlatoonName + LuaParser.Write.Coma + LuaParser.Write.NextValue); LuaFile.AddLine(LuaParser.Write.Coma + Data.Platoons[p].PlatoonFunction + LuaParser.Write.Coma + LuaParser.Write.NextValue); if (Data.Platoons[p].Action.Loaded) { string Action = LuaParser.Write.OpenBracket; Action += LuaParser.Write.Coma + Data.Platoons[p].Action.Unit + LuaParser.Write.Coma + LuaParser.Write.NextValue + " "; Action += Data.Platoons[p].Action.Unit.ToString() + LuaParser.Write.NextValue + " "; Action += Data.Platoons[p].Action.count.ToString() + LuaParser.Write.NextValue + " "; Action += LuaParser.Write.Coma + Data.Platoons[p].Action.Action + LuaParser.Write.Coma + LuaParser.Write.NextValue + " "; Action += LuaParser.Write.Coma + Data.Platoons[p].Action.Formation + LuaParser.Write.Coma + LuaParser.Write.EndBracketNext + " "; LuaFile.AddLine(Action); } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); LuaFile.AddLine(LuaParser.Write.StringToLua(Scenario.KEY_NEXTARMYID, Data.next_army_id.ToString())); LuaFile.AddLine(LuaParser.Write.StringToLua(Scenario.KEY_NEXTGROUPID, Data.next_group_id.ToString())); LuaFile.AddLine(LuaParser.Write.StringToLua(Scenario.KEY_NEXTUNITID, Data.next_unit_id.ToString())); //Armies LuaFile.AddSaveComent(""); LuaFile.AddSaveComent("Armies"); LuaFile.AddSaveComent(""); LuaFile.OpenTab(Scenario.KEY_ARMIES + LuaParser.Write.OpenBracketValue); { //for(int c = 0; c < MapLuaParser.Current.) MapLuaParser.Current.ScenarioLuaFile.SaveArmys(LuaFile); /*for(int a = 0; a < Data.Armies.Length; a++) * { * LuaFile.AddSaveComent(""); * LuaFile.AddSaveComent("Army"); * LuaFile.AddSaveComent(""); * * LuaFile.AddLine(LuaParser.Write.PropertiveToLua(Data.Armies[a].Name) + LuaParser.Write.SetValue); * LuaFile.OpenTab(LuaParser.Write.OpenBracket); * { * Data.Armies[a].SaveArmy(LuaFile); * * } * LuaFile.CloseTab(LuaParser.Write.EndBracketNext); * }*/ } LuaFile.CloseTab(LuaParser.Write.EndBracketNext); } LuaFile.CloseTab(LuaParser.Write.EndBracket); System.IO.File.WriteAllText(Path, LuaFile.GetFileString()); }
public void Save(string Path) { if (!IsLoaded) { return; } ScenarioLua.ScenarioInfo ScenarioData = MapLuaParser.Current.ScenarioLuaFile.Data; SaveLua.Marker[] AllMarkers = MarkersControler.GetMarkers(); LuaParser.Creator LuaFile = new LuaParser.Creator(); LuaFile.AddSaveComent("Generated by FAF Map Editor"); LuaFile.AddComent("Table of which resources belong to which player, it is sorted in such a way that the first line"); LuaFile.AddComent("corresponds to player one, the second to player 2 and so on..."); LuaFile.NextLine(1); int ArmyId = 0; // Count armies for (int c = 0; c < ScenarioData.Configurations.Length; c++) { for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++) { for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++) { if (ScenarioData.Configurations[c].Teams[t].Armys[a].Data != null) { ArmyId++; } } } } LuaFile.AddLine("maxPlayerOnMap" + LuaParser.Write.SetValue + ArmyId); LuaFile.NextLine(4); LuaFile.AddComent("Line number is 10 + armynumber for the mexes in the table"); int ArmyCount = ArmyId; Data.spawnMexArmy = new MexArray[ArmyCount]; Data.spawnHydroArmy = new MexArray[ArmyCount]; ArmyId = 0; // Create Mass table for (int c = 0; c < ScenarioData.Configurations.Length; c++) { for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++) { for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++) { if (ScenarioData.Configurations[c].Teams[t].Armys[a].Data != null) { List <string> MarkerArrays = new List <string>(); for (int m = 0; m < AllMarkers.Length; m++) { if (AllMarkers[m].MarkerType == SaveLua.Marker.MarkerTypes.Mass && AllMarkers[m].SpawnWithArmy.Contains(ArmyId)) { MarkerArrays.Add(ConvertToTableName(AllMarkers[m].Name, MexName)); } } MarkerArrays.Sort(); Data.spawnMexArmy[ArmyId] = new MexArray(MarkerArrays.ToArray()); string ValueString = CreateTableValueString(MarkerArrays); if (ArmyCount >= 16 && ArmyId == ArmyCount - 1) { ValueString += LuaParser.Write.EndBracket; } else { ValueString += ","; } if (ArmyId == 0) { LuaFile.OpenTab("spwnMexArmy" + LuaParser.Write.OpenBracketValue + "\t\t" + ValueString, 5); } else { LuaFile.AddLine(ValueString); } ArmyId++; } } } } if (ArmyCount < 16) { for (int a = ArmyId; a < 16; a++) { if (a == 15) { LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracket + LuaParser.Write.EndBracket); } else { LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracketNext); } } } LuaFile.CloseTab(5); LuaFile.NextLine(3); LuaFile.AddComent("Line number is 30 + armynumber for the hydros in the table"); ArmyId = 0; // Create Hydro table for (int c = 0; c < ScenarioData.Configurations.Length; c++) { for (int t = 0; t < ScenarioData.Configurations[c].Teams.Length; t++) { for (int a = 0; a < ScenarioData.Configurations[c].Teams[t].Armys.Count; a++) { if (ScenarioData.Configurations[c].Teams[t].Armys[a].Data != null) { List <string> MarkerArrays = new List <string>(); for (int m = 0; m < AllMarkers.Length; m++) { if (AllMarkers[m].MarkerType == SaveLua.Marker.MarkerTypes.Hydrocarbon && AllMarkers[m].SpawnWithArmy.Contains(ArmyId)) { MarkerArrays.Add(ConvertToTableName(AllMarkers[m].Name, HydroName)); } } MarkerArrays.Sort(); Data.spawnHydroArmy[ArmyId] = new MexArray(MarkerArrays.ToArray()); string ValueString = CreateTableValueString(MarkerArrays); if (ArmyCount >= 16 && ArmyId == ArmyCount - 1) { ValueString += LuaParser.Write.EndBracket; } else { ValueString += ","; } if (ArmyId == 0) { LuaFile.OpenTab("spwnHydroArmy" + LuaParser.Write.OpenBracketValue + "\t" + ValueString, 5); } else { LuaFile.AddLine(ValueString); } ArmyId++; } } } } if (ArmyCount < 16) { for (int a = ArmyId; a < 16; a++) { if (a == 15) { LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracket + LuaParser.Write.EndBracket); } else { LuaFile.AddLine(LuaParser.Write.OpenBracket + LuaParser.Write.EndBracketNext); } } } LuaFile.CloseTab(5); LuaFile.NextLine(2); LuaFile.AddComent("RESOURCE SCALING OPTIONS"); LuaFile.AddComent("exampleMexes = {{1,2},{3,4},{5,6}}, -- exampleMexes = {{1,2}}"); LuaFile.AddComent("exampleMexes = {{a},{b},{c}}, -- exampleMexes = {{a}}"); LuaFile.AddComent("option key=1 : removes a+b+c -- option key=1 : removes a"); LuaFile.AddComent("option key=2 : spawn a, removes b+c -- option key=2 : spawns a"); LuaFile.AddComent("option key=3 : spawn a+b, removes c"); LuaFile.AddComent("option key=4 : spawn a+b+c"); LuaFile.NextLine(1); int TablesCount = Data.AllTables.Count; for (int t = 0; t < TablesCount; t++) { string TableString = Data.AllTables[t].Key + LuaParser.Write.SetValue; if (!Data.AllTables[t].OneDimension) { TableString += LuaParser.Write.OpenBracket; } for (int v = 0; v < Data.AllTables[t].Values.Length; v++) { string TableValueKey = Data.AllTables[t].Key; if (!Data.AllTables[t].OneDimension) { TableValueKey += "#" + (v); } List <string> NewMexes = new List <string>(); for (int m = 0; m < AllMarkers.Length; m++) { if (Data.AllTables[t].IsHydro && AllMarkers[m].MarkerType == SaveLua.Marker.MarkerTypes.Hydrocarbon) { // Hydro if (AllMarkers[m].AdaptiveKeys.Contains(TableValueKey)) { NewMexes.Add(ConvertToTableName(AllMarkers[m].Name, HydroName)); } } else { // Mass if (AllMarkers[m].AdaptiveKeys.Contains(TableValueKey)) { NewMexes.Add(ConvertToTableName(AllMarkers[m].Name, MexName)); } } } NewMexes.Sort(); Data.AllTables[t].Values[v] = new MexArray(NewMexes.ToArray()); if (v > 0) { TableString += LuaParser.Write.NextValue; } TableString += CreateTableValueString(NewMexes); } if (!Data.AllTables[t].OneDimension) { TableString += LuaParser.Write.EndBracket; } LuaFile.AddLine(TableString); LuaFile.NextLine(); } System.IO.File.WriteAllText(Path, LuaFile.GetFileString()); }