public void OpenNewMap() { var map = MapData.MapData.Default; _game = new GameCore(null, new NullGamemode(), map); _game.Authoritative = true; _game.BeginGame(true); _renderer.Game = _game; }
private GameCore CreateGameFromMapAndUpdateModsList(MapJSON map) { MapName = map.Name; MapAuthor = map.Author; BackgroundColor = map.BackgroundColor; ShadowColor = map.ShadowColor; ShadowOffset = map.ShadowOffset; var game = new GameCore(null, new NullGamemode(), Newtonsoft.Json.JsonConvert.SerializeObject(map)); game.Authoritative = true; game.BeginGame(true); //Blow up the mod infos var deps = map.ModDependencies.Select(a => { var name = a.Split(':')[0]; var major = int.Parse(a.Split(':')[1].Split('.')[0]); var minor = int.Parse(a.Split(':')[1].Split('.')[1].Split('-')[0]); return(new Modding.ModInfo() { ModName = name, ModMajor = major, ModMinor = minor }); }); //And make sure they're loaded foreach (var itm in deps) { var db = Modding.ModDatabase.Get(itm.ModName, itm.ModMajor); if (db == null || db.Minor < itm.ModMinor) { throw new Exception($"Mod {db.Name} v{db.Major}.{db.Minor} not found or is out of date."); } string err; var mod = db.LoadIfNotLoaded(GameSettings.Instance.ModUnpackPath, GameSettings.Instance.ModMapPath, GameSettings.Instance.ModAssetPath, out err); if (mod == null) { throw new Exception($"Failed to load mod {db.Name} v{db.Major}.{db.Minor}", new Exception(err)); } } Mods = deps.ToList(); //Recreate the SpawnPoint objects from the map spawns list //TODO: Figure out why this doesn't work correctly foreach (var teamSpawns in map.Spawns) { foreach (var pos in teamSpawns.SpawnPositions) { var gObj = game.AddMapObject("CoreAssets+SpawnPoint", true); gObj.SetInstanceSetting("Team Number", teamSpawns.TeamIndex.ToString()); gObj.Position = pos; } } return(game); }