Exemplo n.º 1
0
    void AddTileInternal(int x, int y, Tile tile)
    {
        Dirty = true;
        int link = tile.Link;

        tile          = (Tile)tile.GetType().GetConstructor(new Type[] { }).Invoke(new object[] { });
        tile.Position = new Vec2(Tile.Size.X * x * 2, Tile.Size.Y * y * 2);
        tile.ID       = GetID(x, y);
        tile.Link     = link;
        tiles[y, x]   = tile;
        if (tile.IsMoving)
        {
            movingTiles.Add(tile);
            movingTiles.Refresh();
        }
        else
        {
            PosTiles.Add(tile, tile.Position);
        }
    }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }