BizHawk/BizHawk.Client.EmuHawk/MainForm.Movie.cs

94 lines
2.4 KiB
C#
Raw Normal View History

using System;
using System.IO;
using BizHawk.Client.Common;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES;
2014-05-18 16:28:56 +00:00
using BizHawk.Emulation.Cores.Nintendo.NES;
using BizHawk.Emulation.Cores.Nintendo.SNES9X;
using BizHawk.Emulation.Cores.Nintendo.SNES;
namespace BizHawk.Client.EmuHawk
{
partial class MainForm
{
2014-07-07 19:48:58 +00:00
public void StartNewMovie(IMovie movie, bool record)
{
Global.MovieSession.QueueNewMovie(movie, record);
LoadRom(GlobalWin.MainForm.CurrentlyOpenRom);
2014-07-07 19:48:58 +00:00
Global.Config.RecentMovies.Add(movie.Filename);
if (movie.StartsFromSavestate)
{
if (movie.TextSavestate != null)
{
Global.Emulator.LoadStateText(new StringReader(movie.TextSavestate));
}
2014-06-20 00:39:46 +00:00
else
{
Global.Emulator.LoadStateBinary(new BinaryReader(new MemoryStream(movie.BinarySavestate, false)));
}
Global.Emulator.ResetCounters();
}
Global.MovieSession.RunQueuedMovie(record);
2014-07-07 19:48:58 +00:00
SetMainformMovieInfo();
UpdateStatusSlots();
2014-07-07 19:48:58 +00:00
GlobalWin.Tools.Restart<VirtualpadTool>();
GlobalWin.DisplayManager.NeedsToPaint = true;
}
public void SetMainformMovieInfo()
{
2013-10-24 22:26:28 +00:00
if (Global.MovieSession.Movie.IsPlaying)
{
2013-10-27 15:53:37 +00:00
PlayRecordStatusButton.Image = Properties.Resources.Play;
PlayRecordStatusButton.ToolTipText = "Movie is in playback mode";
PlayRecordStatusButton.Visible = true;
}
2013-10-24 22:26:28 +00:00
else if (Global.MovieSession.Movie.IsRecording)
{
2013-10-27 15:53:37 +00:00
PlayRecordStatusButton.Image = Properties.Resources.RecordHS;
PlayRecordStatusButton.ToolTipText = "Movie is in record mode";
PlayRecordStatusButton.Visible = true;
}
2013-10-24 22:26:28 +00:00
else if (!Global.MovieSession.Movie.IsActive)
{
2013-10-27 15:53:37 +00:00
PlayRecordStatusButton.Image = Properties.Resources.Blank;
PlayRecordStatusButton.ToolTipText = "No movie is active";
PlayRecordStatusButton.Visible = false;
}
SetWindowText();
}
public void RestartMovie()
{
2013-10-24 22:26:28 +00:00
if (Global.MovieSession.Movie.IsActive)
{
2014-08-02 19:29:40 +00:00
GlobalWin.MainForm.StartNewMovie(Global.MovieSession.Movie, true);
GlobalWin.OSD.AddMessage("Replaying movie file in read-only mode");
}
}
public void StopMovie(bool saveChanges = true)
{
if (IsSlave && _master.WantsToCOntrolStopMovie)
{
_master.StopMovie();
}
else
{
Global.MovieSession.StopMovie(saveChanges);
SetMainformMovieInfo();
UpdateStatusSlots();
}
}
}
}