TAStudio - float painting

This commit is contained in:
adelikat 2014-07-11 16:26:19 +00:00
parent 1ef53257e9
commit f8ee569bbb
3 changed files with 58 additions and 6 deletions

View File

@ -157,6 +157,11 @@ namespace BizHawk.Client.Common
#endregion #endregion
public void SetFloat(string buttonName, float value)
{
MyFloatControls[buttonName] = value;
}
public class Bk2ControllerDefinition : ControllerDefinition public class Bk2ControllerDefinition : ControllerDefinition
{ {
public Bk2ControllerDefinition() public Bk2ControllerDefinition()

View File

@ -79,7 +79,7 @@ namespace BizHawk.Client.Common
if (adapter.Type.FloatControls.Contains(buttonName)) if (adapter.Type.FloatControls.Contains(buttonName))
{ {
adapter.GetFloat(buttonName); return adapter.GetFloat(buttonName).ToString();
} }
return "!"; return "!";
@ -118,12 +118,37 @@ namespace BizHawk.Client.Common
} }
} }
public void SetFloatState(int frame, string buttonName, float val)
{
if (frame < _log.Count)
{
var adapter = GetInputState(frame) as Bk2ControllerAdapter;
var old = adapter.GetFloat(buttonName);
adapter.SetFloat(buttonName, val);
var lg = LogGeneratorInstance();
lg.SetSource(adapter);
_log[frame] = lg.GenerateLogEntry();
if (old != val)
{
Changes = true;
}
}
}
public bool BoolIsPressed(int frame, string buttonName) public bool BoolIsPressed(int frame, string buttonName)
{ {
var adapter = GetInputState(frame) as Bk2ControllerAdapter; var adapter = GetInputState(frame) as Bk2ControllerAdapter;
return adapter.IsPressed(buttonName); return adapter.IsPressed(buttonName);
} }
public float GetFloatValue(int frame, string buttonName)
{
var adapter = GetInputState(frame) as Bk2ControllerAdapter;
return adapter.GetFloat(buttonName);
}
public override string GetInput(int frame) public override string GetInput(int frame)
{ {
if (Global.Emulator.Frame == frame && !StateManager.HasState(frame)) if (Global.Emulator.Frame == frame && !StateManager.HasState(frame))

View File

@ -9,8 +9,10 @@ namespace BizHawk.Client.EmuHawk
public partial class TAStudio public partial class TAStudio
{ {
// Input Painting // Input Painting
private string _startDrawColumn = string.Empty; private string _startBoolDrawColumn = string.Empty;
private string _startFloatDrawColumn = string.Empty;
private bool _boolPaintState; private bool _boolPaintState;
private float _floatPaintState;
private bool _startMarkerDrag; private bool _startMarkerDrag;
private bool _startFrameDrag; private bool _startFrameDrag;
@ -97,9 +99,14 @@ namespace BizHawk.Client.EmuHawk
_tas.ToggleBoolState(TasView.PointedCell.Row.Value, TasView.PointedCell.Column); _tas.ToggleBoolState(TasView.PointedCell.Row.Value, TasView.PointedCell.Column);
TasView.Refresh(); TasView.Refresh();
_startDrawColumn = TasView.PointedCell.Column; _startBoolDrawColumn = TasView.PointedCell.Column;
_boolPaintState = _tas.BoolIsPressed(frame, buttonName); _boolPaintState = _tas.BoolIsPressed(frame, buttonName);
} }
else
{
_startFloatDrawColumn = TasView.PointedCell.Column;
_floatPaintState = _tas.GetFloatValue(frame, buttonName);
}
} }
} }
} }
@ -108,7 +115,9 @@ namespace BizHawk.Client.EmuHawk
{ {
_startMarkerDrag = false; _startMarkerDrag = false;
_startFrameDrag = false; _startFrameDrag = false;
_startDrawColumn = string.Empty; _startBoolDrawColumn = string.Empty;
_startFloatDrawColumn = string.Empty;
_floatPaintState = 0;
} }
private void TasView_PointedCellChanged(object sender, TasListView.CellEventArgs e) private void TasView_PointedCellChanged(object sender, TasListView.CellEventArgs e)
@ -142,14 +151,27 @@ namespace BizHawk.Client.EmuHawk
} }
} }
} }
else if (TasView.IsPaintDown && e.NewCell.Row.HasValue && !string.IsNullOrEmpty(_startDrawColumn)) else if (TasView.IsPaintDown && e.NewCell.Row.HasValue && !string.IsNullOrEmpty(_startBoolDrawColumn))
{ {
if (e.OldCell.Row.HasValue && e.NewCell.Row.HasValue) if (e.OldCell.Row.HasValue && e.NewCell.Row.HasValue)
{ {
for (var i = startVal; i < endVal; i++) for (var i = startVal; i < endVal; i++)
{ {
_tas.SetBoolState(i, _startDrawColumn, _boolPaintState); // Notice it uses new row, old column, you can only paint across a single column _tas.SetBoolState(i, _startBoolDrawColumn, _boolPaintState); // Notice it uses new row, old column, you can only paint across a single column
} }
TasView.Refresh();
}
}
else if (TasView.IsPaintDown && e.NewCell.Row.HasValue && !string.IsNullOrEmpty(_startFloatDrawColumn))
{
if (e.OldCell.Row.HasValue && e.NewCell.Row.HasValue)
{
for (var i = startVal; i < endVal; i++)
{
_tas.SetFloatState(i, _startFloatDrawColumn, _floatPaintState); // Notice it uses new row, old column, you can only paint across a single column
}
TasView.Refresh(); TasView.Refresh();
} }
} }