Kramax.FlightPlan.Clone C# (CSharp) Méthode

Clone() public méthode

public Clone ( ) : FlightPlan
Résultat FlightPlan
        public FlightPlan Clone()
        {
            var result = new FlightPlan();

            result.name = String.Copy(name);
            result.description = String.Copy(description);
            result.planet = planet;

            WayPoint prev_wp = null;

            foreach (var wp in course)
            {
                var new_wp = wp.Clone();

                if (prev_wp != null)
                    prev_wp.next = new_wp;

                result.course.Add(new_wp);

                prev_wp = new_wp;
            }

            Deb.Log("FlightPlan.Clone: update waypoint values for resulting course.");
            result.UpdateWayPointValues(planet);

            return result;
        }

Usage Example

Exemple #1
0
        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());
        }
All Usage Examples Of Kramax.FlightPlan::Clone