コード例 #1
0
 public void SetSpriteIndex(GameSprite spr)
 {
 }
コード例 #2
0
        public void Update(float deltaTime, KeyState keys, Room room)
        {
            if (keys.Jump && canJump)
            {
                var platforms = Engine.FindGameObjectsByTag("block", room);
                if (Engine.IsPlaceMeeting(new Vector2f(pos.X, pos.Y + 1), this, platforms))
                {
                    vel.Y   = -jumpSpeed;
                    canJump = false;
                }
            }

            if (keys.Left && pos.X > 0)
            {
                if (vel.X != -moveSpeed)
                {
                    vel.X       = -moveSpeed;
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerWalkLeft);
                }

                facingLeft = true;
            }
            else if (keys.Right && pos.X < room.GetSize().X)
            {
                if (vel.X != moveSpeed)
                {
                    vel.X       = moveSpeed;
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerWalkRight);
                }

                facingLeft = false;
            }
            else
            {
                vel.X = 0;

                if (facingLeft)
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerStandLeft);
                }
                else
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerStandRight);
                }
            }

            var blocks = Engine.FindGameObjectsByTag("block", room);

            if (Engine.IsPlaceMeeting(new Vector2f(pos.X + vel.X * deltaTime, pos.Y), this, blocks))
            {
                while (!Engine.IsPlaceMeeting(new Vector2f(pos.X, pos.Y), this, blocks))
                {
                    pos.X += Math.Sign(vel.X);
                }
                pos.X -= Math.Sign(vel.X);
                vel.X  = 0;
            }

            if (Engine.IsPlaceMeeting(new Vector2f(pos.X + 2, pos.Y + vel.Y * deltaTime), this, blocks) &&
                Engine.IsPlaceMeeting(new Vector2f(pos.X - 2, pos.Y + vel.Y * deltaTime), this, blocks))
            {
                while (!Engine.IsPlaceMeeting(new Vector2f(pos.X, pos.Y), this, blocks))
                {
                    pos.Y += Math.Sign(vel.Y);
                }
                pos.Y -= Math.Sign(vel.Y);

                vel.Y = 0;
                acc.Y = 0;

                if (!keys.Jump)
                {
                    canJump = true;
                }
            }
            else
            {
                acc.Y = gravity;
            }

            if (vel.Y > 0)
            {
                if (facingLeft)
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerFallLeft);
                }
                else
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerFallRight);
                }
            }
            else if (vel.Y < 0)
            {
                if (facingLeft)
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerJumpLeft);
                }
                else
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerJumpRight);
                }
            }
            else if (spriteIndex.ImageSpeed == 0)
            {
                if (facingLeft)
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerWalkLeft);
                }
                else
                {
                    spriteIndex = new GameSprite(Sprites.getInstance().PlayerWalkRight);
                }
            }

            spriteIndex.Position = pos;
            spriteIndex.Update(deltaTime);
        }
コード例 #3
0
 public void SetSpriteIndex(GameSprite spr) => this.spriteIndex = spr;
コード例 #4
0
        private Sprites()
        {
            Blank = new Texture("img/blank.png");
            Empty = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    Blank,
                    new IntRect[] { new IntRect(0, 0, 64, 64) },
                    new Vector2f[] {
                new Vector2f(64, 64)
            }
                    ),
                new Vector2f(0, 0),
                new IntRect(0, 0, 64, 64),
                0
                );

            PlayerWalkTex   = new Texture("img/sammy-move.png");
            PlayerWalkRight = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(1, 1, 32, 32),
                new IntRect(35, 1, 32, 32),
                new IntRect(69, 1, 32, 32),
                new IntRect(103, 1, 32, 32)
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
                new Vector2f(128, 128),
                new Vector2f(128, 128),
                new Vector2f(128, 128)
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                20
                );
            PlayerWalkLeft = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(103, 35, 32, 32),
                new IntRect(69, 35, 32, 32),
                new IntRect(35, 35, 32, 32),
                new IntRect(1, 35, 32, 32)
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
                new Vector2f(128, 128),
                new Vector2f(128, 128),
                new Vector2f(128, 128)
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                20
                );
            PlayerStandRight = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(1, 1, 32, 32),
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                0
                );
            PlayerStandLeft = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(103, 35, 32, 32),
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                0
                );
            PlayerJumpRight = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(1, 69, 32, 32),
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                0
                );
            PlayerFallRight = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(35, 69, 32, 32),
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                0
                );
            PlayerJumpLeft = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(69, 69, 32, 32),
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                0
                );
            PlayerFallLeft = new GameSprite(
                GameSprite.GetImagesFromTexture(
                    PlayerWalkTex,
                    new IntRect[] {
                new IntRect(103, 69, 32, 32),
            },
                    new Vector2f[] {
                new Vector2f(128, 128),
            }
                    ),
                new Vector2f(64, 64),
                new IntRect(0, 0, 128, 128),
                0
                );

            GrassTileSetTex = new Texture("img/simple-dirt.png");
            GrassTiles      = GameSprite.CreateTileSet(GrassTileSetTex, new Vector2i(32, 32), new Vector2i(128, 128));
        }