121 lines
3.5 KiB
C#
121 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
|
|
namespace BizHawk.MultiClient
|
|
{
|
|
public partial class RecordMovie : Form
|
|
{
|
|
//Allow relative paths in record textbox
|
|
//Hook up RecordFrom box
|
|
//PAL vs NTSC when appropriate (by SystemID)
|
|
//Other platform specific header lines
|
|
|
|
Movie MovieToRecord;
|
|
|
|
public RecordMovie()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private string MakePath()
|
|
{
|
|
if (RecordBox.Text.Length == 0)
|
|
return "";
|
|
string path = RecordBox.Text;
|
|
int x = path.LastIndexOf('\\');
|
|
if (path.LastIndexOf('\\') == -1)
|
|
{
|
|
if (path[0] != '\\')
|
|
path = path.Insert(0, "\\");
|
|
path = PathManager.MakeAbsolutePath(Global.Config.MoviesPath, "") + path;
|
|
|
|
if (path[path.Length - 4] != '.') //If no file extension, add .tas
|
|
path += ".tas";
|
|
return path;
|
|
}
|
|
else
|
|
return path;
|
|
}
|
|
|
|
private void OK_Click(object sender, EventArgs e)
|
|
{
|
|
string path = MakePath();
|
|
|
|
if (path.Length > 0)
|
|
{
|
|
MovieToRecord = new Movie(path, MOVIEMODE.RECORD);
|
|
|
|
//Header
|
|
MovieToRecord.SetHeaderLine(MovieHeader.AUTHOR, AuthorBox.Text);
|
|
MovieToRecord.SetHeaderLine(MovieHeader.EMULATIONVERSION, MainForm.EMUVERSION);
|
|
MovieToRecord.SetHeaderLine(MovieHeader.MOVIEVERSION, MovieHeader.MovieVersion);
|
|
MovieToRecord.SetHeaderLine(MovieHeader.GUID, MovieHeader.MakeGUID());
|
|
MovieToRecord.SetHeaderLine(MovieHeader.PLATFORM, Global.Emulator.SystemId);
|
|
if (Global.Game != null)
|
|
MovieToRecord.SetHeaderLine(MovieHeader.GAMENAME, Global.Game.FilesystemSafeName);
|
|
else
|
|
MovieToRecord.SetHeaderLine(MovieHeader.GAMENAME, "NULL");
|
|
|
|
Global.MainForm.StartNewMovie(MovieToRecord, true);
|
|
|
|
Global.Config.UseDefaultAuthor = DefaultAuthorCheckBox.Checked;
|
|
if (DefaultAuthorCheckBox.Checked)
|
|
Global.Config.DefaultAuthor = AuthorBox.Text;
|
|
this.Close();
|
|
}
|
|
else
|
|
MessageBox.Show("Please select a movie to record", "File selection error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
}
|
|
|
|
private void Cancel_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
SaveFileDialog sfd = new SaveFileDialog();
|
|
sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.MoviesPath, "");
|
|
sfd.DefaultExt = ".tas";
|
|
sfd.FileName = Global.Game.FilesystemSafeName;
|
|
sfd.Filter = "Movie files (*.tas)|*.TAS";
|
|
|
|
Global.Sound.StopSound();
|
|
var result = sfd.ShowDialog();
|
|
Global.Sound.StartSound();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
RecordBox.Text = sfd.FileName;
|
|
}
|
|
}
|
|
|
|
private void RecordMovie_Load(object sender, EventArgs e)
|
|
{
|
|
StartFromCombo.SelectedIndex = 0;
|
|
DefaultAuthorCheckBox.Checked = Global.Config.UseDefaultAuthor;
|
|
if (Global.Config.UseDefaultAuthor)
|
|
AuthorBox.Text = Global.Config.DefaultAuthor;
|
|
//TODO: populate combo with savestate slots that currently exist
|
|
}
|
|
|
|
private void RecordBox_DragEnter(object sender, DragEventArgs e)
|
|
{
|
|
e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None; string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
|
|
}
|
|
|
|
private void RecordBox_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
string[] filePaths = (string[])e.Data.GetData(DataFormats.FileDrop);
|
|
RecordBox.Text = filePaths[0];
|
|
}
|
|
}
|
|
}
|