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); } }
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); } }
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); }