/// <summary> /// This method is called from the Main system to load all the kerbals we received /// when connecting to a server into the game /// </summary> public void LoadKerbalsIntoGame() { LunaLog.Log("[LMP]: Loading kerbals into game"); while (KerbalQueue.Count > 0) { LoadKerbal(KerbalQueue.Dequeue()); } //Server is new and don't have kerbals at all if (ServerKerbals.Count == 0) { var newRoster = KerbalRoster.GenerateInitialCrewRoster(HighLogic.CurrentGame.Mode); foreach (var pcm in newRoster.Crew) { HighLogic.CurrentGame.CrewRoster.AddCrewMember(pcm); MessageSender.SendKerbalIfDifferent(pcm); } } else { //Server has less than 20 kerbals so generate some var generateKerbals = ServerKerbals.Count < 20 ? 20 - ServerKerbals.Count : 0; if (generateKerbals > 0) { LunaLog.Log($"[LMP]: Generating {generateKerbals} new kerbals"); for (var i = 0; i < generateKerbals; i++) { var protoKerbal = HighLogic.CurrentGame.CrewRoster.GetNewKerbal(); MessageSender.SendKerbalIfDifferent(protoKerbal); } } } LunaLog.Log("[LMP]: Kerbals loaded"); }
public void StartGame() { string SaveDirectory = Path.Combine(KSPUtil.ApplicationRootPath, Path.Combine("saves", "L.O.G")); ConfigNode Node = ConfigNode.Load(Path.Combine(SaveDirectory, "persistent.sfs")); HighLogic.CurrentGame = new Game(Node); HighLogic.CurrentGame.Mode = Game.Modes.SANDBOX; HighLogic.CurrentGame.Title = "L.O.G."; HighLogic.CurrentGame.Description = "L.O.G. - Multiplayer"; HighLogic.CurrentGame.startScene = GameScenes.SPACECENTER; HighLogic.CurrentGame.CrewRoster = KerbalRoster.GenerateInitialCrewRoster(Game.Modes.SANDBOX); Planetarium.SetUniversalTime(0.0); if (HighLogic.CurrentGame.Mode != Game.Modes.SANDBOX) { HighLogic.CurrentGame.Parameters.Difficulty.AllowStockVessels = true; } HighLogic.CurrentGame.additionalSystems = new ConfigNode(); HighLogic.CurrentGame.additionalSystems.AddNode("MESSAGESYSTEM"); HighLogic.CurrentGame.flightState = new FlightState(); HighLogic.CurrentGame.CrewRoster.ValidateAssignments(HighLogic.CurrentGame); HighLogic.SaveFolder = "L.O.G"; GamePersistence.SaveGame(HighLogic.CurrentGame, "persistent", HighLogic.SaveFolder, SaveMode.OVERWRITE); HighLogic.CurrentGame.Start(); this.m_playerModel.GameStarted = true; }