public void MoveTile(KeyEventArgs e) { if (e.IsRepeat) { return; } Vector movingVector = e.Key == Key.S ? new Vector(0, 1) : new Vector(0, 0) + (e.Key == Key.W ? new Vector(0, -1) : new Vector(0, 0)) + (e.Key == Key.A ? new Vector(-1, 0) : new Vector(0, 0)) + (e.Key == Key.D ? new Vector(1, 0) : new Vector(0, 0)); //_r.Rect.Margin = new Thickness(); Tile.TypeEnum lastType = CurrentTile.Type; Engine.MiniMap.MovePlayer(); if (Engine.Generator.Tiles[Tile.Position + movingVector]?.Type != Tile.TypeEnum.Wall) { Tile.Position += movingVector; //e.Handled = true; if (!Engine.Camera.CheatsActivated) { Engine.Camera.Follow(movingVector); if (lastType == Tile.TypeEnum.Door) { Engine.Camera.Zoom(); Engine.MiniMap.AddVisitedItem(CurrentMultiTileShape); } } } }
public static void AddTile(this IMultiTileShape multiTileShape, Vector position, Tile.TypeEnum type) { Tile t = new Tile(position, multiTileShape, type, multiTileShape is RoomModule); if (multiTileShape.Tiles.ContainsKey(t.Position)) { return; } multiTileShape.Tiles.Add(t.Position, t); if (t.Type == Tile.TypeEnum.Wall) { multiTileShape.WallTiles.Add(t); } }