public void ImportMarkers() { var extensions = new[] { new ExtensionFilter("Faf Markers", "fafmapmarkers") }; var paths = StandaloneFileBrowser.OpenFilePanel("Import markers", DefaultPath, extensions, false); if (paths.Length > 0 && !string.IsNullOrEmpty(paths[0])) { ExportMarkers ImpMarkers = JsonUtility.FromJson <ExportMarkers>(System.IO.File.ReadAllText(paths[0])); bool AnyCreated = false; int mc = 0; MapLua.SaveLua.Marker[] CreatedMarkers = new MapLua.SaveLua.Marker[ImpMarkers.Markers.Length]; for (int m = 0; m < ImpMarkers.Markers.Length; m++) { if (!AnyCreated) { Undo.Current.RegisterMarkersAdd(); } AnyCreated = true; if (SelectionManager.Current.SnapToGrid) { ImpMarkers.Markers[m].Pos = ScmapEditor.SnapToGridCenter(ImpMarkers.Markers[m].Pos, true, SelectionManager.Current.SnapToWater); } MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(ImpMarkers.Markers[m].MarkerType); CreatedMarkers[m] = NewMarker; NewMarker.position = ScmapEditor.WorldPosToScmap(ImpMarkers.Markers[m].Pos); NewMarker.orientation = ImpMarkers.Markers[m].Rot.eulerAngles; MarkersControler.CreateMarker(NewMarker, mc); ChainsList.AddToCurrentChain(NewMarker); MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker); } for (int m = 0; m < ImpMarkers.Markers.Length; m++) { CreatedMarkers[m].AdjacentToMarker = new List <MapLua.SaveLua.Marker>(); for (int c = 0; c < ImpMarkers.Markers[m].Connected.Length; c++) { CreatedMarkers[m].AdjacentToMarker.Add(CreatedMarkers[ImpMarkers.Markers[m].Connected[c]]); } } RenderMarkersConnections.Current.UpdateConnections(); EnvPaths.SetLastPath(ExportPathKey, System.IO.Path.GetDirectoryName(paths[0])); GenericInfoPopup.ShowInfo("Markers imported"); } }
/// <summary> /// Search for all markers of defined types that name prefix is not correct /// </summary> void FixAiMarkersNamesExecute() { HashSet <MapLua.SaveLua.Marker> ToChange = new HashSet <MapLua.SaveLua.Marker>(); for (int mc = 0; mc < MapLuaParser.Current.SaveLuaFile.Data.MasterChains.Length; mc++) { int Mcount = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Count; for (int m = 0; m < Mcount; m++) { switch (MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[m].MarkerType) { case MapLua.SaveLua.Marker.MarkerTypes.NavalArea: case MapLua.SaveLua.Marker.MarkerTypes.ExpansionArea: case MapLua.SaveLua.Marker.MarkerTypes.LargeExpansionArea: string RequiredPrefix = MapLua.SaveLua.GetPrefixByType(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[m].MarkerType); if (!MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[m].Name.StartsWith(RequiredPrefix)) { ToChange.Add(MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers[m]); } break; } } } if (ToChange.Count <= 0) { GenericPopup.ShowPopup(GenericPopup.PopupTypes.OneButton, "Fix AI Marker names", "There are no AI markers that need name fix.", "OK", null); return; } MapLua.SaveLua.Marker[] UndoMarkersArray = new MapLua.SaveLua.Marker[ToChange.Count]; ToChange.CopyTo(UndoMarkersArray); Undo.RegisterUndo(new UndoHistory.HistoryMarkersChange(), new UndoHistory.HistoryMarkersChange.MarkersChangeHistoryParameter(UndoMarkersArray)); int ChangedMarkersCount = 0; for (int i = 0; i < UndoMarkersArray.Length; i++) { //string RequiredPrefix = MapLua.SaveLua.GetPrefixByType(UndoMarkersArray[i].MarkerType); //if (!RequiredPrefix.StartsWith(RequiredPrefix)) //{ MapLua.SaveLua.RemoveMarker(UndoMarkersArray[i].Name); UndoMarkersArray[i].Name = MapLua.SaveLua.GetLowestName(UndoMarkersArray[i].MarkerType); if (UndoMarkersArray[i].MarkerObj) { UndoMarkersArray[i].MarkerObj.gameObject.name = UndoMarkersArray[i].Name; } MapLua.SaveLua.AddNewMarker(UndoMarkersArray[i]); ChangedMarkersCount++; //} } GenericPopup.ShowPopup(GenericPopup.PopupTypes.OneButton, "Fix AI Marker names", "Changed names of " + ChangedMarkersCount + " markers.", "OK", null); MarkerSelectionOptions.UpdateOptions(); }
public static void AddToCurrentChain(MapLua.SaveLua.Marker Marker) { if (Current && Current.ChainSelected >= 0) { MapLuaParser.Current.SaveLuaFile.Data.Chains[Current.ChainSelected].ConnectedMarkers.Add(Marker); MapLuaParser.Current.SaveLuaFile.Data.Chains[Current.ChainSelected].BakeMarkers(); Marker.ConnectedToChains.Add(MapLuaParser.Current.SaveLuaFile.Data.Chains[Current.ChainSelected]); } }
void GenerateMarkers() { ChainName.text = MapLuaParser.Current.SaveLuaFile.Data.Chains[ChainSelected].Name; int Mcount = MapLuaParser.Current.SaveLuaFile.Data.Chains[ChainSelected].ConnectedMarkers.Count; for (int i = 0; i < Mcount; i++) { MapLua.SaveLua.Marker CurrentMarker = MapLuaParser.Current.SaveLuaFile.Data.Chains[ChainSelected].ConnectedMarkers[i]; GameObject newList = Instantiate(ListPrefab_Marker, Pivot.position, Quaternion.identity) as GameObject; newList.GetComponent <RectTransform>().SetParent(Pivot); ListObject NewListObject = newList.GetComponent <ListObject>(); NewListObject.ObjectName.text = CurrentMarker.Name; NewListObject.InstanceId = i; //NewListObject.ClickActionId = SelectMarker; NewListObject.DragAction = DragEnded; NewListObject.ConnectedGameObject = CurrentMarker.MarkerObj.gameObject; NewListObject.ClickAction = Selection.SelectionManager.Current.SelectObject; int ObjectId = SelectionManager.Current.GetIdOfObject(NewListObject.ConnectedGameObject); if (Selection.SelectionManager.Current.Selection.Ids.Contains(ObjectId)) { NewListObject.SetSelection(1); } else { NewListObject.SetSelection(0); if (Selection.SelectionManager.Current.SymetrySelection.Length > 0) { for (int s = 0; s < Selection.SelectionManager.Current.SymetrySelection.Length; s++) { if (Selection.SelectionManager.Current.SymetrySelection[s].Ids.Contains(ObjectId)) { NewListObject.SetSelection(2); } } } } if (CurrentMarker.MarkerType == MapLua.SaveLua.Marker.MarkerTypes.BlankMarker && ArmyInfo.ArmyExist(CurrentMarker.Name)) { NewListObject.Icon.sprite = Markers.MarkersControler.Current.SpawnGraphic.Icon; } else { NewListObject.Icon.sprite = Markers.MarkersControler.GetIconByType(CurrentMarker.MarkerType); } AllFields.Add(NewListObject); } }
public override void DoUndo() { MapLua.SaveLua.Marker[] RegisterMarkers = new MapLua.SaveLua.Marker[Markers.Length]; for (int i = 0; i < Markers.Length; i++) { RegisterMarkers[i] = Markers[i].Marker; } Undo.RegisterRedo(new HistoryMarkersChange(), new MarkersChangeHistoryParameter(RegisterMarkers)); DoRedo(); }
public void Load(MapLua.SaveLua.Marker RegisterMarker) { Marker = RegisterMarker; Name = Marker.Name; zoom = Marker.zoom; canSetCamera = Marker.canSetCamera; canSyncCamera = Marker.canSyncCamera; size = Marker.size; amount = Marker.amount; offset = Marker.offset; scale = Marker.scale; effectTemplate = Marker.EffectTemplate; if (Marker.MarkerObj && Marker.MarkerType == MapLua.SaveLua.Marker.MarkerTypes.CameraInfo) { Position = Marker.MarkerObj.Tr.position; Orientation = Marker.MarkerObj.Tr.localRotation; } }
public void Load(MapLua.SaveLua.Marker RegisterMarker) { Marker = RegisterMarker; Name = Marker.Name; zoom = Marker.zoom; canSetCamera = Marker.canSetCamera; canSyncCamera = Marker.canSyncCamera; size = Marker.size; amount = Marker.amount; offset = Marker.offset; scale = Marker.scale; effectTemplate = Marker.EffectTemplate; cloudCount = Marker.cloudCount; cloudCountRange = Marker.cloudCountRange; cloudEmitterScale = Marker.cloudEmitterScale; cloudEmitterScaleRange = Marker.cloudEmitterScaleRange; cloudSpread = Marker.cloudSpread; cloudHeightRange = Marker.cloudHeightRange; spawnChance = Marker.spawnChance; ForceType = Marker.ForceType; cloudHeight = Marker.cloudHeight; WeatherDriftDirection = Marker.WeatherDriftDirection; MapStyle = Marker.MapStyle; WeatherType04 = Marker.WeatherType04; WeatherType03 = Marker.WeatherType03; WeatherType02 = Marker.WeatherType02; WeatherType01 = Marker.WeatherType01; WeatherType04Chance = Marker.WeatherType04Chance; WeatherType03Chance = Marker.WeatherType03Chance; WeatherType02Chance = Marker.WeatherType02Chance; WeatherType01Chance = Marker.WeatherType01Chance; if (Marker.MarkerObj && Marker.MarkerType == MapLua.SaveLua.Marker.MarkerTypes.CameraInfo) { Position = Marker.MarkerObj.Tr.position; Orientation = Marker.MarkerObj.Tr.localRotation; } }
public void Place(Vector3[] Positions, Quaternion[] Rotations, Vector3[] Scales) { //List<MapLua.SaveLua.Marker> NewMarkers = new List<MapLua.SaveLua.Marker>(); int mc = 0; // MasterChainID LastAddedMarkers = new List <int>(); int TotalMarkersCount = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Count; bool AnyCreated = false; if (CreationId == 5) { Vector3 NewPos; MarkerPreset Mpreset = MarkerPresets[SpawnPressetDropdown.value].GetComponent <MarkerPreset>(); for (int i = 0; i < Positions.Length; i++) { for (int m = 0; m < Mpreset.Markers.Length; m++) { if (!AnyCreated) { Undo.Current.RegisterMarkersAdd(); } AnyCreated = true; //Debug.Log(Mpreset.Markers[m].Tr.localPosition); NewPos = Positions[i] + Rotations[i] * Mpreset.Markers[m].Tr.localPosition; if (SelectionManager.Current.SnapToGrid) { NewPos = ScmapEditor.SnapToGridCenter(NewPos, true, SelectionManager.Current.SnapToWater); } //NewPos.y = ScmapEditor.Current.Teren.SampleHeight(NewPos); MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(Mpreset.Markers[m].MarkerType); NewMarker.position = ScmapEditor.WorldPosToScmap(NewPos); //NewMarker.orientation = MarkersControler.CreateMarker(NewMarker, mc); ChainsList.AddToCurrentChain(NewMarker); LastAddedMarkers.Add(TotalMarkersCount); TotalMarkersCount++; MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker); } } } else { for (int i = 0; i < Positions.Length; i++) { if (!AnyCreated) { Undo.Current.RegisterMarkersAdd(); } AnyCreated = true; MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(LastCreationType); bool snapToWater = SelectionManager.Current.SnapToWater; if (LastCreationType == MapLua.SaveLua.Marker.MarkerTypes.Mass || LastCreationType == MapLua.SaveLua.Marker.MarkerTypes.Hydrocarbon) { snapToWater = false; } if (SelectionManager.Current.SnapToGrid) { Positions[i] = ScmapEditor.SnapToGridCenter(Positions[i], true, snapToWater); } //Positions[i].y = ScmapEditor.Current.Teren.SampleHeight(Positions[i]); ChainsList.AddToCurrentChain(NewMarker); NewMarker.position = ScmapEditor.WorldPosToScmap(Positions[i]); if (CreationId == 3) { NewMarker.orientation = Rotations[i].eulerAngles; } else { NewMarker.orientation = Vector3.zero; } MarkersControler.CreateMarker(NewMarker, mc); LastAddedMarkers.Add(TotalMarkersCount); TotalMarkersCount++; MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker); } } if (AnyCreated) { //MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers = MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Concat<MapLua.SaveLua.Marker>(NewMarkers.ToArray()); MarkerSelectionOptions.UpdateOptions(); MarkersControler.UpdateBlankMarkersGraphics(); RenderMarkersWarnings.Generate(); } }
IEnumerator CreateFiles() { ScmapEditor.Current.UnloadMap(); MapLuaParser.Current.ResetUI(); MapLuaParser.Current.SaveLuaFile.Unload(); string FileName = Name.text.Replace(" ", "_"); Debug.Log("Create new map: " + FolderName); MapLuaParser.Current.FolderName = FolderName; MapLuaParser.Current.ScenarioFileName = FileName + "_scenario"; MapLuaParser.Current.FolderParentPath = MapPath; Directory.CreateDirectory(MapPath + MapLuaParser.Current.FolderName); int NewMapWidth = SizeByValue(Width.value); int NewMapHeight = SizeByValue(Height.value); int NewMapSize = NewMapWidth; if (NewMapHeight > NewMapSize) { NewMapSize = NewMapHeight; } // Scenario - Basic MapLuaParser.Current.ScenarioLuaFile.Data = new MapLua.ScenarioLua.ScenarioInfo(); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations = new MapLua.ScenarioLua.Configuration[1]; MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0] = new MapLua.ScenarioLua.Configuration(); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].name = "standard"; MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].Teams = new MapLua.ScenarioLua.Team[1]; MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].Teams[0] = new MapLua.ScenarioLua.Team(); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].Teams[0].name = "FFA"; MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].Teams[0].Armys = new List <MapLua.ScenarioLua.Army>(); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].ExtraArmys = new List <MapLua.ScenarioLua.Army>(); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].ExtraArmys.Add(new MapLua.ScenarioLua.Army("ARMY_17")); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].ExtraArmys.Add(new MapLua.ScenarioLua.Army("NEUTRAL_CIVILIAN")); MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].factions = new MapLua.ScenarioLua.Factions[0]; MapLuaParser.Current.ScenarioLuaFile.Data.starts = true; // Scenario - User settings MapLuaParser.Current.ScenarioLuaFile.Data.name = Name.text; MapLuaParser.Current.ScenarioLuaFile.Data.description = Desc.text; MapLuaParser.Current.ScenarioLuaFile.Data.Size = new int[2]; MapLuaParser.Current.ScenarioLuaFile.Data.type = MapType.options[MapType.value].text.ToLower(); MapLuaParser.Current.ScenarioLuaFile.Data.Size[0] = NewMapSize; MapLuaParser.Current.ScenarioLuaFile.Data.Size[1] = NewMapSize; MapLuaParser.Current.ScenarioLuaFile.Data.save = "/maps/" + FolderName + "/" + FileName + "_save.lua"; MapLuaParser.Current.ScenarioLuaFile.Data.script = "/maps/" + FolderName + "/" + FileName + "_script.lua"; MapLuaParser.Current.ScenarioLuaFile.Data.map = "/maps/" + FolderName + "/" + FileName + ".scmap"; MapLuaParser.Current.ScenarioLuaFile.Data.map_version = 1; MapLuaParser.Current.SaveLuaFile.Data = new MapLua.SaveLua.Scenario(); MapLuaParser.Current.SaveLuaFile.Data.MasterChains[0].Markers = new List <MapLua.SaveLua.Marker>(); // Armies int Armies = ArmyCount.value + 1; float MapArmyDistance = NewMapWidth * 0.2f; for (int i = 0; i < Armies; i++) { MapLuaParser.Current.ScenarioLuaFile.Data.Configurations[0].Teams[0].Armys.Add(new MapLua.ScenarioLua.Army("ARMY_" + (i + 1))); MapLua.SaveLua.Marker A1marker = new MapLua.SaveLua.Marker(MapLua.SaveLua.Marker.MarkerTypes.BlankMarker, "ARMY_" + (i + 1)); Vector3 ArmyPosition = new Vector3((int)(NewMapWidth * 0.5f), InitialHeight.intValue, (int)(NewMapWidth * 0.5f)); ArmyPosition += Quaternion.Euler(Vector3.up * 360 * (i / (float)Armies)) * Vector3.forward * MapArmyDistance; A1marker.position = ScmapEditor.WorldPosToScmap(ScmapEditor.SnapToGrid(ScmapEditor.ScmapPosToWorld(ArmyPosition))); MapLuaParser.Current.SaveLuaFile.Data.MasterChains[0].Markers.Add(A1marker); } Markers.MarkersControler.LoadMarkers(); //Save lua MapLuaParser.Current.SaveLuaFile.Data.areas = new MapLua.SaveLua.Areas[1]; MapLuaParser.Current.SaveLuaFile.Data.areas[0] = new MapLua.SaveLua.Areas(); MapLuaParser.Current.SaveLuaFile.Data.areas[0].Name = "AREA_1"; if (NewMapWidth == NewMapHeight) { MapLuaParser.Current.SaveLuaFile.Data.areas[0].rectangle = new Rect(0, 0, NewMapWidth, NewMapHeight); } else { if (NewMapWidth > NewMapHeight) // Horizontal { int Offset = (NewMapWidth - NewMapHeight) / 2; MapLuaParser.Current.SaveLuaFile.Data.areas[0].rectangle = new Rect(0, Offset, NewMapWidth, NewMapHeight + Offset); } else // Vertical { int Offset = (NewMapHeight - NewMapWidth) / 2; MapLuaParser.Current.SaveLuaFile.Data.areas[0].rectangle = new Rect(Offset, 0, NewMapWidth + Offset, NewMapHeight); } } ScmapEditor.Current.map = new Map(MapLuaParser.Current.ScenarioLuaFile.Data.Size[0], MapLuaParser.Current.ScenarioLuaFile.Data.Size[1], InitialHeight.intValue, Water.isOn, WaterElv.intValue, DepthElevation.intValue, AbyssElevation.intValue); //GenerateControlTex.GenerateWater(); ScmapEditor.Current.LoadHeights(); yield return(null); yield return(null); MapLuaParser.Current.SaveMap(false); MapLuaParser.Current.SaveScriptLua(0); yield return(null); yield return(null); MapLuaParser.Current.LoadFile(); }
public void ImportMarkers() { var extensions = new[] { new ExtensionFilter("Faf Markers", "fafmapmarkers") }; var paths = StandaloneFileBrowser.OpenFilePanel("Import markers", EnvPaths.GetMapsPath(), extensions, false); /* * OpenFileDialog FileDialog = new OpenFileDialog(); * FileDialog.Title = "Import markers"; * FileDialog.AddExtension = true; * FileDialog.DefaultExt = ".fafmapmarkers"; * FileDialog.Filter = "Faf Markers (*.fafmapmarkers)|*.fafmapmarkers"; * FileDialog.CheckFileExists = true; */ if (paths.Length > 0 && !string.IsNullOrEmpty(paths[0])) { ExportMarkers ImpMarkers = JsonUtility.FromJson <ExportMarkers>(System.IO.File.ReadAllText(paths[0])); bool AnyCreated = false; int mc = 0; MapLua.SaveLua.Marker[] CreatedMarkers = new MapLua.SaveLua.Marker[ImpMarkers.Markers.Length]; for (int m = 0; m < ImpMarkers.Markers.Length; m++) { if (!AnyCreated) { Undo.Current.RegisterMarkersAdd(); } AnyCreated = true; if (SelectionManager.Current.SnapToGrid) { ImpMarkers.Markers[m].Pos = ScmapEditor.SnapToGridCenter(ImpMarkers.Markers[m].Pos, true, SelectionManager.Current.SnapToWater); } MapLua.SaveLua.Marker NewMarker = new MapLua.SaveLua.Marker(ImpMarkers.Markers[m].MarkerType); CreatedMarkers[m] = NewMarker; NewMarker.position = ScmapEditor.WorldPosToScmap(ImpMarkers.Markers[m].Pos); NewMarker.orientation = ImpMarkers.Markers[m].Rot.eulerAngles; MarkersControler.CreateMarker(NewMarker, mc); ChainsList.AddToCurrentChain(NewMarker); MapLuaParser.Current.SaveLuaFile.Data.MasterChains[mc].Markers.Add(NewMarker); } for (int m = 0; m < ImpMarkers.Markers.Length; m++) { CreatedMarkers[m].AdjacentToMarker = new List <MapLua.SaveLua.Marker>(); for (int c = 0; c < ImpMarkers.Markers[m].Connected.Length; c++) { CreatedMarkers[m].AdjacentToMarker.Add(CreatedMarkers[ImpMarkers.Markers[m].Connected[c]]); } } RenderMarkersConnections.Current.UpdateConnections(); } }