Tastudio/lua - implement tastudio.ongreenzoneinvalidated
This commit is contained in:
parent
105b8d3a64
commit
19423092cd
|
@ -25,6 +25,16 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
public Action<int> InvalidateCallback { get; set; }
|
||||
|
||||
private void CallInvalidateCallback(int index)
|
||||
{
|
||||
if (InvalidateCallback != null)
|
||||
{
|
||||
InvalidateCallback(index);
|
||||
}
|
||||
}
|
||||
|
||||
private readonly SortedList<int, byte[]> States = new SortedList<int, byte[]>();
|
||||
private string statePath
|
||||
{
|
||||
|
@ -329,6 +339,8 @@ namespace BizHawk.Client.Common
|
|||
accessed.Remove(state.Key);
|
||||
States.Remove(state.Key);
|
||||
}
|
||||
|
||||
CallInvalidateCallback(frame);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -173,5 +173,20 @@ namespace BizHawk.Client.EmuHawk
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
[LuaMethodAttributes(
|
||||
"ongreenzoneinvalidated",
|
||||
"called whenever the greenzone is invalidated and returns the first frame that was invalidated"
|
||||
)]
|
||||
public void OnGreenzoneInvalidated(LuaFunction luaf)
|
||||
{
|
||||
if (Engaged())
|
||||
{
|
||||
Tastudio.GreenzoneInvalidatedCallback = (int index) =>
|
||||
{
|
||||
luaf.Call(index);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,6 +121,15 @@ namespace BizHawk.Client.EmuHawk
|
|||
return null;
|
||||
}
|
||||
|
||||
public Action<int> GreenzoneInvalidatedCallback { get; set; }
|
||||
private void GreenzoneInvalidated(int index)
|
||||
{
|
||||
if (GreenzoneInvalidatedCallback != null)
|
||||
{
|
||||
GreenzoneInvalidatedCallback(index);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void TasView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color)
|
||||
|
|
|
@ -328,6 +328,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (CurrentTasMovie == null)
|
||||
{
|
||||
Global.MovieSession.Movie = new TasMovie(false, _saveBackgroundWorker);
|
||||
(Global.MovieSession.Movie as TasMovie).TasStateManager.InvalidateCallback = GreenzoneInvalidated;
|
||||
}
|
||||
|
||||
CurrentTasMovie.Filename = file.FullName;
|
||||
|
@ -357,6 +358,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
if (AskSaveChanges())
|
||||
{
|
||||
Global.MovieSession.Movie = new TasMovie(false, _saveBackgroundWorker);
|
||||
(Global.MovieSession.Movie as TasMovie).TasStateManager.InvalidateCallback = GreenzoneInvalidated;
|
||||
CurrentTasMovie.PropertyChanged += new PropertyChangedEventHandler(this.TasMovie_OnPropertyChanged);
|
||||
CurrentTasMovie.Filename = DefaultTasProjName(); // TODO don't do this, take over any mainform actions that can crash without a filename
|
||||
CurrentTasMovie.PopulateWithDefaultHeaderValues();
|
||||
|
|
Loading…
Reference in New Issue