- Removed deprecated ButtonPinMapping enum and related COM input classes- Updated ComInputToInputSystemAdapter with improved binding logic- Refactored GameManager to use new globals prefab path - Enhanced GameEndUIController with event system focus management - Modified Globals prefab to use pin-based input bindings - Cleaned up obsolete COM system wrapper and native wrapper classes - Adjusted input adapter to support pin bindings over action bindings - Updated manufacturer name in virtual gamepad description
91 lines
5.6 KiB
C#
91 lines
5.6 KiB
C#
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// Статический фасад для унифицированного доступа к системе ввода.
|
||
/// Предоставляет глобальный интерфейс для работы с управлением независимо от выбранного источника.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Этот класс является точкой входа для всей игровой логики, работающей с вводом.
|
||
/// Автоматически инициализирует выбранный источник управления (клавиатура или COM-порт)
|
||
/// и предоставляет статические методы для удобного доступа из любого места кода.
|
||
///
|
||
/// Использование:
|
||
/// 1. Настройте тип ввода в инспекторе
|
||
/// 2. Вызовите Initialize() при старте игры
|
||
/// 3. Используйте статические методы для проверки ввода
|
||
/// </remarks>
|
||
public class In : MonoBehaviour
|
||
{
|
||
[Header("Выбор источника управления")]
|
||
[SerializeField] private InputSourceType inputType;
|
||
|
||
private static InputSource source;
|
||
|
||
/// <summary>
|
||
/// Инициализирует систему ввода на основе выбранного типа.
|
||
/// Должен быть вызван один раз при запуске приложения.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Создает соответствующий экземпляр InputSource:
|
||
/// - KeyboardInput для тестирования на клавиатуре
|
||
/// - COMinput для работы с периферийной платой
|
||
/// </remarks>
|
||
public void Initialize()
|
||
{
|
||
source = inputType switch
|
||
{
|
||
InputSourceType.Keyboard => new KeyboardInput(),
|
||
InputSourceType.COM => new COMInput(),
|
||
// _ => throw new System.NotImplementedException()
|
||
_ => null
|
||
};
|
||
|
||
|
||
var success = source?.Initialize() ?? false;
|
||
if (!success) Debug.LogWarning("Не удалось проинициалзировать источник управления.");
|
||
}
|
||
|
||
// ================================================================================
|
||
// СТАТИЧЕСКИЕ МЕТОДЫ ДЛЯ РАБОТЫ С ФИЗИЧЕСКИМИ ПИНАМИ
|
||
// ================================================================================
|
||
|
||
/// <summary>Проверяет состояние конкретной кнопки по её физическому пину</summary>
|
||
public static bool GetButton(ButtonPinMapping button) => source.GetButton(button);
|
||
|
||
/// <summary>Проверяет нажатие кнопки по пину в текущем кадре</summary>
|
||
public static bool GetButtonDown(ButtonPinMapping button) => source.GetButtonDown(button);
|
||
|
||
/// <summary>Проверяет отпускание кнопки по пину в текущем кадре</summary>
|
||
public static bool GetButtonUp(ButtonPinMapping button) => source.GetButtonUp(button);
|
||
|
||
/// <summary>Проверяет состояние кнопки по числовому индексу пина</summary>
|
||
public static bool GetButton(int pinIndex) => source.GetButton(pinIndex);
|
||
|
||
/// <summary>Проверяет нажатие кнопки по индексу пина в текущем кадре</summary>
|
||
public static bool GetButtonDown(int pinIndex) => source.GetButtonDown(pinIndex);
|
||
|
||
/// <summary>Проверяет отпускание кнопки по индексу пина в текущем кадре</summary>
|
||
public static bool GetButtonUp(int pinIndex) => source.GetButtonUp(pinIndex);
|
||
|
||
// ================================================================================
|
||
// СТАТИЧЕСКИЕ МЕТОДЫ ДЛЯ РАБОТЫ С АБСТРАКТНЫМИ ДЕЙСТВИЯМИ ИГРОКОВ
|
||
// ================================================================================
|
||
|
||
/// <summary>Проверяет состояние действия для любого из игроков</summary>
|
||
public static bool GetButtonAnyPlayer(PlayerAction button) => source.GetButtonAnyPlayer(button);
|
||
|
||
/// <summary>Проверяет начало действия любым игроком в текущем кадре</summary>
|
||
public static bool GetButtonDownAnyPlayer(PlayerAction button) => source.GetButtonDownAnyPlayer(button);
|
||
|
||
/// <summary>Проверяет завершение действия любым игроком в текущем кадре</summary>
|
||
public static bool GetButtonUpAnyPlayer(PlayerAction button) => source.GetButtonUpAnyPlayer(button);
|
||
|
||
/// <summary>Проверяет состояние действия для текущего активного игрока</summary>
|
||
public static bool GetButtonCurrentPlayer(PlayerAction button) => source.GetButtonCurrentPlayer(button);
|
||
|
||
/// <summary>Проверяет начало действия текущим игроком в текущем кадре</summary>
|
||
public static bool GetButtonDownCurrentPlayer(PlayerAction button) => source.GetButtonDownCurrentPlayer(button);
|
||
|
||
/// <summary>Проверяет завершение действия текущим игроком в текущем кадре</summary>
|
||
public static bool GetButtonUpCurrentPlayer(PlayerAction button) => source.GetButtonUpCurrentPlayer(button);
|
||
} |