public bool SetHoverTerrain(int squareX, int squareY, IMapBrush brush, out Rectangle updateRectangle) { updateRectangle = new Rectangle(); if (squareX < 0 || squareX >= Width || squareY < 0 || squareY >= Width) { return(false); } MapState oldState = new MapState(stateHover.Width, stateHover.Height); oldState.CopyFrom(stateHover); if (!brush.NeedsDraw(state, squareX, squareY)) { ClearHoverTerrain(); updateRectangle = CalculateUpdateRectangle(oldState, stateHover); return(true); } if (!brush.NeedsDraw(stateHover, squareX, squareY)) { return(false); } ClearHoverTerrain(); brush.DrawAt(tileSet, stateHover, null /* rng */, squareX, squareY); updateRectangle = CalculateUpdateRectangle(oldState, stateHover); return(true); }
public void SaveUndo() { MapState undoState = new MapState(width, height); undoState.CopyFrom(state); undoStack.Add(undoState); if (undoStack.Count > 100) { undoStack.RemoveAt(0); } redoStack.Clear(); }
public void SetTerrain(int squareX, int squareY, IMapBrush brush, out Rectangle updateRectangle) { updateRectangle = new Rectangle(); if (squareX < 0 || squareX >= Width || squareY < 0 || squareY >= Width) { return; } MapState oldState = new MapState(stateHover.Width, state.Height); oldState.CopyFrom(state); brush.DrawAt(tileSet, state, Rng, squareX, squareY); updateRectangle = CalculateUpdateRectangle(oldState, state); ClearHoverTerrain(); }
public void ClearHoverTerrain() { stateHover.CopyFrom(state); }