public void CreateFhAnchor() { FootholdAnchor fhAnchor = new FootholdAnchor(Board, X, Y, Board.SelectedLayerIndex, false); Board.BoardItems.FHAnchors.Add(fhAnchor); Board.UndoRedoMan.AddUndoBatch(new List <UndoRedoAction> { UndoRedoManager.ItemAdded(fhAnchor) }); if (connectedLines.Count == 0) { Board.BoardItems.FootholdLines.Add(new FootholdLine(Board, fhAnchor)); } else { connectedLines[0].ConnectSecondDot(fhAnchor); Board.BoardItems.FootholdLines.Add(new FootholdLine(Board, fhAnchor)); } }
public virtual void OnItemPlaced(List<UndoRedoAction> undoPipe) { lock (Board.ParentControl) { List<BoardItem> items = boundItems.Keys.ToList(); foreach (BoardItem item in items) item.OnItemPlaced(undoPipe); if (undoPipe != null) { undoPipe.Add(UndoRedoManager.ItemAdded(this)); } if (parent != null) { if (!(parent is Mouse) && undoPipe != null) { undoPipe.Add(UndoRedoManager.ItemsLinked(parent, this, (Microsoft.Xna.Framework.Point)parent.boundItems[this])); } } } }
public void PlaceObject() { if (state == MouseState.StaticObjectAdding || state == MouseState.RandomTiles) { Board.UndoRedoMan.AddUndoBatch(new List <UndoRedoAction>() { UndoRedoManager.ItemAdded(currAddedObj) }); //Board.BoardItems.Add(currAddedObj.CreateInstance(Board.Layers[Board.SelectedLayerIndex], Board, x, y, 50, false, false)); currAddedObj.BeforeAdding = false; ReleaseItem(currAddedObj); if (currAddedObj is LayeredItem) { int highestZ = 0; foreach (LayeredItem item in Board.BoardItems.TileObjs) { if (item.Z > highestZ) { highestZ = item.Z; } } currAddedObj.Z = highestZ; Board.BoardItems.Sort(); } if (state == MouseState.StaticObjectAdding) { currAddedObj = currAddedInfo.CreateInstance(Board.SelectedLayer, Board, X + currAddedInfo.Origin.X - currAddedInfo.Image.Width / 2, Y + currAddedInfo.Origin.Y - currAddedInfo.Image.Height / 2, 50, false, true); } else { currAddedObj = tileRandomList[NextInt32(tileRandomList.Length)].CreateInstance(Board.SelectedLayer, Board, X + currAddedInfo.Origin.X - currAddedInfo.Image.Width / 2, Y + currAddedInfo.Origin.Y - currAddedInfo.Image.Height / 2, 50, false, true); } Board.BoardItems.Add(currAddedObj, false); BindItem(currAddedObj, new Microsoft.Xna.Framework.Point(currAddedInfo.Origin.X - currAddedInfo.Image.Width / 2, currAddedInfo.Origin.Y - currAddedInfo.Image.Height / 2)); } else if (state == MouseState.Chairs) { Board.UndoRedoMan.AddUndoBatch(new List <UndoRedoAction> { UndoRedoManager.ItemAdded(currAddedObj) }); ReleaseItem(currAddedObj); currAddedObj = new Chair(Board, X, Y, true); Board.BoardItems.Add(currAddedObj, false); BindItem(currAddedObj, new Microsoft.Xna.Framework.Point()); } else if (state == MouseState.Ropes) { int count = BoundItems.Count; object[] keys = new object[count]; BoundItems.Keys.CopyTo(keys, 0); RopeAnchor anchor = (RopeAnchor)keys[0]; ReleaseItem(anchor); if (count == 1) { Board.UndoRedoMan.AddUndoBatch(new List <UndoRedoAction> { UndoRedoManager.RopeAdded(anchor.ParentRope) }); CreateRope(); } } else if (state == MouseState.Tooltip) { int count = BoundItems.Count; object[] keys = new object[count]; BoundItems.Keys.CopyTo(keys, 0); ToolTipDot dot = (ToolTipDot)keys[0]; ReleaseItem(dot); if (count == 1) { Board.UndoRedoMan.AddUndoBatch(new List <UndoRedoAction> { UndoRedoManager.ItemAdded(dot.ParentTooltip) }); CreateTooltip(); } } }