public override void OnLoad(ConfigNode gameNode)
        {
            base.OnLoad(gameNode);

            this.RegisteredDockingPorts.Clear();
            this.OrderedMissions.Clear();

            try
            {
                ConfigNode registeredLocations = gameNode.GetNode("REGISTEREDLOCATIONS");
                if (registeredLocations != null)
                {
                    foreach (ConfigNode dockingPortConfig in registeredLocations.GetNodes("DOCKINGPORT"))
                    {
                        RegisteredDockingPort dockingPort = ConfigNode.CreateObjectFromConfig <RegisteredDockingPort>(dockingPortConfig);
                        this.RegisteredDockingPorts.Add(dockingPort);
                    }
                }

                ConfigNode orderedMissions = gameNode.GetNode("ORDEREDMISSIONS");
                if (orderedMissions != null)
                {
                    foreach (ConfigNode orderedMissionConfig in orderedMissions.GetNodes("ORDEREDMISSION"))
                    {
                        OrderedMission orderedMission = OrderedMission.LoadNode(orderedMissionConfig);
                        this.OrderedMissions.Add(orderedMission);
                    }
                }
            }
            catch
            {
                LoggerRmm.Error("RMM: loading from savefile failed");
            }
        }
        public void SetOrderedMission(string orderId, string missionId, int type, Dictionary <string, object> orderValues)
        {
            // search for existing order
            OrderedMission existingOrderedMission = null;

            if (!String.IsNullOrEmpty(orderId))
            {
                foreach (OrderedMission orderdMission in OrderedMissions)
                {
                    if (orderdMission.OrderId == orderId)
                    {
                        existingOrderedMission = orderdMission;
                        break;
                    }
                }
            }

            // edit port
            if (existingOrderedMission != null)
            {
                if (String.IsNullOrEmpty(missionId) && orderValues == null)
                {
                    // unorder
                    OrderedMissions.Remove(existingOrderedMission);
                }
                else
                {
                    // edit order
                    existingOrderedMission.MissionId = missionId;
                    existingOrderedMission.Type      = type;
                    existingOrderedMission.WriteValues(orderValues);
                }
                return;
            }

            // new order
            if (!String.IsNullOrEmpty(missionId) && orderValues != null)
            {
                // register new
                OrderedMission newOrderedMission = new OrderedMission();
                newOrderedMission.OrderId   = RmmUtil.Rand.Next(1, 999999999).ToString();
                newOrderedMission.MissionId = missionId;
                newOrderedMission.Type      = type;
                newOrderedMission.WriteValues(orderValues);
                OrderedMissions.Add(newOrderedMission);
            }
        }