Init
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QFSW.QC.Actions
|
||||
{
|
||||
/// <summary>
|
||||
/// Waits for any key to be pressed and returns the key via the given delegate.
|
||||
/// </summary>
|
||||
public class GetKey : ICommandAction
|
||||
{
|
||||
private KeyCode _key;
|
||||
private readonly Action<KeyCode> _onKey;
|
||||
private static readonly KeyCode[] KeyCodes = Enum.GetValues(typeof(KeyCode))
|
||||
.Cast<KeyCode>()
|
||||
.Where(k => (int)k < (int)KeyCode.Mouse0)
|
||||
.ToArray();
|
||||
|
||||
public bool IsFinished
|
||||
{
|
||||
get
|
||||
{
|
||||
_key = GetCurrentKeyDown();
|
||||
return _key != KeyCode.None;
|
||||
}
|
||||
}
|
||||
|
||||
public bool StartsIdle => true;
|
||||
|
||||
/// <param name="onKey">The action to perform when a key is pressed.</param>
|
||||
public GetKey(Action<KeyCode> onKey)
|
||||
{
|
||||
_onKey = onKey;
|
||||
}
|
||||
|
||||
private KeyCode GetCurrentKeyDown()
|
||||
{
|
||||
return KeyCodes.FirstOrDefault(InputHelper.GetKeyDown);
|
||||
}
|
||||
|
||||
public void Start(ActionContext context) { }
|
||||
|
||||
public void Finalize(ActionContext context)
|
||||
{
|
||||
_onKey(_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user