void ControlerDrag() { if (!Draged) { UndoRegisterMove(); Draged = true; } Ray ray = CameraControler.Current.Cam.ScreenPointToRay(Input.mousePosition); Vector3 NewPos = PosOnControler(ray); Vector3 Offset = NewPos - ControlerClickPoint; if (DragType == DragTypes.MoveZ) { Offset.x = 0; } if (DragType == DragTypes.MoveX) { Offset.z = 0; } if (SnapToGrid) { Offset = ScmapEditor.SnapToGrid(Offset); } Controls.position = ControlerBegin + Offset; Selection.OffsetPosition(Offset); for (int i = 0; i < SymetrySelection.Length; i++) { SymetrySelection[i].OffsetPosition(Offset); } }
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(); }