예제 #1
0
파일: _DefWorld.cs 프로젝트: kuviman/SMA2
        public void Update(double dt)
        {
            Current = this;
            objects.Refresh();
            if (!player.Alive) {
                rSpeed = Math.Min(rSpeed + 0.01 * dt, 0.1);
                cam.Rotation += rSpeed * dt;
            }

            dt *= dtK;
            if (!player.Alive) {
                dtK = Math.Max(dtK - dtkspeed * dt, mindtk);
            }

            curTime += dt;

            cam.Position += (player.Position - cam.Position) * Math.Min(dt * camSpeed, 1);

            const double dist = 25;
            posGroup = new PosGroup<SpaceObject>(
                player.Position.X - dist, player.Position.Y - dist,
                player.Position.X + dist, player.Position.Y + dist);
            foreach (var o in objects) {
                posGroup.Add(o, o.Position);
            }
            objects.Update(dt);

            UpdateAsteroids(dt);
            UpdateBullets(dt);
            UpdateClouds(dt);
            UpdatePhysics(dt);
            UpdateExplosions(dt);

            foreach (var o in objects.Where(o => !o.Alive))
                objects.Remove(o);
        }
예제 #2
0
파일: Program.cs 프로젝트: kuviman/SMA2
 public override void KeyDown(Key key)
 {
     base.KeyDown(key);
     if (key == Key.Space)
         world.Add(new Asteroid());
     if (key == Key.F2)
         world = new World();
     if (key == Key.Escape)
         Close();
 }