Пример #1
0
        public static void updateUIScaleEditControl(this PartModule module, string fieldName, float value)
        {
            UI_ScaleEdit widget = null;

            if (HighLogic.LoadedSceneIsEditor)
            {
                widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlEditor;
            }
            else if (HighLogic.LoadedSceneIsFlight)
            {
                widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlFlight;
            }
            else
            {
                return;
            }
            if (widget == null || widget.partActionItem == null)
            {
                return;
            }
            UIPartActionScaleEdit ctr = (UIPartActionScaleEdit)widget.partActionItem;
            var t = widget.onFieldChanged;

            widget.onFieldChanged = null;
            ctr.inc.onToggle.RemoveAllListeners();
            ctr.dec.onToggle.RemoveAllListeners();
            ctr.slider.onValueChanged.RemoveAllListeners();
            ctr.Setup(ctr.Window, module.part, module, HighLogic.LoadedSceneIsEditor ? UI_Scene.Editor : UI_Scene.Flight, widget, module.Fields[fieldName]);
            widget.onFieldChanged = t;
        }
Пример #2
0
        private void SetupWidgets(ScaleType scaleType)
        {
            ScaleFactors = scaleType.ScaleFactors;
            this.SetupWidgetsVisibility();
            if (ScaleFactors.Length <= 0)
            {
                return;
            }

            if (isFreeScale)
            {
                BaseField    field = Fields["tweakScale"];
                UI_ScaleEdit range = (UI_ScaleEdit)field.uiControlEditor;
                range.intervals      = scaleType.ScaleFactors;
                range.incrementSlide = scaleType.IncrementSlide;
                range.unit           = scaleType.Suffix;
                range.sigFigs        = 3;
                field.guiUnits       = scaleType.Suffix;
            }
            else
            {
                UI_ChooseOption options = (UI_ChooseOption)Fields["tweakName"].uiControlEditor;
                options.options = scaleType.ScaleNames;
            }
        }
Пример #3
0
        public static void ROLupdateUIScaleEditControl(this PartModule module, string fieldName, float[] intervals, float[] increments, bool forceUpdate, float forceValue = 0)
        {
            UI_ScaleEdit widget = null;

            if (HighLogic.LoadedSceneIsEditor)
            {
                widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlEditor;
            }
            else if (HighLogic.LoadedSceneIsFlight)
            {
                widget = (UI_ScaleEdit)module.Fields[fieldName].uiControlFlight;
            }
            else
            {
                return;
            }
            if (widget == null)
            {
                return;
            }
            widget.intervals      = intervals;
            widget.incrementSlide = increments;
            if (forceUpdate && widget.partActionItem != null)
            {
                UIPartActionScaleEdit ctr = (UIPartActionScaleEdit)widget.partActionItem;
                var t = widget.onFieldChanged;
                widget.onFieldChanged = null;
                ctr.inc.onToggle.RemoveAllListeners();
                ctr.dec.onToggle.RemoveAllListeners();
                ctr.slider.onValueChanged.RemoveAllListeners();
                ctr.Setup(ctr.Window, module.part, module, HighLogic.LoadedSceneIsEditor ? UI_Scene.Editor : UI_Scene.Flight, widget, module.Fields[fieldName]);
                widget.onFieldChanged = t;
            }
        }
Пример #4
0
        /// <summary>
        /// Loads settings from <paramref name="scaleType"/>.
        /// </summary>
        /// <param name="scaleType">The settings to use.</param>
        private void SetupFromConfig(ScaleType scaleType)
        {
            if (ScaleType == null)
            {
                Log.error("Scaletype==null! part={0}", part.name);
            }

            isFreeScale = scaleType.IsFreeScale;
            if (defaultScale == -1)
            {
                defaultScale = scaleType.DefaultScale;
            }

            if (currentScale == -1)
            {
                currentScale = defaultScale;
            }
            else if (defaultScale != scaleType.DefaultScale)
            {
                Log.warn("defaultScale has changed for part {0}: keeping relative scale.", part.name);
                currentScale *= scaleType.DefaultScale / defaultScale;
                defaultScale  = scaleType.DefaultScale;
            }

            if (tweakScale == -1)
            {
                tweakScale = currentScale;
            }
            Fields["tweakScale"].guiActiveEditor = false;
            Fields["tweakName"].guiActiveEditor  = false;
            ScaleFactors = scaleType.ScaleFactors;
            if (ScaleFactors.Length <= 0)
            {
                return;
            }

            if (isFreeScale)
            {
                Fields["tweakScale"].guiActiveEditor = true;
                UI_ScaleEdit range = (UI_ScaleEdit)Fields["tweakScale"].uiControlEditor;
                range.intervals               = scaleType.ScaleFactors;
                range.incrementSlide          = scaleType.IncrementSlide;
                range.unit                    = scaleType.Suffix;
                range.sigFigs                 = 3;
                Fields["tweakScale"].guiUnits = scaleType.Suffix;
            }
            else
            {
                Fields["tweakName"].guiActiveEditor = scaleType.ScaleFactors.Length > 1;
                UI_ChooseOption options = (UI_ChooseOption)Fields["tweakName"].uiControlEditor;
                ScaleNodes      = scaleType.ScaleNodes;
                options.options = scaleType.ScaleNames;
            }
        }
Пример #5
0
        public override void OnStart(StartState state)
        {
            if (this.FailsIntegrity())
            {
                return;
            }

            Log.dbg("OnStart {0}", this.InstanceID);

            base.OnStart(state);

            {
                UI_ScaleEdit ui = (this.Fields["tweakScale"].uiControlEditor as UI_ScaleEdit);
                ui.onFieldChanged += this.OnTweakScaleChanged;
            }
            {
                UI_ChooseOption ui = (this.Fields["tweakName"].uiControlEditor as UI_ChooseOption);
                ui.onFieldChanged += this.OnTweakScaleChanged;
            }

            if (HighLogic.LoadedSceneIsEditor)
            {
                if (this.scaler.HasCrew)
                {
                    GameEvents.onEditorShipModified.Add(this.OnEditorShipModified);
                    this.wasOnEditorShipModifiedAdded = true;
                }
            }

            // scale IVA overlay
            if (HighLogic.LoadedSceneIsFlight && this.enabled && (part.internalModel != null))
            {
                _savedIvaScale = part.internalModel.transform.localScale * ScalingFactor.absolute.linear;
                part.internalModel.transform.localScale = _savedIvaScale;
                part.internalModel.transform.hasChanged = true;
            }
        }