This commit is contained in:
ThomasCharester committed 2026-02-26 11:21:27 +03:00
1 parent a73338916a
commit fbc1cc8d3e
207 files changed
+10327 -2

No files matched your search

@@ -0,0 +1,24 @@
namespace Code.Infrastructure.Input
{
public enum ActionMappings
{
MainMenu,
Gameplay,
Debug
}
public enum GameplayActions
{
Move,
Brake,
}
public enum DebugActions
{
Debug1,
Debug2,
Debug3,
Debug4,
Debug5,
Debug6,
Debug7
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: dc62fec94fde411ab1420155a5087d64
timeCreated: 1766613550
@@ -0,0 +1,15 @@
using System;
using UnityEngine.InputSystem;
namespace Code.Infrastructure.Input
{
public interface IInputService
{
void EnableMap(ActionMappings actionMap);
void DisableMap(ActionMappings actionMap);
void BindActionPerformed(int mapId, int actionId, Action<InputAction.CallbackContext> action);
void BindActionCancelled(int mapId, int actionId, Action<InputAction.CallbackContext> action);
void UnbindActionPerformed(int mapId, int actionId, Action<InputAction.CallbackContext> action);
void UnbindActionCancelled(int mapId, int actionId, Action<InputAction.CallbackContext> action);
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9443ed0c0d76423f8ecebbd9398bacf3
timeCreated: 1766614201
@@ -0,0 +1,62 @@
using System;
using Code.Infrastructure.Configs;
using Code.Infrastructure.EventBus;
using Code.Infrastructure.Generators;
using Cysharp.Threading.Tasks;
using UnityEngine.AddressableAssets;
using UnityEngine.InputSystem;
using UnityEngine.ResourceManagement.AsyncOperations;
namespace Code.Infrastructure.Input
{
[Config("Configs/InputService")]
public class InputService : IInputService
{
[ToConfig] public InputActionAsset inputActionAsset;
private EventBus.EventBus _eventBus;
public InputService(IConfigLocator configLocator, EventBus.EventBus eventBus)
{
_eventBus = eventBus;
LoadConfigs(configLocator.TryGetConfigAssetReference<InputServiceConfig>()).Forget();
}
private AsyncOperationHandle<InputServiceConfig> _configHandle;
private async UniTaskVoid LoadConfigs(AssetReference configReference)
{
_configHandle = Addressables.LoadAssetAsync<InputServiceConfig>(configReference);
await _configHandle.ToUniTask();
inputActionAsset = _configHandle.Result.inputActionAsset;
// inputActionAsset.actionMaps[(int)ActionMappings.Debug].Enable();
// inputActionAsset.actionMaps[(int)ActionMappings.Gameplay].Enable();
_eventBus.RaiseEvent<IInputServiceInitializedHandle>(h => h.InputServiceInitialized());
}
public void EnableMap(ActionMappings actionMap) => inputActionAsset.actionMaps[(int)actionMap].Enable();
public void DisableMap(ActionMappings actionMap) => inputActionAsset.actionMaps[(int)actionMap].Disable();
public void BindActionPerformed(int mapId, int actionId, Action<InputAction.CallbackContext> action) => inputActionAsset
.actionMaps[mapId].actions[actionId].performed += action;
public void BindActionCancelled(int mapId, int actionId, Action<InputAction.CallbackContext> action) => inputActionAsset
.actionMaps[mapId].actions[actionId].canceled += action;
public void UnbindActionPerformed(int mapId, int actionId, Action<InputAction.CallbackContext> action) =>
inputActionAsset
.actionMaps[mapId].actions[actionId].performed -= action;
public void UnbindActionCancelled(int mapId, int actionId, Action<InputAction.CallbackContext> action) =>
inputActionAsset
.actionMaps[mapId].actions[actionId].canceled -= action;
}
public interface IInputServiceInitializedHandle : IGlobalSubscriber
{
void InputServiceInitialized();
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2755e684d68a4f79994f0f92e8327a73
timeCreated: 1766612399