Movies - Add all current valid movie file extensions to drag & drop, Hook up movie finished mode to frame loop & frame counter display, clean up some logic regarding the toggling of InputLog and UserMovie
This commit is contained in:
parent
6825c9f84c
commit
fe0363d80b
|
@ -451,10 +451,24 @@ namespace BizHawk.MultiClient
|
||||||
e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None;
|
e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsValidMovieExtension(string ext)
|
||||||
|
{
|
||||||
|
switch (ext.ToUpper())
|
||||||
|
{
|
||||||
|
case ".TAS": //Bizhawk
|
||||||
|
case ".FM2": //FCUEX
|
||||||
|
case ".MC2": //PCEjin
|
||||||
|
case ".STATE": //Savestates
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void FormDragDrop(object sender, DragEventArgs e)
|
private void FormDragDrop(object sender, DragEventArgs e)
|
||||||
{
|
{
|
||||||
string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
|
string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
if (Path.GetExtension(filePaths[0]) == ".tas")
|
if (IsValidMovieExtension(Path.GetExtension(filePaths[0])))
|
||||||
{
|
{
|
||||||
Movie m = new Movie(filePaths[0], MOVIEMODE.PLAY);
|
Movie m = new Movie(filePaths[0], MOVIEMODE.PLAY);
|
||||||
StartNewMovie(m);
|
StartNewMovie(m);
|
||||||
|
@ -645,14 +659,8 @@ namespace BizHawk.MultiClient
|
||||||
new BizHawk.Emulation.Consoles.Gameboy.Debugger(Global.Emulator as Gameboy).Show();
|
new BizHawk.Emulation.Consoles.Gameboy.Debugger(Global.Emulator as Gameboy).Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Remove this block once movie selection is more polished, input log should only be playback through the same mechanism as any other movie file
|
//TODO: autoload movie logic goes here
|
||||||
if (InputLog.GetMovieMode() == MOVIEMODE.PLAY)
|
InputLog.StartNewRecording(); //(Keep this line)
|
||||||
{
|
|
||||||
InputLog.LoadMovie(); //TODO: Debug
|
|
||||||
InputLog.StartPlayback(); //TODO: Debug
|
|
||||||
}
|
|
||||||
else
|
|
||||||
InputLog.StartNewRecording(); //(Keep this line)
|
|
||||||
|
|
||||||
//setup the throttle based on platform's specifications
|
//setup the throttle based on platform's specifications
|
||||||
//(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
//(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
||||||
|
@ -986,16 +994,21 @@ namespace BizHawk.MultiClient
|
||||||
genSound = true;
|
genSound = true;
|
||||||
|
|
||||||
//TODO: clean up this movie code, use a function or an object to manage the togglign of two movies
|
//TODO: clean up this movie code, use a function or an object to manage the togglign of two movies
|
||||||
if (UserMovie.GetMovieMode() == MOVIEMODE.PLAY)
|
if (MovieActive())
|
||||||
Global.ActiveController.SetControllersAsMnemonic(UserMovie.GetInputFrame(Global.Emulator.Frame) + 1);
|
{
|
||||||
else if (InputLog.GetMovieMode() == MOVIEMODE.PLAY)
|
Movie m = GetActiveMovie();
|
||||||
Global.ActiveController.SetControllersAsMnemonic(InputLog.GetInputFrame(Global.Emulator.Frame) + 1);
|
if (m.GetMovieLength() == Global.Emulator.Frame && m.GetMovieMode() == MOVIEMODE.PLAY)
|
||||||
|
m.SetMovieFinished();
|
||||||
|
if (m.GetMovieMode() == MOVIEMODE.PLAY)
|
||||||
|
Global.ActiveController.SetControllersAsMnemonic(m.GetInputFrame(Global.Emulator.Frame) + 1);
|
||||||
|
}
|
||||||
Global.Emulator.FrameAdvance(!throttle.skipnextframe);
|
Global.Emulator.FrameAdvance(!throttle.skipnextframe);
|
||||||
RamWatch1.UpdateValues();
|
RamWatch1.UpdateValues();
|
||||||
RamSearch1.UpdateValues();
|
RamSearch1.UpdateValues();
|
||||||
HexEditor1.UpdateValues();
|
HexEditor1.UpdateValues();
|
||||||
NESNameTableViewer1.UpdateValues();
|
NESNameTableViewer1.UpdateValues();
|
||||||
NESPPU1.UpdateValues();
|
NESPPU1.UpdateValues();
|
||||||
|
|
||||||
if (UserMovie.GetMovieMode() == MOVIEMODE.RECORD)
|
if (UserMovie.GetMovieMode() == MOVIEMODE.RECORD)
|
||||||
UserMovie.GetMnemonic();
|
UserMovie.GetMnemonic();
|
||||||
else if (InputLog.GetMovieMode() == MOVIEMODE.RECORD)
|
else if (InputLog.GetMovieMode() == MOVIEMODE.RECORD)
|
||||||
|
@ -1730,5 +1743,25 @@ namespace BizHawk.MultiClient
|
||||||
UserMovie.LoadMovie();
|
UserMovie.LoadMovie();
|
||||||
UserMovie.StartPlayback();
|
UserMovie.StartPlayback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Movie GetActiveMovie()
|
||||||
|
{
|
||||||
|
if (UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE)
|
||||||
|
return UserMovie;
|
||||||
|
else if (InputLog.GetMovieMode() != MOVIEMODE.INACTIVE)
|
||||||
|
return InputLog;
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool MovieActive()
|
||||||
|
{
|
||||||
|
if (UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE)
|
||||||
|
return true;
|
||||||
|
else if (InputLog.GetMovieMode() != MOVIEMODE.INACTIVE)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,7 +16,6 @@ namespace BizHawk.MultiClient
|
||||||
//Upon open file dialog? that's weird, record movie? more often people will use play movie first
|
//Upon open file dialog? that's weird, record movie? more often people will use play movie first
|
||||||
//Never? then the path default must be .\ not .\movies
|
//Never? then the path default must be .\ not .\movies
|
||||||
//TODO: after browse & update, focus on the movie just added
|
//TODO: after browse & update, focus on the movie just added
|
||||||
//Make MovieView not allow multiselect
|
|
||||||
//This is a modal dialog, implement it as modeless
|
//This is a modal dialog, implement it as modeless
|
||||||
// In order to do this, this dialog will have to restart the rom
|
// In order to do this, this dialog will have to restart the rom
|
||||||
|
|
||||||
|
|
|
@ -304,7 +304,12 @@ namespace BizHawk.MultiClient
|
||||||
private string MakeFrameCounter()
|
private string MakeFrameCounter()
|
||||||
{
|
{
|
||||||
//TODO: remove rerecord count code and make it its own display option
|
//TODO: remove rerecord count code and make it its own display option
|
||||||
if (Global.MainForm.UserMovie.GetMovieMode() == MOVIEMODE.PLAY)
|
if (Global.MainForm.UserMovie.GetMovieMode() == MOVIEMODE.FINISHED)
|
||||||
|
{
|
||||||
|
return Global.Emulator.Frame.ToString() + " " + Global.Emulator.Frame.ToString()
|
||||||
|
+ "/" + Global.MainForm.UserMovie.GetMovieLength().ToString() + " (Finished)";
|
||||||
|
}
|
||||||
|
else if (Global.MainForm.UserMovie.GetMovieMode() == MOVIEMODE.PLAY)
|
||||||
{
|
{
|
||||||
return Global.Emulator.Frame.ToString() + " " + Global.MainForm.UserMovie.lastLog.ToString()
|
return Global.Emulator.Frame.ToString() + " " + Global.MainForm.UserMovie.lastLog.ToString()
|
||||||
+ "/" + Global.MainForm.UserMovie.GetMovieLength().ToString() + " Rerecord count: " + Global.MainForm.UserMovie.GetRerecordCount();
|
+ "/" + Global.MainForm.UserMovie.GetMovieLength().ToString() + " Rerecord count: " + Global.MainForm.UserMovie.GetRerecordCount();
|
||||||
|
@ -312,7 +317,7 @@ namespace BizHawk.MultiClient
|
||||||
else if (Global.MainForm.UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE)
|
else if (Global.MainForm.UserMovie.GetMovieMode() != MOVIEMODE.INACTIVE)
|
||||||
return Global.Emulator.Frame.ToString() + " " + Global.MainForm.UserMovie.lastLog.ToString()
|
return Global.Emulator.Frame.ToString() + " " + Global.MainForm.UserMovie.lastLog.ToString()
|
||||||
+ "/" + Global.MainForm.UserMovie.GetMovieLength().ToString() + " Rerecord count: " + Global.MainForm.UserMovie.GetRerecordCount();
|
+ "/" + Global.MainForm.UserMovie.GetMovieLength().ToString() + " Rerecord count: " + Global.MainForm.UserMovie.GetRerecordCount();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Global.Emulator.Frame.ToString();
|
return Global.Emulator.Frame.ToString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -324,5 +324,11 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
return Header.HeaderParams;
|
return Header.HeaderParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetMovieFinished()
|
||||||
|
{
|
||||||
|
if (MovieMode == MOVIEMODE.PLAY)
|
||||||
|
MovieMode = MOVIEMODE.FINISHED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue