public void DrawPowerup(Powerup powerup, PaintEventArgs e, int worldSize)
        {
            double posX = powerup.Location.GetX();
            double posY = powerup.Location.GetY();

            DrawingTransformer.DrawObjectWithTransform(e, powerup, worldSize, posX, posY, 0, DrawPowerupSprite);
        }
Exemple #2
0
        public void DrawProjectile(Projectile projectile, PaintEventArgs e, int worldSize)
        {
            double posX = projectile.Location.GetX();
            double posY = projectile.Location.GetY();

            projectile.Direction.Normalize();
            double angle = projectile.Direction.ToAngle();

            if (Double.IsNaN(posX) || Double.IsNaN(posY) || Double.IsNaN(angle))
            {
                return;
            }
            DrawingTransformer.DrawObjectWithTransform(e, projectile, worldSize, posX, posY, angle, DrawProjectileSprite);
        }
        public void DrawTank(Tank tank, PaintEventArgs e, int worldSize)
        {
            DrawingTransformer.DrawObjectWithTransform(e, tank, worldSize, tank.Location.GetX(), tank.Location.GetY(), tank.BodyDirection.ToAngle(), DrawTankBody);
            tank.TurretDirection.Normalize();
            double angle = tank.TurretDirection.ToAngle();

            if (Double.IsNaN(angle))
            {
                // this prevents the game from crashing when you put your mouse in the middle of the tank
                angle = 0;
            }
            DrawingTransformer.DrawObjectWithTransform(e, tank, worldSize, tank.Location.GetX(), tank.Location.GetY(), angle, DrawTankTurret);
            DrawingTransformer.DrawObjectWithTransform(e, tank, worldSize, tank.Location.GetX(), tank.Location.GetY(), 0, DrawTankName);
            DrawingTransformer.DrawObjectWithTransform(e, tank, worldSize, tank.Location.GetX(), tank.Location.GetY(), 0, DrawTankHealth);
        }
        public void DrawBeam(Beam beam, PaintEventArgs e, int worldSize)
        {
            double posX = beam.Origin.GetX();
            double posY = beam.Origin.GetY();

            beam.Direction.Normalize();
            double angle = beam.Direction.ToAngle();

            angle += 180;  // rotate 180 degrees
            if (Double.IsNaN(posX) || Double.IsNaN(posY) || Double.IsNaN(angle))
            {
                return;
            }
            DrawingTransformer.DrawObjectWithTransform(e, beam, worldSize, posX, posY, angle, DrawBeamSprite);
        }
        private void DrawHorizontalWall(Wall wall, PaintEventArgs e, int worldSize)
        {
            double posY          = wall.EndPoint1.GetY(); // Y position will always be the same
            double leftmostPosX  = Math.Min(wall.EndPoint1.GetX(), wall.EndPoint2.GetX());
            double rightmostPosX = Math.Max(wall.EndPoint1.GetX(), wall.EndPoint2.GetX());
            // The length between p1 and p2 will always be a multiple of the wall width (50 units).
            int numWallBlocksToDraw = Convert.ToInt32((rightmostPosX - leftmostPosX) / wallSize);

            for (int i = 0; i <= numWallBlocksToDraw; i++)
            {
                double offset = wallSize * i;
                double posX   = leftmostPosX + offset;
                DrawingTransformer.DrawObjectWithTransform(e, wall, worldSize, posX, posY, 0, DrawWallBlock);
            }
        }
        private void DrawVerticalWall(Wall wall, PaintEventArgs e, int worldSize)
        {
            double posX        = wall.EndPoint1.GetX(); // X position will always be the same
            double lowestPosY  = Math.Min(wall.EndPoint1.GetY(), wall.EndPoint2.GetY());
            double highestPosY = Math.Max(wall.EndPoint1.GetY(), wall.EndPoint2.GetY());
            // The length between p1 and p2 will always be a multiple of the wall width (50 units).
            int numWallBlocksToDraw = Convert.ToInt32((highestPosY - lowestPosY) / wallSize);

            for (int i = 0; i <= numWallBlocksToDraw; i++)
            {
                double offset = wallSize * i;
                double posY   = lowestPosY + offset;
                // TODO how should we get the gameWorld size?
                DrawingTransformer.DrawObjectWithTransform(e, wall, worldSize, posX, posY, 0, DrawWallBlock);
            }
        }
Exemple #7
0
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.Black);

            if (gameWorld.Tanks.Count <= 0)
            {
                // don't draw anything. just black screen
                return;
            }

            DrawingTransformer.TranslateTransformToCenterPlayersView(this.Size.Width, gameWorld.Size, gameController.GetPlayerLocation(), e);

            DrawWorld(gameWorld, e);

            base.OnPaint(e);
        }
 public void DrawExplosion(Tank tank, PaintEventArgs e, int worldSize)
 {
     DrawingTransformer.DrawObjectWithTransform(e, tank, worldSize, tank.Location.GetX(), tank.Location.GetY(), 0, DrawExplosionSprite);
 }