Esempio n. 1
0
        public override void OnSave(ConfigNode node)
        {
            base.OnSave(node);
            ConfigNode configNode;

            if (string.IsNullOrEmpty(exemptKerbals) == false)
            {
                node.AddValue("exemptKerbals", exemptKerbals);
            }

            foreach (string key in sciencePenalties.Keys)
            {
                configNode = new ConfigNode("SCIENCE_PENALTY");
                configNode.AddValue("vesselID", key);
                configNode.AddValue("amount", sciencePenalties[key].ToString());
                node.AddNode(configNode);
            }

            List <AstronautData> .Enumerator dataValues = crewData.GetListEnumerator();
            List <string> .Enumerator        keyValueEnumerator;
            string        keyValueKey;
            AstronautData data;
            ConfigNode    keyValueNode;

            while (dataValues.MoveNext())
            {
                data       = dataValues.Current;
                configNode = new ConfigNode("ASTRONAUT");
                configNode.AddValue("name", data.name);
                configNode.AddValue("experienceTrait", data.experienceTrait);
                configNode.AddValue("mealsMissed", data.mealsMissed);
                configNode.AddValue("lastUpdated", data.lastUpdated);
                configNode.AddValue("isExempt", data.isExempt);

                keyValueEnumerator = data.keyValuePairs.GetListEnumerator();
                while (keyValueEnumerator.MoveNext())
                {
                    keyValueKey = keyValueEnumerator.Current;

                    keyValueNode = new ConfigNode("KEYVALUE");
                    keyValueNode.AddValue(keyValueKey, data.keyValuePairs[keyValueKey]);
                    configNode.AddNode(keyValueNode);
                }

                node.AddNode(configNode);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Saves persistent astronaut data to the supplied config node.
        /// </summary>
        /// <param name="crewData">A map of astronaut data, keyed by kerbal name.</param>
        /// <param name="node">The ConfigNode to save the data to.</param>
        public static void Save(DictionaryValueList <string, AstronautData> crewData, ConfigNode node)
        {
            List <AstronautData> .Enumerator dataValues = crewData.GetListEnumerator();
            AstronautData astronautData;
            ConfigNode    configNode;
            ConfigNode    astronautNode;

            string[] keys;

            while (dataValues.MoveNext())
            {
                astronautData = dataValues.Current;
                astronautNode = new ConfigNode(AstronautNode);
                astronautNode.AddValue(AstronautNodeName, astronautData.name);
                astronautNode.AddValue(AstronautNodeTrait, astronautData.experienceTrait);
                astronautNode.AddValue(AstronautNodeUpdated, astronautData.lastUpdated);
                astronautNode.AddValue(AstronautNodeExempt, astronautData.isExempt);

                if (!string.IsNullOrEmpty(astronautData.conditionSummary))
                {
                    astronautNode.AddValue(AstronautNodeCondition, astronautData.conditionSummary);
                }

                if (!string.IsNullOrEmpty(astronautData.disqualifiedPreconditions))
                {
                    astronautNode.AddValue(AstronautNodeDisqualifiers, astronautData.disqualifiedPreconditions);
                }

                //Save keyvalue pairs
                keys = astronautData.keyValuePairs.Keys.ToArray();
                for (int index = 0; index < keys.Length; index++)
                {
                    configNode = new ConfigNode(KeyValueNode);
                    configNode.AddValue(KeyValuePairKey, keys[index]);
                    configNode.AddValue(KeyValuePairValue, astronautData.keyValuePairs[keys[index]]);
                    astronautNode.AddNode(configNode);
                }

                //Save resource process results
                keys = astronautData.processedResourceSuccesses.Keys.ToArray();
                for (int index = 0; index < keys.Length; index++)
                {
                    configNode = new ConfigNode(ResourceCounterNode);
                    configNode.AddValue(ResourceCounterName, keys[index]);
                    configNode.AddValue(ResourceCounterIsSuccess, true);
                    configNode.AddValue(ResourceCounterValue, astronautData.processedResourceSuccesses[keys[index]]);
                    astronautNode.AddNode(configNode);
                }

                keys = astronautData.processedResourceFailures.Keys.ToArray();
                for (int index = 0; index < keys.Length; index++)
                {
                    configNode = new ConfigNode(ResourceCounterNode);
                    configNode.AddValue(ResourceCounterName, keys[index]);
                    configNode.AddValue(ResourceCounterIsSuccess, false);
                    configNode.AddValue(ResourceCounterValue, astronautData.processedResourceFailures[keys[index]]);
                    astronautNode.AddNode(configNode);
                }

                //Save roster resources
                SnacksRosterResource.SaveToAstronautData(astronautData.rosterResources, astronautNode);

                node.AddNode(astronautNode);
            }
        }