Пример #1
0
        public void Draw(IGameGraphics graphics)
        {
            if (playerIndex >= 4)
            {
                graphics.SetColor(255, 0, 255, 0);
            }
            var drawOffset = (int)((32 - Width) / 2);
            var drawX      = (int)Math.Round(X) - World.CameraLeft - drawOffset;
            var drawY      = (int)Math.Round(Y);
            var rowOffset  = 2 * (playerIndex % 4);

            if (canMove)
            {
                if (state == State.OnGround)
                {
                    var anim = (int)(walkingDistance / distancePerAnimation);
                    if (direction == Direction.Right)
                    {
                        anim += 4;
                    }
                    graphics.DrawImage(GameImage.Player, 32, 32, rowOffset, anim, drawX, drawY);
                }
                else if (state == State.InAir)
                {
                    var anim = 0;
                    if (vy > 0)
                    {
                        if (vy < maxFallingSpeed)
                        {
                            anim = 1;
                        }
                        else
                        {
                            anim = 2;
                        }
                    }
                    if (direction == Direction.Right)
                    {
                        anim += 4;
                    }
                    graphics.DrawImage(GameImage.Player, 32, 32, rowOffset + 1, anim, drawX, drawY);
                }
                else
                {
                    Debug.Assert(false);
                }
            }
            else
            {
                var anim = 3;
                if (direction == Direction.Right)
                {
                    anim += 4;
                }
                graphics.DrawImage(GameImage.Player, 32, 32, rowOffset + 1, anim, drawX, drawY);
            }
            graphics.SetColor(255, 255, 255, 255);
        }
Пример #2
0
        private void DrawHud(IGameGraphics graphics, GamePlayer player, int x, int y)
        {
            graphics.DrawImage(GameImage.Hud, 96, 32, 3, 0, x, y);

            var ammo = player.CoinCount;

            if (ammo / 100 > 0)
            {
                DrawNumber(graphics, ammo / 100 % 10, x + 32, y);
            }
            if (ammo / 10 > 0)
            {
                DrawNumber(graphics, ammo / 10 % 10, x + 32 + 19, y);
            }
            if (ammo >= 0)
            {
                DrawNumber(graphics, ammo % 10, x + 32 + 19 + 19, y);
            }

            var pi = player.PlayerIndex % 4;

            if (player.PlayerIndex >= 4)
            {
                graphics.SetColor(255, 0, 255, 0);
            }
            graphics.DrawImage(GameImage.Player, 32, 32, 2 * pi, 4, x, y);
            if (player.PlayerIndex >= 4)
            {
                graphics.SetColor(255, 255, 255, 255);
            }

            for (var i = 0; i < Math.Min(player.TrophyCount, 6); i++)
            {
                graphics.DrawImage(GameImage.Trophy, 16, 16, 0, 0, x + 16 * i, y - 16);
            }
            for (var i = 0; i < Math.Min(player.UnkoCount, 6); i++)
            {
                graphics.DrawImage(GameImage.Trophy, 16, 16, 0, 1, x + 16 * i, y + 32);
            }
        }
Пример #3
0
        public void Draw(IGameGraphics graphics)
        {
            graphics.Begin();
            var sky = (double)elapsedTime / oneGameDuration;

            graphics.SetColor(255, 255, 255, 255);
            {
                var dx    = cameraIntX + Setting.ScreenWidth / 2 - fieldWidth / 2;
                var drawX = (int)Math.Round((Setting.ScreenWidth - 1024) / 2 - dx / 4.0);
                graphics.DrawImage(GameImage.BlueSky, drawX, 0);
            }
            {
                var dx    = cameraIntX + Setting.ScreenWidth / 2 - fieldWidth / 2;
                var drawX = (int)Math.Round((Setting.ScreenWidth - 1024) / 2 - dx / 2.0);
                graphics.DrawImage(GameImage.Trees, drawX, 256);
            }
            graphics.DrawImage(GameImage.Field, -cameraIntX, Setting.ScreenHeight - 128);
            graphics.SetColor(255, 255, 255, 255);
            foreach (var particle in particles)
            {
                particle.Draw(graphics);
            }
            foreach (var coin in coins)
            {
                coin.Draw(graphics);
            }
            foreach (var bomb in bombs)
            {
                bomb.Draw(graphics);
            }
            foreach (var player in players)
            {
                player.Draw(graphics);
            }
            if (state == State.Waiting)
            {
                DrawPlayerState(graphics);
                if (playerRank != null)
                {
                    var drawX = (Setting.ScreenWidth - 256) / 2;
                    graphics.DrawImage(GameImage.Message, 256, 128, 1, 1, drawX, 64);
                }
                else
                {
                    var drawX = (Setting.ScreenWidth - 512) / 2;
                    graphics.DrawImage(GameImage.Title, drawX, 64);
                }
            }
            else if (state == State.Ready)
            {
                if (countDown < 3)
                {
                    var drawX = (Setting.ScreenWidth - 128) / 2;
                    graphics.DrawImage(GameImage.Message, 128, 128, 0, countDown, drawX, 64);
                }
            }
            else if (state == State.Playing)
            {
                if (elapsedTime < 60)
                {
                    var drawX = (Setting.ScreenWidth - 256) / 2;
                    graphics.DrawImage(GameImage.Message, 256, 128, 1, 0, drawX, 64);
                }
                DrawTime(graphics);
            }
            DrawHuds(graphics);
            graphics.End();
        }