예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
        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);
            }
        }