Example #1
0
        /// <summary>
        /// Убрать владение устройстом со всех игроков
        /// </summary>
        /// <param name="parDevice">Физическое устройство OpenTK</param>
        protected void DeassignFromAllPlayers(MDeviceOpenTk parDevice)
        {
            var players = PlayerBindsControllerWatchdog.PlayerControllers;

            foreach (var player in players)
            {
                var bindsToDeviceAxis = player.MGameActionAxisBindToDevices.FindAll(parX => parX.TargetDevice == parDevice);
                foreach (var bindToDevice in bindsToDeviceAxis)
                {
                    player.MGameActionAxisBindToDevices.Remove(bindToDevice);
                }

                var bindsToDeviceButtons =
                    player.MGameActionButtonBindToDevices.FindAll(parX => parX.TargetDevice == parDevice);
                foreach (var bindToDevice in bindsToDeviceButtons)
                {
                    player.MGameActionButtonBindToDevices.Remove(bindToDevice);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Определить и назначить стандартное управление для игрока
        /// </summary>
        /// <param name="parMPlayerController">Контроллер игрока</param>
        /// <param name="parAvailableDevice">Доступное физическое устройство OpenTK</param>
        protected void DefineAndPerformStandardAssignToPlayer(MPlayerController parMPlayerController,
                                                              MDeviceOpenTk parAvailableDevice)
        {
            void ConditionalAxisBindToDevice(EGameActionAxis parGameActionAxis, MDeviceOpenTk parDeviceOpenTk,
                                             string parAxisId)
            {
                if (parMPlayerController.MPlayerRef.GameActionAxises.ContainsKey(parGameActionAxis))
                {
                    parMPlayerController.MGameActionAxisBindToDevices.Add(
                        new MGameActionAxisBindToDevice(parDeviceOpenTk, parAxisId,
                                                        parMPlayerController.MPlayerRef.GameActionAxises[parGameActionAxis]));
                }
            }

            void ConditionalButtonBindToDevice(EGameActionButton parGameActionButton, MDeviceOpenTk parDeviceOpenTk,
                                               string parButtonId)
            {
                if (parMPlayerController.MPlayerRef.GameActionButtons.ContainsKey(parGameActionButton))
                {
                    parMPlayerController.MGameActionButtonBindToDevices.Add(
                        new MGameActionButtonBindToDevice(parDeviceOpenTk, parButtonId,
                                                          parMPlayerController.MPlayerRef.GameActionButtons[parGameActionButton]));
                }
            }

            if (parAvailableDevice.IsDeviceKeyboardAndMouse())
            {
                ConditionalButtonBindToDevice(EGameActionButton.Button_A, parAvailableDevice,
                                              ((int)Key.Space).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Button_B, parAvailableDevice,
                                              ((int)Key.Escape).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Button_X, parAvailableDevice,
                                              ((int)Key.E).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Button_Y, parAvailableDevice,
                                              ((int)Key.Q).ToString());

                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Up, parAvailableDevice,
                                              ((int)Key.W).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Down, parAvailableDevice,
                                              ((int)Key.S).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Left, parAvailableDevice,
                                              ((int)Key.A).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Right, parAvailableDevice,
                                              ((int)Key.D).ToString());

                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Up, parAvailableDevice,
                                              ((int)Key.Up).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Down, parAvailableDevice,
                                              ((int)Key.Down).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Left, parAvailableDevice,
                                              ((int)Key.Left).ToString());
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Right, parAvailableDevice,
                                              ((int)Key.Right).ToString());

                ConditionalButtonBindToDevice(EGameActionButton.Button_Start, parAvailableDevice,
                                              ((int)Key.Enter).ToString());

                ConditionalButtonBindToDevice(EGameActionButton.Button_Bumper_Shift, parAvailableDevice,
                                              ((int)Key.ShiftLeft).ToString());
            }
            else
            {
                ConditionalAxisBindToDevice(EGameActionAxis.LeftCursorX, parAvailableDevice,
                                            MDeviceOpenTk.THUMBSTICK_LEFT_X_ID);
                ConditionalAxisBindToDevice(EGameActionAxis.LeftCursorY, parAvailableDevice,
                                            MDeviceOpenTk.THUMBSTICK_LEFT_Y_ID);

                ConditionalButtonBindToDevice(EGameActionButton.Button_A, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_BOTTOM_1_ID);
                ConditionalButtonBindToDevice(EGameActionButton.Button_B, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_BOTTOM_2_ID);
                ConditionalButtonBindToDevice(EGameActionButton.Button_X, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_TOP_1_ID);
                ConditionalButtonBindToDevice(EGameActionButton.Button_Y, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_TOP_2_ID);

                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Up, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_DPAD_UP_ID);
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Down, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_DPAD_DOWN_ID);
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Left, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_DPAD_LEFT_ID);
                ConditionalButtonBindToDevice(EGameActionButton.Dpad_Menu_Right, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_DPAD_RIGHT_ID);

                ConditionalButtonBindToDevice(EGameActionButton.Button_Start, parAvailableDevice,
                                              MDeviceOpenTk.GAMEPAD_BUTTON_CENTER_1_ID);
            }
        }
Example #3
0
 /// <summary>
 /// Присвоить владение устройством главному игроку
 /// </summary>
 /// <param name="parDevice">Физическое устройство OpenTK</param>
 protected void AssignToMainPlayer(MDeviceOpenTk parDevice)
 {
     DefineAndPerformStandardAssignToPlayer(_mainPlayerRef, parDevice);
 }