static void Main()
 {
     using (var game = new Game1())
         game.Run();
 }
Beispiel #2
0
        public void Update(Random rand)
        {
            if (Game1.GetDistance(pos, Target) < 1)
            {
                pos = Target;
            }
            else
            {
                movement.X = (Target.X - pos.X) * World.cameraSpeed;
                movement.Y = (Target.Y - pos.Y) * World.cameraSpeed;

                pos += movement;
            }

            if (Math.Abs(rotation - RotationTarget) < 0.001f)
            {
                rotation = RotationTarget;
            }
            else
            {
                rotation += (RotationTarget - rotation) * World.cameraTorque;
            }

            shakeOffset = Vector2.Zero;

            for (int i = 0; i < shakes.Count; i++)
            {
                shakeOffset += new Vector2(shakes[i].X * ((float)rand.NextDouble() * 2 - 1), shakes[i].Y * ((float)rand.NextDouble() * 2 - 1));
                shakeDurations[i]--;
                if (shakeDurations[i] <= 0)
                {
                    shakeDurations.RemoveAt(i);
                    shakes.RemoveAt(i);
                }
            }

            pos += shakeOffset;

            if (pos.X == float.NaN)
            {
                pos.X = posPrev.X;
            }
            if (pos.Y == float.NaN)
            {
                pos.Y = posPrev.Y;
            }

            rectangle = new Rectangle(Game1.CeilAdv(pos.X - zoom * World.screenWidth / 2) - 32, Game1.CeilAdv(pos.Y - zoom * World.screenHeight / 2) - 32, Game1.CeilAdv(World.screenWidth * zoom) + 64, Game1.CeilAdv(World.screenHeight * zoom) + 64);
            //rectangle = new Rectangle(Game1.CeilAdv(pos.X), Game1.CeilAdv(pos.Y), Game1.CeilAdv(World.screenWidth * zoom), Game1.CeilAdv(World.screenHeight * zoom));

            posPrev = pos;
        }