Ejemplo n.º 1
0
 public Binding(string description, KeyCode primary, KeyCode secondary, Display display)
 {
     BindingDescription   = description;
     PrimaryBindingCode   = new KeyCodeExtended(primary);
     SecondaryBindingCode = new KeyCodeExtended(secondary);
     ToDisplay            = display;
 }
Ejemplo n.º 2
0
        // temporary clear the keybindings when the mapview is opened
        private static void SaveBindings()
        {
            KeyBindings.Clear();

            var gameSettingsType     = typeof(GameSettings);
            var keyBindingFieldInfos = gameSettingsType.GetFields().Where(predicate: fi => fi.IsStatic && fi.IsPublic && fi.FieldType == typeof(KeyBinding));

            foreach (var keyBindingFieldInfo in keyBindingFieldInfos)
            {
                var keyBinding       = (KeyBinding)keyBindingFieldInfo.GetValue(obj: null);
                var primaryKeyCode   = new KeyCodeExtended(key: keyBinding.primary.code);
                var secondaryKeyCode = new KeyCodeExtended(key: keyBinding.secondary.code);

                if (!ManeuverKeys.ContainsKey(key: primaryKeyCode) &&
                    !ModifierKeys.ContainsKey(key: primaryKeyCode) &&
                    !ManeuverKeys.ContainsKey(key: secondaryKeyCode) &&
                    !ModifierKeys.ContainsKey(key: secondaryKeyCode))
                {
                    continue;
                }

                KeyBindings.Add(
                    key: keyBindingFieldInfo.Name,
                    value: keyBinding
                    );
                keyBindingFieldInfo.SetValue(
                    obj: null,
                    value: new KeyBinding()
                    ); // blank keybinding
            }

            GameSettings.ApplySettings();
            _savedBindings = true;
        }
