diff --git a/BizHawk.Client.Common/movie/TasMovie.cs b/BizHawk.Client.Common/movie/TasMovie.cs index 7f6eddb8cc..49851a07eb 100644 --- a/BizHawk.Client.Common/movie/TasMovie.cs +++ b/BizHawk.Client.Common/movie/TasMovie.cs @@ -34,14 +34,14 @@ namespace BizHawk.Client.Common public void ToggleButton(int frame, string buttonName) { - //_records[frame].Buttons[buttonName] ^= true; //TODO: be this clean but still fire the event + InvalidateGreenzone(frame); _records[frame].SetButton(buttonName, !_records[frame].Buttons[buttonName]); } public void SetButton(int frame, string buttonName, bool value) { - //_records[frame].Buttons[buttonName] = value; //TODO: be this clean but still fire the event + InvalidateGreenzone(frame); _records[frame].SetButton(buttonName, value); } @@ -52,7 +52,6 @@ namespace BizHawk.Client.Common private void InputChanged(object sender, MovieRecord.InputEventArgs e) { - //TODO: manage green zone Changes = true; if (OnChanged != null) @@ -61,6 +60,18 @@ namespace BizHawk.Client.Common } } + /// + /// Removes the greenzone content after the given frame + /// + /// + private void InvalidateGreenzone(int frame) + { + for (int i = frame + 1; i < _records.Count; i++) + { + _records[i].ClearState(); + } + } + #region Events public delegate void MovieEventHandler(object sender, MovieRecord.InputEventArgs e); @@ -259,6 +270,7 @@ namespace BizHawk.Client.Common public void PokeFrame(int frame, IController source) { + InvalidateGreenzone(frame); if (frame < _records.Count) { Changes = true;