public void RemoveArena(xCoreLevel level) { lock (LevelSync) { if (Levels.Contains(level)) { Levels.Remove(level); level.Close(); LevelPoolId.Remove(level.Id); } } }
public void NewArena(MapInfo map) { lock (LevelSync) { AnvilWorldProvider l; if (OnlyRead) { l = map.ProviderCache; } else { l = map.ProviderCache.Clone() as AnvilWorldProvider; } int id = LevelCount; if (LevelPoolId.Count > 0) { id = LevelPoolId.First(); LevelPoolId.Remove(id); } else { LevelCount++; id = LevelCount; } var level = new xCoreLevel(l, Game.Context.Server.LevelManager.EntityManager, Game, map, id); LevelCount++; level.Initialize(); SkyLightCalculations.Calculate(level); while (l.LightSources.Count > 0) { var block = l.LightSources.Dequeue(); block = level.GetBlock(block.Coordinates); BlockLightCalculations.Calculate(level, block); } Game.Initialization(level); Levels.Add(level); } }