public void SavePlan(FlightPlan plan) { if (plan.planet == null) { Deb.Err("SavePlan: plan has no planet"); return; } if (plan.name == currentName) { Deb.Log("SavePlan: same name, overwrite current"); plan.description = currentDesc; } else { current = plan.Clone(); current.name = currentName; current.description = currentDesc; plan = current; } flightPlan = current; List<FlightPlan> plans_for_planet = null; if (!flightPlansDict.TryGetValue(planet.name, out plans_for_planet)) { Deb.Log("SavePlan: creating new plan list for planet {0}", planet.name); plans_for_planet = new List<FlightPlan>(); flightPlansDict[planet.name] = plans_for_planet; } bool plan_present = false; foreach (var pplan in plans_for_planet) { if (System.Object.ReferenceEquals(plan, pplan)) { plan_present = true; break; } } if (!plan_present) { Deb.Log("SavePlan: plan not present, create one in list"); plans_for_planet.Add(plan); } ConfigNode rootNode = new ConfigNode(); ConfigNode node = rootNode.AddNode(flightPlansNodeName); // plan_list will be key/value pair foreach (var pair in flightPlansDict) { ConfigNode listNode = node.AddNode(pair.Key); foreach (var aplan in pair.Value) { listNode.AddNode(aplan.ToConfigNode()); } } rootNode.Save(GetFlightPlanURI()); }
public void ApplyPlan(FlightPlan plan) { flightPlan = plan.Clone(); current = plan; currentName = String.Copy(current.name); currentDesc = String.Copy(current.description); flightPlan.Activate(this, vessel, vesselData); }