Ejemplo n.º 3
0
        public static void Setup()
        {
            TRANSLATE_UP    = GameSettings.TRANSLATE_UP.primary;
            TRANSLATE_DOWN  = GameSettings.TRANSLATE_DOWN.primary;
            TRANSLATE_BACK  = GameSettings.TRANSLATE_BACK.primary;
            TRANSLATE_FWD   = GameSettings.TRANSLATE_FWD.primary;
            TRANSLATE_RIGHT = GameSettings.TRANSLATE_RIGHT.primary;
            TRANSLATE_LEFT  = GameSettings.TRANSLATE_LEFT.primary;

            PLUGIN_TOGGLE = new KeyBinding(Parse(Settings.GetValue("shortcut_key", KeyCode.Alpha5.ToString())));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Sets up IVA and activates it
        /// </summary>
        /// <returns>True if successful, False on error</returns>
        public bool startIVA()
        {
            if (FlightGlobals.ActiveVessel == null)
            {
                ProbeControlRoomUtils.Logger.debug("startIVA() - return ACTIVE VESSEL NULL");
                return(false);
            }
            ProbeControlRoomUtils.Logger.debug("startIVA()");
            Transform actualTransform;

            if (FlightGlobals.ActiveVessel.packed)
            {
                ProbeControlRoomUtils.Logger.debug("startIVA() - return vessel still packed!");
                return(false);
            }

            if (canStockIVA || FlightGlobals.ActiveVessel.evaController != null)
            {
                ProbeControlRoomUtils.Logger.debug("startIVA() - return EVA or IVA");
                return(false);
            }

            //Verify active room available
            if (!canPCRIVA)
            {
                ProbeControlRoomUtils.Logger.message("startIVA() - Refresh rooms said there were no IVAs available! Can't start.");
                return(false);
            }

            //Ensure part still exists
            if (aPart == null)
            {
                ProbeControlRoomUtils.Logger.message("startIVA() Lost our part, refreshing");
                refreshVesselRooms();
            }
            if (aPart == null)
            {
                ProbeControlRoomUtils.Logger.message("startIVA() Can't find a part. DIE.");
                return(false);
            }

            //Setup module for transforms
            if (aPart.FindModulesImplementing <ProbeControlRoomPart>().Count == 0)
            {
                ProbeControlRoomUtils.Logger.error("startIVA() a module was not found on the part now, exiting");
                return(false);
            }
            aModule = aPart.FindModulesImplementing <ProbeControlRoomPart>()[0];

            //Make the PCR part the focused part
            aPart.MakeReferencePart();

            //Setup camera transform for internal seat
            actualTransform = aPart.internalModel.FindModelTransform(aModule.seatTransformName);
            if (Transform.Equals(actualTransform, null))
            {
                ProbeControlRoomUtils.Logger.error("startIVA(Part) - NULL on actualTransform-seatTransformName, using fallback...");
                actualTransform = aPart.internalModel.FindModelTransform("Seat");
            }
            else
            {
                ProbeControlRoomUtils.Logger.message("startIVA(Part) - Seat: " + aModule.seatTransformName.ToString());
            }

            ProbeControlRoomUtils.Logger.debug("startIVA() - fire up IVA");


            //disable sound
            shipVolumeBackup     = GameSettings.SHIP_VOLUME;
            ambianceVolumeBackup = GameSettings.AMBIENCE_VOLUME;
            if (ProbeControlRoomSettings.Instance.DisableSounds)
            {
                ProbeControlRoomUtils.Logger.message("startIVA() - DisableSounds");
                GameSettings.SHIP_VOLUME     = 0f;
                GameSettings.AMBIENCE_VOLUME = 0;
                GameSettings.MUSIC_VOLUME    = 0;
                GameSettings.UI_VOLUME       = 0;
                GameSettings.VOICE_VOLUME    = 0;
            }

            //disable camera wobble
            cameraWobbleBackup     = GameSettings.FLT_CAMERA_WOBBLE;
            cameraFXInternalBackup = GameSettings.CAMERA_FX_INTERNAL;
            cameraFXExternalBackup = GameSettings.CAMERA_FX_EXTERNAL;

            if (ProbeControlRoomSettings.Instance.DisableWobble)
            {
                ProbeControlRoomUtils.Logger.message("startIVA() - DisableWobble");
                GameSettings.FLT_CAMERA_WOBBLE  = 0;
                GameSettings.CAMERA_FX_INTERNAL = 0;
                GameSettings.CAMERA_FX_EXTERNAL = 0;
            }
            // TODO: create cfg file with cached vars, on crash to be restored

            //Prevent user from turning on vessel labels
            if (!HasCachedVesselLabelsSetting)
            {
                HasCachedVesselLabelsSetting = true;
                CachedVesselLabelsSetting    = GameSettings.FLT_VESSEL_LABELS;
            }
            if (!VesselLabelKeyDisabled)
            {
                VesselLabelKeyDisabled               = true;
                CachedLabelPrimaryKey                = GameSettings.TOGGLE_LABELS.primary;
                CachedLabelSecondaryKey              = GameSettings.TOGGLE_LABELS.secondary;
                GameSettings.TOGGLE_LABELS.primary   = new KeyCodeExtended(KeyCode.None);
                GameSettings.TOGGLE_LABELS.secondary = new KeyCodeExtended(KeyCode.None);
            }
            SetVesselLabelsValue(false);


            //Highlighters
            if (!HasCachedHighlightInFlightSetting)
            {
                HasCachedHighlightInFlightSetting = true;
                CachedHighlightInFlightSetting    = GameSettings.INFLIGHT_HIGHLIGHT;
            }
            GameSettings.INFLIGHT_HIGHLIGHT = false;


            //Unsure of this purpose at the moment
            FlightCamera.fetch.EnableCamera();
            FlightCamera.fetch.DeactivateUpdate();
            FlightCamera.fetch.gameObject.SetActive(true);

            //Move internal camera to the correct position and enable
            InternalCamera.Instance.SetTransform(actualTransform, true);
            InternalCamera.Instance.EnableCamera();

            if (UIPartActionController.Instance != null)
            {
                UIPartActionController.Instance.Deactivate();
            }

            //Activate internal camera
            CameraManager.Instance.SetCameraInternal(aPart.internalModel, actualTransform);

            ProbeControlRoomUtils.Logger.debug("startIVA() - DONE");

            //GUI may not be started yet.
            if (toolbarControl != null)
            {
                //Change app launcher button icon
                toolbarControl.SetTexture(IconActivate, enabledTexture);
            }

            if (hassavedlookangles && field_set_internalcamera_currentPitch != null && field_set_internalcamera_currentRot != null && field_set_internalcamera_currentZoom != null)
            {
                ProbeControlRoomUtils.Logger.debug(string.Format("startIVA() - Restoring pitch and rot. {0}, {1}", savedpitch, savedrot));

                field_set_internalcamera_currentPitch(InternalCamera.Instance, savedpitch);
                field_set_internalcamera_currentRot(InternalCamera.Instance, savedrot);
                field_set_internalcamera_currentZoom(InternalCamera.Instance, savedzoom);
                InternalCamera.Instance.Update();
            }

            //Disable sun effects inside of IVA
            SetSun(false);

            ProbeControlRoomUtils.Logger.debug("startIVA() - REALLY DONE");

            isActive = true;

            return(true);
        }
        internal void drawWindow(int id)
        {
            GUI.skin = modStyle.skin;
            GUILayout.BeginVertical();
            GUILayout.Label("EVA Enhancements - Settings", modStyle.guiStyles["titleLabel"]);
            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            scrollPos = GUILayout.BeginScrollView(scrollPos);

            GUILayout.Label("Default Jetpack Power: " + settings.defaultJetPackPower.ToString("P0"));
            float newJetPackPower = GUILayout.HorizontalSlider(settings.defaultJetPackPower, 0f, 1f);

            if (newJetPackPower != settings.defaultJetPackPower)
            {
                settings.defaultJetPackPower = newJetPackPower;
                settings.Save();
            }
            GUILayout.Space(10f);

            GUILayout.Label("Default Precision Jetpack Power: " + settings.defaultPrecisionModePower.ToString("P0"));
            float newPrecisionJetPackPower = GUILayout.HorizontalSlider(settings.defaultPrecisionModePower, 0f, 1f);

            if (newPrecisionJetPackPower != settings.defaultPrecisionModePower)
            {
                settings.defaultPrecisionModePower = newPrecisionJetPackPower;
                settings.Save();
            }
            GUILayout.Space(10f);

            string str;

            GUILayout.BeginHorizontal();
            GUILayout.Label("Pitch Down", GUILayout.ExpandWidth(true));
            KeyCodeExtended c = null;

            if (Event.current.isKey)
            {
                c = new KeyCodeExtended(Event.current.keyCode);
            }
            if (settingPitchDown)
            {
                GUILayout.Label("<Press any key>");
                if (Event.current.isKey && c.ToString() != GameSettings.MODIFIER_KEY.primary.ToString())
                {
                    Log.Info("keyodeExtended: " + c.ToString() + ", primary: " + GameSettings.MODIFIER_KEY.primary.ToString());
                    settings.pitchDown       = new KeyCodeExtended(Event.current.keyCode);
                    settings.modKeypitchDown = ExtendedInput.GetKey(GameSettings.MODIFIER_KEY.primary);
                    settings.Save();
                    settingPitchDown = false;
                }
            }
            else
            {
                str = settings.pitchDown.ToString();
                if (settings.modKeypitchDown)
                {
                    str = "Alt-" + str;
                }
                if (GUILayout.Button(new GUIContent(str), GUILayout.Width(125)))
                {
                    settingPitchDown = true;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Pitch Up", GUILayout.ExpandWidth(true));

            if (settingPitchUp)
            {
                GUILayout.Label("<Press any key>");
                if (Event.current.isKey && c.ToString() != GameSettings.MODIFIER_KEY.primary.ToString())
                {
                    settings.pitchUp       = new KeyCodeExtended(Event.current.keyCode);
                    settings.modKeypitchUp = ExtendedInput.GetKey(GameSettings.MODIFIER_KEY.primary);
                    settings.Save();
                    settingPitchUp = false;
                }
            }
            else
            {
                str = settings.pitchUp.ToString();
                if (settings.modKeypitchUp)
                {
                    str = "Alt-" + str;
                }
                if (GUILayout.Button(new GUIContent(str), GUILayout.Width(125)))
                {
                    settingPitchUp = true;
                }
            }

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Roll Left", GUILayout.ExpandWidth(true));

            if (settingRollLeft)
            {
                GUILayout.Label("<Press any key>");
                if (Event.current.isKey && c.ToString() != GameSettings.MODIFIER_KEY.primary.ToString())
                {
                    settings.rollLeft       = new KeyCodeExtended(Event.current.keyCode);
                    settings.modKeyrollLeft = ExtendedInput.GetKey(GameSettings.MODIFIER_KEY.primary);
                    settings.Save();
                    settingRollLeft = false;
                }
            }
            else
            {
                str = settings.rollLeft.ToString();
                if (settings.modKeyrollLeft)
                {
                    str = "Alt-" + str;
                }
                if (GUILayout.Button(new GUIContent(str), GUILayout.Width(125)))
                {
                    settingRollLeft = true;
                }
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Roll Right", GUILayout.ExpandWidth(true));

            if (settingRollRight)
            {
                GUILayout.Label("<Press any key>");
                if (Event.current.isKey && c.ToString() != GameSettings.MODIFIER_KEY.primary.ToString())
                {
                    settings.rollRight       = new KeyCodeExtended(Event.current.keyCode);
                    settings.modKeyrollRight = ExtendedInput.GetKey(GameSettings.MODIFIER_KEY.primary);
                    settings.Save();
                    settingRollRight = false;
                }
            }
            else
            {
                str = settings.rollRight.ToString();
                if (settings.modKeyrollRight)
                {
                    str = "Alt-" + str;
                }
                if (GUILayout.Button(new GUIContent(str), GUILayout.Width(125)))
                {
                    settingRollRight = true;
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

#if false
            GUILayout.BeginHorizontal();
            newUseStockToolbar = GUILayout.Toggle(settings.useStockToolbar, "Use Stock Toolbar");
            GUILayout.EndHorizontal();

            if (newUseStockToolbar != settings.useStockToolbar)
            {
                settings.useStockToolbar = newUseStockToolbar;
                settings.Save();
            }
#endif

            GUILayout.BeginHorizontal();
            // GUILayout.Label("NavBall follows Kerbal:");
            settingsEvaNavballFollowsKerbal = GUILayout.Toggle(settings.evaNavballFollowsKerbal, "NavBall follows Kerbal");
            if (settingsEvaNavballFollowsKerbal != settings.evaNavballFollowsKerbal)
            {
                settings.evaNavballFollowsKerbal = settingsEvaNavballFollowsKerbal;
                settings.Save();
            }
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            // GUILayout.Label("NavBall follows Kerbal:");
            settingsEvaHideNavballMarkers = GUILayout.Toggle(settings.evaHideNavballMarkers, "Hide Navball markers on EVA");
            if (settingsEvaHideNavballMarkers != settings.evaHideNavballMarkers)
            {
                settings.evaHideNavballMarkers = settingsEvaHideNavballMarkers;
                settings.Save();
            }
            GUILayout.EndHorizontal();

            GUILayout.EndScrollView();
            GUILayout.Space(25f);
            GUILayout.EndVertical();

            if (GUI.Button(new Rect(windowRect.width - 18, 3f, 15f, 15f), new GUIContent("X")))
            {
                showWindow = false;
                toolbarControl.SetFalse(false);
            }

            GUI.DragWindow();
        }