protected clsResult read_INI_Labels(string iniText) { var resultObject = new clsResult("Reading labels", false); logger.Info("Reading labels."); var typeNum = 0; var NewPosition = default(clsScriptPosition); var NewArea = default(clsScriptArea); var nameText = ""; var strLabel = ""; var strPosA = ""; var strPosB = ""; var idText = ""; UInt32 idNum = 0; XYInt xyIntA = null; XYInt xyIntB = null; var failedCount = 0; var modifiedCount = 0; try { var iniSections = IniReader.ReadString(iniText); foreach ( var iniSection in iniSections ) { var idx = iniSection.Name.IndexOf('_'); if ( idx > 0 ) { nameText = iniSection.Name.Substring(0, idx); } else { nameText = iniSection.Name; } switch ( nameText ) { case "position": typeNum = 0; break; case "area": typeNum = 1; break; case "object": typeNum = 2; break; default: typeNum = int.MaxValue; failedCount++; continue; } // Raised an exception if nothing was found try { strLabel = iniSection.Data.Where(d => d.Name == "label").First().Data; } catch ( Exception ex ) { resultObject.WarningAdd(string.Format("Failed to parse \"label\", error was: {0}", ex.Message)); logger.WarnException("Failed to parse \"label\", error was", ex); failedCount++; continue; } strLabel = strLabel.Replace("\"", ""); switch ( typeNum ) { case 0: //position strPosA = iniSection.Data.Where(d => d.Name == "pos").First().Data; if ( strPosA == null ) { failedCount++; continue; } try { xyIntA = XYInt.FromString(strPosA); NewPosition = new clsScriptPosition(map); NewPosition.PosX = xyIntA.X; NewPosition.PosY = xyIntA.Y; NewPosition.SetLabel(strLabel); if ( NewPosition.Label != strLabel || NewPosition.PosX != xyIntA.X || NewPosition.PosY != xyIntA.Y ) { modifiedCount++; } } catch ( Exception ex ) { resultObject.WarningAdd(string.Format("Failed to parse \"pos\", error was: {0}", ex.Message)); logger.WarnException("Failed to parse \"pos\", error was", ex); failedCount++; } break; case 1: //area try { strPosA = iniSection.Data.Where(d => d.Name == "pos1").First().Data; strPosB = iniSection.Data.Where(d => d.Name == "pos2").First().Data; xyIntA = XYInt.FromString(strPosA); xyIntB = XYInt.FromString(strPosA); NewArea = new clsScriptArea(map); NewArea.SetPositions(xyIntA, xyIntB); NewArea.SetLabel(strLabel); if ( NewArea.Label != strLabel || NewArea.PosAX != xyIntA.X | NewArea.PosAY != xyIntA.Y | NewArea.PosBX != xyIntB.X | NewArea.PosBY != xyIntB.Y ) { modifiedCount++; } } catch ( Exception ex ) { Debugger.Break(); resultObject.WarningAdd(string.Format("Failed to parse \"pos1\" or \"pos2\", error was: {0}", ex.Message)); logger.WarnException("Failed to parse \"pos1\" or \"pos2\".", ex); failedCount++; } break; case 2: //object idText = iniSection.Data.Where(d => d.Name == "id").First().Data; if ( IOUtil.InvariantParse(idText, ref idNum) ) { var Unit = map.IDUsage(idNum); if ( Unit != null ) { if ( !Unit.SetLabel(strLabel).Success ) { failedCount++; } } else { failedCount++; } } break; default: resultObject.WarningAdd("Error! Bad type number for script label."); break; } } } catch ( Exception ex ) { Debugger.Break(); logger.ErrorException("Got exception while reading labels.ini", ex); resultObject.ProblemAdd(string.Format("Got exception: {0}", ex.Message), false); return resultObject; } if ( failedCount > 0 ) { resultObject.WarningAdd(string.Format("Unable to translate {0} script labels.", failedCount)); } if ( modifiedCount > 0 ) { resultObject.WarningAdd(string.Format("{0} script labels had invalid values and were modified.", modifiedCount)); } return resultObject; }
//private clsScriptPosition() //{ //_ParentMapLink = new ConnectedListLink<clsScriptPosition, clsMap>(this); //} public static clsScriptPosition Create(clsMap Map) { clsScriptPosition Result = new clsScriptPosition(); Result._Label = Map.GetDefaultScriptLabel("Position"); Result._ParentMapLink.Connect(Map.ScriptPositions); return Result; }
public void MouseDown(MouseEventArgs e) { var screenPos = new XYInt(); Map.SuppressMinimap = true; screenPos.X = e.X; screenPos.Y = e.Y; if ( e.Button == MouseButtons.Left ) { MouseLeftDown = new clsMouseDown(); if ( IsViewPosOverMinimap(screenPos) ) { MouseLeftDown.OverMinimap = new clsMouseDown.clsOverMinimap(); MouseLeftDown.OverMinimap.DownPos = screenPos; var Pos = new XYInt((int)((screenPos.X * Tiles_Per_Minimap_Pixel)), (int)(screenPos.Y * Tiles_Per_Minimap_Pixel)); Map.TileNumClampToMap(Pos); LookAtTile(Pos); } else { var MouseOverTerrain = GetMouseOverTerrain(); if ( MouseOverTerrain != null ) { MouseLeftDown.OverTerrain = new clsMouseDown.clsOverTerrain(); MouseLeftDown.OverTerrain.DownPos = MouseOverTerrain.Pos; if ( modTools.Tool == modTools.Tools.ObjectSelect ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) ) { if ( MouseOverTerrain.Units.Count > 0 ) { if ( MouseOverTerrain.Units.Count == 1 ) { Program.frmMainInstance.ObjectPicker(MouseOverTerrain.Units[0].TypeBase); } else { MapViewControl.ListSelectBegin(true); } } } else if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ScriptPosition) ) { var NewPosition = new clsScriptPosition(Map); if ( NewPosition != null ) { NewPosition.PosX = MouseLeftDown.OverTerrain.DownPos.Horizontal.X; NewPosition.PosY = MouseLeftDown.OverTerrain.DownPos.Horizontal.Y; Program.frmMainInstance.ScriptMarkerLists_Update(); } } else { if ( !KeyboardManager.KeyboardProfile.Active(KeyboardManager.UnitMultiselect) ) { Map.SelectedUnits.Clear(); } Program.frmMainInstance.SelectedObject_Changed(); Map.Unit_Selected_Area_VertexA = MouseOverTerrain.Vertex.Normal; MapViewControl.DrawViewLater(); } } else if ( modTools.Tool == modTools.Tools.TerrainBrush ) { if ( Map.Tileset != null ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) ) { Program.frmMainInstance.TerrainPicker(); } else { Apply_Terrain(); if ( Program.frmMainInstance.cbxAutoTexSetHeight.Checked ) { Apply_Height_Set(App.TerrainBrush, Program.frmMainInstance.HeightSetPalette[Program.frmMainInstance.tabHeightSetL.SelectedIndex]); } } } } else if ( modTools.Tool == modTools.Tools.HeightSetBrush ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) ) { Program.frmMainInstance.HeightPickerL(); } else { Apply_Height_Set(App.HeightBrush, Program.frmMainInstance.HeightSetPalette[Program.frmMainInstance.tabHeightSetL.SelectedIndex]); } } else if ( modTools.Tool == modTools.Tools.TextureBrush ) { if ( Map.Tileset != null ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) ) { Program.frmMainInstance.TexturePicker(); } else { Apply_Texture(); } } } else if ( modTools.Tool == modTools.Tools.CliffTriangle ) { Apply_CliffTriangle(false); } else if ( modTools.Tool == modTools.Tools.CliffBrush ) { Apply_Cliff(); } else if ( modTools.Tool == modTools.Tools.CliffRemove ) { Apply_Cliff_Remove(); } else if ( modTools.Tool == modTools.Tools.TerrainFill ) { if ( Map.Tileset != null ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) ) { Program.frmMainInstance.TerrainPicker(); } else { Apply_Terrain_Fill(Program.frmMainInstance.FillCliffAction, Program.frmMainInstance.cbxFillInside.Checked); MapViewControl.DrawViewLater(); } } } else if ( modTools.Tool == modTools.Tools.RoadPlace ) { if ( Map.Tileset != null ) { Apply_Road(); } } else if ( modTools.Tool == modTools.Tools.RoadLines ) { if ( Map.Tileset != null ) { Apply_Road_Line_Selection(); } } else if ( modTools.Tool == modTools.Tools.RoadRemove ) { Apply_Road_Remove(); } else if ( modTools.Tool == modTools.Tools.ObjectPlace ) { if ( Program.frmMainInstance.SingleSelectedObjectTypeBase != null && Map.SelectedUnitGroup != null ) { var objectCreator = new clsUnitCreate(); Map.SetObjectCreatorDefaults(objectCreator); objectCreator.Horizontal = MouseOverTerrain.Pos.Horizontal; objectCreator.Perform(); Map.UndoStepCreate("Place Object"); Map.Update(); Map.MinimapMakeLater(); MapViewControl.DrawViewLater(); } } else if ( modTools.Tool == modTools.Tools.ObjectLines ) { ApplyObjectLine(); } else if ( modTools.Tool == modTools.Tools.TerrainSelect ) { if ( Map.Selected_Area_VertexA == null ) { Map.Selected_Area_VertexA = MouseOverTerrain.Vertex.Normal; MapViewControl.DrawViewLater(); } else if ( Map.Selected_Area_VertexB == null ) { Map.Selected_Area_VertexB = MouseOverTerrain.Vertex.Normal; MapViewControl.DrawViewLater(); } else { Map.Selected_Area_VertexA = null; Map.Selected_Area_VertexB = null; MapViewControl.DrawViewLater(); } } else if ( modTools.Tool == modTools.Tools.Gateways ) { Apply_Gateway(); } } else if ( modTools.Tool == modTools.Tools.ObjectSelect ) { Map.SelectedUnits.Clear(); Program.frmMainInstance.SelectedObject_Changed(); } } } else if ( e.Button == MouseButtons.Right ) { MouseRightDown = new clsMouseDown(); if ( IsViewPosOverMinimap(screenPos) ) { MouseRightDown.OverMinimap = new clsMouseDown.clsOverMinimap(); MouseRightDown.OverMinimap.DownPos = screenPos; } else { var MouseOverTerrain = GetMouseOverTerrain(); if ( MouseOverTerrain != null ) { MouseRightDown.OverTerrain = new clsMouseDown.clsOverTerrain(); MouseRightDown.OverTerrain.DownPos = MouseOverTerrain.Pos; } } if ( modTools.Tool == modTools.Tools.RoadLines || modTools.Tool == modTools.Tools.ObjectLines ) { Map.Selected_Tile_A = null; MapViewControl.DrawViewLater(); } else if ( modTools.Tool == modTools.Tools.TerrainSelect ) { Map.Selected_Area_VertexA = null; Map.Selected_Area_VertexB = null; MapViewControl.DrawViewLater(); } else if ( modTools.Tool == modTools.Tools.CliffTriangle ) { Apply_CliffTriangle(true); } else if ( modTools.Tool == modTools.Tools.Gateways ) { Map.Selected_Tile_A = null; Map.Selected_Tile_B = null; MapViewControl.DrawViewLater(); } else if ( modTools.Tool == modTools.Tools.HeightSetBrush ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) ) { Program.frmMainInstance.HeightPickerR(); } else { Apply_Height_Set(App.HeightBrush, Program.frmMainInstance.HeightSetPalette[Program.frmMainInstance.tabHeightSetR.SelectedIndex]); } } } }