ChrisViral / RealChute

Realistic parachutes for KSP
47 stars 38 forks source link

Added title field #83

Closed HSJasperism closed 5 years ago

HSJasperism commented 5 years ago

There will be instances in stock and especially with ContractConfigurator where the display title is needed instead of the internal name.

Preferably, the title field should contain a localization string, but this will have to do for now.

The specific error will repeatedly come up for every contract randomly generated without an agent title [ERR 17:34:26.390] Input is null for field 'agent' in config node 'CONTRACT' at System.Environment.get_StackTrace() at ConfigNode.AddValue(System.String name, System.String value) at Contracts.Contract.Save(.ConfigNode node) at ContractConfigurator.ContractPreLoader.OnSave(.ConfigNode node) at ScenarioModule.Save(.ConfigNode node) at ProtoScenarioModule..ctor(.ScenarioModule module) at ScenarioRunner.UpdateModules() at ScenarioRunner.GetUpdatedProtoModules() at Game.Updated(GameScenes startSceneOverride) at GamePersistence.SaveGame(System.String saveFileName, System.String saveFolder, SaveMode saveMode, GameScenes startScene) at GamePersistence.SaveGame(System.String saveFileName, System.String saveFolder, SaveMode saveMode) at KSP.UI.Screens.SpaceTracking.OnVesselDeleteConfirm() at DialogGUIButton.OptionSelected() at DialogGUIButton.m__7() at UnityEngine.Events.InvokableCall.Invoke() at UnityEngine.Events.UnityEvent.Invoke() at UnityEngine.UI.Button.Press() at UnityEngine.UI.Button.OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData) at UnityEngine.EventSystems.ExecuteEvents.Execute(IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) at UnityEngine.EventSystems.ExecuteEvents.Execute(UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) at UnityEngine.EventSystems.StandaloneInputModule.ProcessMousePress(UnityEngine.EventSystems.MouseButtonEventData data) at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent(Int32 id) at UnityEngine.EventSystems.StandaloneInputModule.ProcessMouseEvent() at UnityEngine.EventSystems.StandaloneInputModule.Process() at UnityEngine.EventSystems.EventSystem.Update()

The save will have something like this:

        CONTRACT_FINISHED
        {
            guid = de4cfe1c-2250-406a-ae7b-3522e2352257
            type = CollectScience
            prestige = 1
            seed = 1996666471
            state = Completed
            viewed = Read
            agent = 
            agentName = Wenkel Corporation
            deadlineType = Floating
            expiryType = Floating
            values = 23760.0005149841,126522002.742291,32344,79062,32344,4,7.438016,3.305785,1039700.63942474,1016002.69890981,127538005.441201,0
            body = 3
            location = Surface
            PARAM
            {
                name = CollectScience
                enabled = False
                state = Complete
                values = 0,0,0,0,0
                body = 3
                location = Surface
            }
        }