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());
}