Пример #1
0
        public override void OnLoad(ConfigNode node)
        {
            try
            {
                lastMCButton            = ConfigNodeUtil.ParseValue <MissionControlButton>(node, "lastMCButton", MissionControlButton.All);
                DisplayOfferedOrbits    = ConfigNodeUtil.ParseValue <bool?>(node, "DisplayOfferedOrbits", (bool?)ContractDefs.DisplayOfferedOrbits).Value;
                DisplayOfferedWaypoints = ConfigNodeUtil.ParseValue <bool?>(node, "DisplayOfferedWaypoints", (bool?)ContractDefs.DisplayOfferedWaypoints).Value;
                DisplayActiveOrbits     = ConfigNodeUtil.ParseValue <bool?>(node, "DisplayActiveOrbits", (bool?)true).Value;
                DisplayActiveWaypoints  = ConfigNodeUtil.ParseValue <bool?>(node, "DisplayActiveWaypoints", (bool?)true).Value;

                foreach (ConfigNode groupNode in node.GetNodes("CONTRACT_GROUP"))
                {
                    string groupName = groupNode.GetValue("group");

                    if (ContractGroup.contractGroups.ContainsKey(groupName))
                    {
                        ContractGroup group = ContractGroup.contractGroups[groupName];

                        ContractGroupDetails details = new ContractGroupDetails(group);
                        details.enabled = ConfigNodeUtil.ParseValue <bool>(groupNode, "enabled");

                        contractGroupDetails[group.name] = details;
                    }
                    else
                    {
                        LoggingUtil.LogWarning(this, "Couldn't find contract group with name '" + groupName + "'");
                    }
                }

                foreach (ConfigNode stateNode in node.GetNodes("CONTRACT_STATE"))
                {
                    string typeName = stateNode.GetValue("type");
                    if (!string.IsNullOrEmpty(typeName))
                    {
                        Type contractType = null;
                        try
                        {
                            contractType = ConfigNodeUtil.ParseTypeValue(typeName);
                            StockContractDetails details = new StockContractDetails(contractType);
                            details.enabled = ConfigNodeUtil.ParseValue <bool>(stateNode, "enabled");

                            stockContractDetails[contractType] = details;

                            ContractDisabler.SetContractState(contractType, details.enabled);
                        }
                        catch (ArgumentException)
                        {
                            LoggingUtil.LogWarning(this, "Couldn't find contract type with name '" + typeName + "'");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                LoggingUtil.LogError(this, "Error loading ContractConfiguratorSettings from persistance file!");
                LoggingUtil.LogException(e);
                ExceptionLogWindow.DisplayFatalException(ExceptionLogWindow.ExceptionSituation.SCENARIO_MODULE_LOAD, e, "ContractConfiguratorSettings");
            }
        }
Пример #2
0
        private void StockGroupLine()
        {
            foreach (KeyValuePair <Module, ContractGroupDetails> gpair in stockGroupDetails.OrderBy(p => p.Key.Name == "Assembly-CSharp.dll" ? "ZZZ" : p.Key.Name))
            {
                Module module = gpair.Key;
                ContractGroupDetails groupDetails = gpair.Value;

                GUILayout.BeginHorizontal();

                if (GUILayout.Button(groupDetails.expanded ? "-" : "+", expandButtonStyle, GUILayout.Width(20), GUILayout.Height(20)))
                {
                    groupDetails.expanded = !groupDetails.expanded;
                }
                string groupName = module.Name == "Assembly-CSharp.dll" ? "Stock Contracts" : module.Name.Remove(module.Name.Length - 4);
                GUILayout.Label(groupName, groupRegularText, GUILayout.ExpandWidth(true));
                GUILayout.EndHorizontal();

                if (groupDetails.expanded)
                {
                    foreach (KeyValuePair <Type, StockContractDetails> pair in stockContractDetails.Where(p => p.Key.Module == module).OrderBy(p => p.Key.Name))
                    {
                        Type subclass = pair.Key;
                        StockContractDetails details = pair.Value;

                        string hintText;
                        IEnumerable <ContractGroup> disablingGroups = ContractDisabler.DisablingGroups(subclass);
                        if (disablingGroups.Any())
                        {
                            hintText = subclass.Name + " disabled by: " +
                                       string.Join(", ", disablingGroups.Select(g => g == null ? "unknown" : g.displayName).ToArray()) + "\n";
                            hintText += "Click to " + (details.enabled ? "disable " : "re-enable ") + subclass.Name + ".";
                        }
                        else
                        {
                            hintText = "Click to " + (details.enabled ? "disable " : "enable ") + subclass.Name + ".";
                        }

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("", contractRegularText, GUILayout.ExpandWidth(false), GUILayout.Width(32));
                        GUILayout.Label(new GUIContent(subclass.Name, hintText), details.enabled ? contractRegularText : contractDisabledText, GUILayout.ExpandWidth(true));

                        bool newState = GUILayout.Toggle(details.enabled, new GUIContent("", hintText),
                                                         contractToggleStyle, GUILayout.ExpandWidth(false));
                        GUILayout.EndHorizontal();

                        if (newState != details.enabled)
                        {
                            details.enabled = newState;
                            ContractDisabler.SetContractState(subclass, details.enabled);
                        }
                    }
                }
            }
        }
Пример #3
0
        private void SeedStockContractDetails()
        {
            // Enable everything
            foreach (Type subclass in ContractConfigurator.GetAllTypes <Contract>().Where(t => t != null && !t.Name.StartsWith("ConfiguredContract")))
            {
                ContractDisabler.SetContractState(subclass, true);
            }

            // Make sure that the initial state has been correctly set
            ContractDisabler.contractsDisabled = false;
            ContractDisabler.DisableContracts();

            foreach (Type subclass in ContractConfigurator.GetAllTypes <Contract>().Where(t => t != null && !t.Name.StartsWith("ConfiguredContract")))
            {
                if (!stockContractDetails.ContainsKey(subclass))
                {
                    stockContractDetails[subclass] = new StockContractDetails(subclass);
                    if (ContractSystem.ContractTypes != null)
                    {
                        stockContractDetails[subclass].enabled = ContractSystem.ContractTypes.Any(t => t == subclass);
                    }
                }
            }
        }
        public override void OnLoad(ConfigNode node)
        {
            Debug.Log("ContractConfiguratorSettings.OnLoad");
            try
            {
                foreach (ConfigNode groupNode in node.GetNodes("CONTRACT_GROUP"))
                {
                    string groupName = groupNode.GetValue("group");

                    if (ContractGroup.contractGroups.ContainsKey(groupName))
                    {
                        ContractGroup group = ContractGroup.contractGroups[groupName];

                        ContractGroupDetails details = new ContractGroupDetails(group);
                        details.enabled = ConfigNodeUtil.ParseValue<bool>(groupNode, "enabled");

                        contractGroupDetails[group.name] = details;
                    }
                    else
                    {
                        LoggingUtil.LogWarning(this, "Couldn't find contract group with name '" + groupName + "'");
                    }
                }

                foreach (ConfigNode stateNode in node.GetNodes("CONTRACT_STATE"))
                {
                    string typeName = stateNode.GetValue("type");
                    if (!string.IsNullOrEmpty(typeName))
                    {
                        Type contractType = null;
                        try
                        {
                            contractType = ConfigNodeUtil.ParseTypeValue(typeName);
                            StockContractDetails details = new StockContractDetails(contractType);
                            details.enabled = ConfigNodeUtil.ParseValue<bool>(stateNode, "enabled");

                            stockContractDetails[contractType] = details;

                            ContractDisabler.SetContractState(contractType, details.enabled);
                        }
                        catch (ArgumentException)
                        {
                            LoggingUtil.LogWarning(this, "Couldn't find contract type with name '" + typeName + "'");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                LoggingUtil.LogError(this, "Error loading ContractConfiguratorSettings from persistance file!");
                LoggingUtil.LogException(e);
                ExceptionLogWindow.DisplayFatalException(ExceptionLogWindow.ExceptionSituation.SCENARIO_MODULE_LOAD, e, "ContractConfiguratorSettings");
            }
        }
        private void SeedStockContractDetails()
        {
            // Enable everything
            foreach (Type subclass in ContractConfigurator.GetAllTypes<Contract>().Where(t => t != typeof(ConfiguredContract)))
            {
                ContractDisabler.SetContractState(subclass, true);
            }

            // Make sure that the initial state has been correctly set
            ContractDisabler.DisableContracts();

            foreach (Type subclass in ContractConfigurator.GetAllTypes<Contract>().Where(t => t != typeof(ConfiguredContract)))
            {
                if (!stockContractDetails.ContainsKey(subclass))
                {
                    stockContractDetails[subclass] = new StockContractDetails(subclass);
                    if (ContractSystem.ContractTypes != null)
                    {
                        stockContractDetails[subclass].enabled = ContractSystem.ContractTypes.Any(t => t == subclass);
                    }
                }
            }
        }
        public override void OnLoad(ConfigNode node)
        {
            foreach (ConfigNode groupNode in node.GetNodes("CONTRACT_GROUP"))
            {
                ContractGroup group = ConfigNodeUtil.ParseValue<ContractGroup>(groupNode, "group");

                ContractGroupDetails details = new ContractGroupDetails(group);
                details.enabled = ConfigNodeUtil.ParseValue<bool>(groupNode, "enabled");
            }

            foreach (ConfigNode stateNode in node.GetNodes("CONTRACT_STATE"))
            {
                try
                {
                    Type contractType = ConfigNodeUtil.ParseValue<Type>(stateNode, "group");

                    StockContractDetails details = new StockContractDetails(contractType);
                    details.enabled = ConfigNodeUtil.ParseValue<bool>(stateNode, "enabled");

                    stockContractDetails[contractType] = details;
                }
                // Ignore ArgumentException - handles contracts that were dropped
                catch (ArgumentException) { }
            }
        }
        private void SeedStockContractDetails()
        {
            // Make sure that the initial state has been correctly set
            ContractDisabler.DisableContracts();

            foreach (Type subclass in ContractConfigurator.GetAllTypes<Contract>().Where(t => t != typeof(ConfiguredContract)))
            {
                if (!stockContractDetails.ContainsKey(subclass))
                {
                    stockContractDetails[subclass] = new StockContractDetails(subclass);
                }
                StockContractDetails details = stockContractDetails[subclass];
            }
        }