Init
This commit is contained in:
1 parent
a73338916a
commit
fbc1cc8d3e
207 files changed
+10327
-2
No files matched your search
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user