using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
namespace PlayerInput
{
public abstract class InputSource<TTarget> where TTarget : MonoBehaviour
{
public enum InputButton
{
MenuSelect,
MenuCancel,
}
public enum InputAxis
{
MoveX,
MoveY,
MenuX,
MenuY,
RakeX,
RakeY,
}
public abstract bool ButtonPressedThisFrame(InputButton button);
public abstract bool ButtonReleasedThisFrame(InputButton button);
public abstract bool ButtonDown(InputButton button);
public abstract float Axis(InputAxis axis);
// TODO old
//private SimpleTimer vibrateTimer = new SimpleTimer();
public void Vibrate(float time, float left, float right)
{
/*
vibrateTimer.Stop();
VibrateInternal(left, right);
vibrateTimer.Start(time, () => VibrateInternal(0, 0));
*/
}
private TTarget target;
public TTarget Target { get { return target; } }
public void SetTarget(TTarget target)
{
if (this.target != target)
{
this.target = target;
TargetUpdated(target);
}
}
protected virtual void TargetUpdated(TTarget target)
{
}
protected virtual void VibrateInternal(float left, float right)
{
}
}
}