public GameServer(GameRule rule, Map map, int botcount) { NextMap = map; NextBotCount = botcount; NextRule = rule; }
public Game(GameRule rule, Map map, int botcount,bool spectate) { Host = null; Demo = null; Spectate = spectate; Server = new GameServer(rule, map, botcount); PreCache(); }
public void SetDefault() { Cheetah.Console.WriteLine("loading defaults from config."); Config c = Root.Instance.ResourceManager.LoadConfig("config/global.config"); NextMap = (Map)Activator.CreateInstance(Root.Instance.Factory.GetType(c.GetString("gameserver.map"))); if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.DeathMatch).FullName) NextRule = CreateDeathMatch(); else if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.TeamDeathMatch).FullName) NextRule = CreateTeamDeathMatch(); else if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.KingOfTheHill).FullName) NextRule = CreateKingOfTheHill(); else if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.Domination).FullName) NextRule = CreateDomination(); else if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.Race).FullName) NextRule = CreateRace(); else if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.CaptureTheFlag).FullName) NextRule = CreateCaptureTheFlag(); else if (c.GetString("gameserver.rule") == typeof(SpaceWar2006.Rules.Mission).FullName) NextRule = NextMap.Mission; else throw new Exception("unknown rule."); NextBotCount = c.GetInteger("server.bots"); }
public override void Start() { base.Start(); Config c = Root.Instance.ResourceManager.LoadConfig("config/global.config"); Root.Instance.Scene.Clear(); if (NextMap == null || NextRule == null) SetDefault(); Root.Instance.Scene.Spawn(NextMap); NextMap = null; if (NextRule == null || NextRule is Mission) NextRule = Root.Instance.Scene.FindEntityByType<GameRule>(); else Root.Instance.Scene.Spawn(NextRule); Rule = NextRule; NextRule = null; Rule.AnnounceEvent += Cheetah.Console.WriteLine; if (Root.Instance.UserInterface==null && c.GetBool("server.queryport.enable")) { int queryport = c.GetInteger("server.queryport"); if (queryport > 0 && qs == null) Root.Instance.LocalObjects.Add(qs = new QueryServer(queryport, new IQuery[] { new OldGameSpyQuery() })); } if (Root.Instance.UserInterface==null && c.GetBool("irc.enable") && reporter == null) { reporter = new IrcReporter(c.GetString("irc.host"), c.GetInteger("irc.port"), c.GetString("irc.nick"), c.GetString("irc.realname"), c.GetString("irc.channels").Split(',')); Root.Instance.LocalObjects.Add(reporter); Rule.AnnounceEvent += reporter.Announce; } int botcount = NextBotCount; Bots = new SpaceShipBotControl[botcount]; BotPlayers = new Player[botcount]; for (int i = 0; i < botcount; ++i) { int team = (Rule is TeamDeathMatch) ? c.GetInteger("server.bot" + i + ".team") : -1; string name = c.GetString("server.bot" + i + ".name"); SpawnBot(i, team, name); } //SpawnBot(1); }
string GetMapName(Map m) { if(m != null) { return (m is XmlMap)?((XmlMap)m).Path:m.GetType().Name; } else return "none"; }