BizHawk/BizHawk.Client.EmuHawk/config/ControllerConfig/AnalogBindControl.cs

90 lines
2.2 KiB
C#
Raw Normal View History

using System;
using System.Windows.Forms;
using BizHawk.Client.Common;
namespace BizHawk.Client.EmuHawk
{
public partial class AnalogBindControl : UserControl
{
private AnalogBindControl()
{
InitializeComponent();
}
public AnalogBindControl(string buttonName, Config.AnalogBind bind)
: this()
{
_bind = bind;
ButtonName = buttonName;
labelButtonName.Text = buttonName;
trackBarSensitivity.Value = (int)(bind.Mult * 10.0f);
trackBarDeadzone.Value = (int)(bind.Deadzone * 20.0f);
TrackBarSensitivity_ValueChanged(null, null);
TrackBarDeadzone_ValueChanged(null, null);
textBox1.Text = bind.Value;
}
public string ButtonName { get; private set; }
public Config.AnalogBind Bind => _bind;
private Config.AnalogBind _bind;
private bool _listening;
private void Timer1_Tick(object sender, EventArgs e)
{
string bindval = Input.Instance.GetNextFloatEvent();
if (bindval != null)
{
timer1.Stop();
_listening = false;
_bind.Value = bindval;
textBox1.Text = Bind.Value;
buttonBind.Text = "Bind!";
2013-07-24 02:19:38 +00:00
Input.Instance.StopListeningForFloatEvents();
}
}
private void ButtonBind_Click(object sender, EventArgs e)
{
if (_listening)
{
timer1.Stop();
_listening = false;
buttonBind.Text = "Bind!";
2013-07-24 02:19:38 +00:00
Input.Instance.StopListeningForFloatEvents();
}
else
{
Input.Instance.StartListeningForFloatEvents();
_listening = true;
buttonBind.Text = "Cancel!";
timer1.Start();
}
}
private void TrackBarSensitivity_ValueChanged(object sender, EventArgs e)
{
_bind.Mult = trackBarSensitivity.Value / 10.0f;
labelSensitivity.Text = $"Sensitivity: {(Bind.Mult * 100)}" + "%";
}
private void TrackBarDeadzone_ValueChanged(object sender, EventArgs e)
{
_bind.Deadzone = trackBarDeadzone.Value / 20.0f;
labelDeadzone.Text = $"Deadzone: {(Bind.Deadzone * 100)}" + "%";
}
private void ButtonFlip_Click(object sender, EventArgs e)
{
trackBarSensitivity.Value *= -1;
}
2014-06-04 15:00:53 +00:00
public void Unbind_Click(object sender, EventArgs e)
{
_bind.Value = "";
textBox1.Text = "";
}
}
}