Exemple #1
0
        public override void OnAddedToEntity()
        {
            map = Entity.Scene.FindEntity("tiled-map").GetComponent <TiledMapRenderer>();
            var t = map.GetTileAtWorldPosition(new Vector2(0, 0));

            if (t.TilesetTile.Type == "Wall")
            {
                Console.WriteLine("Wall");
            }

            useButton = new VirtualButton();
            useButton.Nodes.Add(new VirtualButton.KeyboardKey(Keys.Space));

            rightButton = new VirtualButton();
            rightButton.Nodes.Add(new VirtualButton.KeyboardKey(Keys.Right));
        }
Exemple #2
0
        void IUpdatable.Update()
        {
            Entity.Scene.Camera.Position = new Vector2(Entity.Scene.SceneRenderTargetSize.X / 2,
                                                       Entity.Scene.SceneRenderTargetSize.Y / 2);
            if (_isGrounded)
            {
                if (Input.IsKeyPressed(Keys.Left))
                {
                    _moveDir.X = -1f;
                    if (!CanMove())
                    {
                        _moveDir.X = 0;
                        return;
                    }

                    _sprite.FlipY          = false;
                    Entity.RotationDegrees = 90f;
                }
                else if (Input.IsKeyPressed(Keys.Right))
                {
                    _moveDir.X = 1f;
                    if (!CanMove())
                    {
                        _moveDir.X = 0;
                        return;
                    }

                    _sprite.FlipY          = false;
                    Entity.RotationDegrees = -90f;
                }
                else if (Input.IsKeyPressed(Keys.Up))
                {
                    _moveDir.Y = -1f;
                    if (!CanMove())
                    {
                        _moveDir.Y = 0;
                        return;
                    }

                    _sprite.FlipY          = true;
                    Entity.RotationDegrees = 0f;
                }
                else if (Input.IsKeyPressed(Keys.Down))
                {
                    _moveDir.Y = 1f;
                    if (!CanMove())
                    {
                        _moveDir.Y = 0;
                        return;
                    }

                    _sprite.FlipY          = false;
                    Entity.RotationDegrees = 0f;
                }
            }


            if (_moveDir != Vector2.Zero)
            {
                var             movement = _moveDir * _speed * Time.DeltaTime;
                CollisionResult res;
                if (_mover.Move(movement, out res))
                {
                    var pos  = Entity.Position + new Vector2(-16) * res.Normal;
                    var tile = _tiledMapRenderer.GetTileAtWorldPosition(pos);

                    // the presence of a tilesetTile means we have a tile with custom properties. The only tiles with custom properties are our
                    // wall tiles which cannot be destroyed
                    if (!_destroyedTile && tile != null && tile.TilesetTile == null)
                    {
                        _destroyedTile = true;
                        _tiledMapRenderer.CollisionLayer.RemoveTile(tile.X, tile.Y);
                        _tiledMapRenderer.RemoveColliders();
                        _tiledMapRenderer.AddColliders();
                    }
                    else
                    {
                        _moveDir       = Vector2.Zero;
                        _isGrounded    = true;
                        _destroyedTile = false;
                        Entity.GetComponent <CameraShake>().Shake(8, 0.8f);
                    }
                }
                else
                {
                    _isGrounded = false;
                }
            }
        }