another round of refactoring the Movie object
This commit is contained in:
parent
e6b2c794d4
commit
72699b4ad7
|
@ -932,10 +932,10 @@ namespace BizHawk.MultiClient
|
|||
|
||||
if (UserMovie.Mode == MOVIEMODE.INACTIVE)
|
||||
{
|
||||
InputLog.SetHeaderLine(MovieHeader.PLATFORM, Global.Emulator.SystemId);
|
||||
InputLog.SetHeaderLine(MovieHeader.GAMENAME, Global.Game.FilesystemSafeName);
|
||||
InputLog.SetHeaderLine(MovieHeader.GUID, MovieHeader.MakeGUID());
|
||||
InputLog.SetHeaderLine(MovieHeader.AUTHOR, Global.Config.DefaultAuthor);
|
||||
InputLog.Header.SetHeaderLine(MovieHeader.PLATFORM, Global.Emulator.SystemId);
|
||||
InputLog.Header.SetHeaderLine(MovieHeader.GAMENAME, Global.Game.FilesystemSafeName);
|
||||
InputLog.Header.SetHeaderLine(MovieHeader.GUID, MovieHeader.MakeGUID());
|
||||
InputLog.Header.SetHeaderLine(MovieHeader.AUTHOR, Global.Config.DefaultAuthor);
|
||||
CreateNewInputLog(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -129,9 +129,9 @@ namespace BizHawk.MultiClient
|
|||
Movie m = new Movie(path.CanonicalFullPath, MOVIEMODE.INACTIVE);
|
||||
m.PreLoadText();
|
||||
if (path.Extension == ".FM2")
|
||||
m.SetHeaderLine(MovieHeader.PLATFORM, "NES");
|
||||
m.Header.SetHeaderLine(MovieHeader.PLATFORM, "NES");
|
||||
else if (path.Extension == ".MC2")
|
||||
m.SetHeaderLine(MovieHeader.PLATFORM, "PCE");
|
||||
m.Header.SetHeaderLine(MovieHeader.PLATFORM, "PCE");
|
||||
MovieList.Add(m);
|
||||
}
|
||||
|
||||
|
@ -247,7 +247,7 @@ namespace BizHawk.MultiClient
|
|||
if (MovieView.SelectedIndices.Count < 1) return;
|
||||
|
||||
int x = MovieView.SelectedIndices[0];
|
||||
Dictionary<string, string> h = MovieList[x].GetHeaderInfo();
|
||||
Dictionary<string, string> h = MovieList[x].Header.HeaderParams;
|
||||
|
||||
foreach (var kvp in h)
|
||||
{
|
||||
|
@ -255,7 +255,7 @@ namespace BizHawk.MultiClient
|
|||
item.SubItems.Add(kvp.Value);
|
||||
DetailsView.Items.Add(item);
|
||||
}
|
||||
if (MovieList[x].HasComments())
|
||||
if (MovieList[x].Header.Comments.Count > 0)
|
||||
button1.Enabled = true;
|
||||
else
|
||||
button1.Enabled = false;
|
||||
|
|
|
@ -53,15 +53,15 @@ namespace BizHawk.MultiClient
|
|||
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);
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.AUTHOR, AuthorBox.Text);
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.EMULATIONVERSION, MainForm.EMUVERSION);
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.MOVIEVERSION, MovieHeader.MovieVersion);
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.GUID, MovieHeader.MakeGUID());
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.PLATFORM, Global.Emulator.SystemId);
|
||||
if (Global.Game != null)
|
||||
MovieToRecord.SetHeaderLine(MovieHeader.GAMENAME, Global.Game.FilesystemSafeName);
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.GAMENAME, Global.Game.FilesystemSafeName);
|
||||
else
|
||||
MovieToRecord.SetHeaderLine(MovieHeader.GAMENAME, "NULL");
|
||||
MovieToRecord.Header.SetHeaderLine(MovieHeader.GAMENAME, "NULL");
|
||||
|
||||
Global.MainForm.StartNewMovie(MovieToRecord, true);
|
||||
|
||||
|
|
|
@ -495,7 +495,7 @@ namespace BizHawk.MultiClient
|
|||
if (Global.MainForm.UserMovie.Mode != MOVIEMODE.INACTIVE)
|
||||
{
|
||||
tmp += "Rerecord Count: ";
|
||||
tmp += Global.MainForm.GetActiveMovie().GetRerecordCount().ToString();
|
||||
tmp += Global.MainForm.GetActiveMovie().Rerecords.ToString();
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
|
|
@ -46,11 +46,11 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
if (!ReadOnly)
|
||||
{
|
||||
selectedMovie.ClearComments();
|
||||
selectedMovie.Header.Comments.Clear();
|
||||
for (int x = 0; x < CommentGrid.Rows.Count - 1; x++)
|
||||
{
|
||||
DataGridViewCell c = CommentGrid.Rows[x].Cells[0];
|
||||
selectedMovie.AddComment("comment " + c.Value.ToString());
|
||||
selectedMovie.Header.Comments.Add("comment " + c.Value.ToString());
|
||||
}
|
||||
selectedMovie.WriteMovie();
|
||||
}
|
||||
|
@ -60,12 +60,11 @@ namespace BizHawk.MultiClient
|
|||
public void GetMovie(Movie m)
|
||||
{
|
||||
selectedMovie = m;
|
||||
List<string> comments = m.GetComments();
|
||||
if (comments.Count == 0) return;
|
||||
if (m.Header.Comments.Count == 0) return;
|
||||
|
||||
for (int x = 0; x < comments.Count; x++)
|
||||
for (int x = 0; x < m.Header.Comments.Count; x++)
|
||||
{
|
||||
string str = comments[x];
|
||||
string str = m.Header.Comments[x];
|
||||
if (str.Length >= 7 && str.Substring(0, 7) == "comment")
|
||||
str = str.Remove(0, 7);
|
||||
CommentGrid.Rows.Add();
|
||||
|
|
|
@ -10,21 +10,22 @@ namespace BizHawk.MultiClient
|
|||
public enum MOVIEMODE { INACTIVE, PLAY, RECORD, FINISHED };
|
||||
public class Movie
|
||||
{
|
||||
private MovieHeader Header = new MovieHeader();
|
||||
private MovieLog Log = new MovieLog();
|
||||
//TODO: preloaded flag + use it to make checks before doing things that require the movie to be loaded
|
||||
|
||||
public MovieHeader Header = new MovieHeader();
|
||||
public SubtitleList Subtitles = new SubtitleList();
|
||||
public MultitrackRecording MultiTrack = new MultitrackRecording();
|
||||
public bool MakeBackup = true; //make backup before altering movie
|
||||
|
||||
public bool IsText { get; private set; }
|
||||
public string Filename { get; private set; }
|
||||
public MOVIEMODE Mode { get; private set; }
|
||||
public int Rerecords { get; private set; }
|
||||
public int Frames { get; private set; } //Only used when a movie is preloaded
|
||||
|
||||
public bool MakeBackup = true; //Flag - make backup before altering movie
|
||||
|
||||
public int Frames = 0;
|
||||
public int lastLog;
|
||||
public int rerecordCount;
|
||||
|
||||
private MovieLog Log = new MovieLog();
|
||||
private int lastLog;
|
||||
|
||||
/// <summary>
|
||||
/// Allows checking if file exists
|
||||
/// </summary>
|
||||
|
@ -46,17 +47,19 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
Mode = m;
|
||||
lastLog = 0;
|
||||
rerecordCount = 0;
|
||||
Rerecords = 0;
|
||||
IsText = true;
|
||||
Frames = 0;
|
||||
}
|
||||
|
||||
public Movie(string filename, MOVIEMODE m)
|
||||
{
|
||||
Mode = m;
|
||||
lastLog = 0;
|
||||
rerecordCount = 0;
|
||||
Rerecords = 0;
|
||||
this.Filename = filename;
|
||||
IsText = true;
|
||||
Frames = 0;
|
||||
}
|
||||
|
||||
public Movie()
|
||||
|
@ -64,6 +67,7 @@ namespace BizHawk.MultiClient
|
|||
Filename = ""; //Note: note this must be populated before playing movie
|
||||
Mode = MOVIEMODE.INACTIVE;
|
||||
IsText = true;
|
||||
Frames = 0;
|
||||
}
|
||||
|
||||
public string GetSysID()
|
||||
|
@ -215,14 +219,6 @@ namespace BizHawk.MultiClient
|
|||
|
||||
}
|
||||
|
||||
private string ParseHeader(string line, string headerName)
|
||||
{
|
||||
string str;
|
||||
int x = line.LastIndexOf(headerName) + headerName.Length;
|
||||
str = line.Substring(x + 1, line.Length - x - 1);
|
||||
return str;
|
||||
}
|
||||
|
||||
private bool LoadText()
|
||||
{
|
||||
var file = new FileInfo(Filename);
|
||||
|
@ -271,11 +267,11 @@ namespace BizHawk.MultiClient
|
|||
Header.AddHeaderLine(MovieHeader.RERECORDS, str);
|
||||
try
|
||||
{
|
||||
rerecordCount = int.Parse(str);
|
||||
Rerecords = int.Parse(str);
|
||||
}
|
||||
catch
|
||||
{
|
||||
rerecordCount = 0;
|
||||
Rerecords = 0;
|
||||
}
|
||||
}
|
||||
else if (str.Contains(MovieHeader.AUTHOR))
|
||||
|
@ -338,7 +334,7 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Header.AddHeaderFromLine(str)) continue;
|
||||
else if (str.Contains(MovieHeader.EMULATIONVERSION))
|
||||
{
|
||||
str = ParseHeader(str, MovieHeader.EMULATIONVERSION);
|
||||
|
@ -391,9 +387,7 @@ namespace BizHawk.MultiClient
|
|||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
Header.Comments.Add(str);
|
||||
}
|
||||
}
|
||||
sr.Close();
|
||||
}
|
||||
|
@ -466,23 +460,19 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
Log.Truncate(Global.Emulator.Frame);
|
||||
}
|
||||
IncrementRerecordCount();
|
||||
IncrementRerecords();
|
||||
}
|
||||
|
||||
public void IncrementRerecordCount()
|
||||
public void IncrementRerecords()
|
||||
{
|
||||
rerecordCount++;
|
||||
Header.UpdateRerecordCount(rerecordCount);
|
||||
Rerecords++;
|
||||
Header.UpdateRerecordCount(Rerecords);
|
||||
}
|
||||
|
||||
public int GetRerecordCount()
|
||||
public void SetRerecords(int value)
|
||||
{
|
||||
return rerecordCount;
|
||||
}
|
||||
|
||||
public Dictionary<string, string> GetHeaderInfo()
|
||||
{
|
||||
return Header.HeaderParams;
|
||||
Rerecords = value;
|
||||
Header.SetHeaderLine(MovieHeader.RERECORDS, Rerecords.ToString());
|
||||
}
|
||||
|
||||
public void SetMovieFinished()
|
||||
|
@ -491,11 +481,6 @@ namespace BizHawk.MultiClient
|
|||
Mode = MOVIEMODE.FINISHED;
|
||||
}
|
||||
|
||||
public void SetHeaderLine(string key, string value)
|
||||
{
|
||||
Header.SetHeaderLine(key, value);
|
||||
}
|
||||
|
||||
public string GetTime(bool preLoad)
|
||||
{
|
||||
string time = "";
|
||||
|
@ -517,10 +502,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
private string MakeDigits(decimal num)
|
||||
{
|
||||
if (num < 10)
|
||||
return "0" + num.ToString();
|
||||
else
|
||||
return num.ToString();
|
||||
return MakeDigits((int)num);
|
||||
}
|
||||
|
||||
private string MakeDigits(int num)
|
||||
|
@ -728,27 +710,16 @@ namespace BizHawk.MultiClient
|
|||
return 0;
|
||||
}
|
||||
|
||||
public List<string> GetComments()
|
||||
{
|
||||
return Header.Comments;
|
||||
}
|
||||
|
||||
public bool HasComments()
|
||||
{
|
||||
if (Header.Comments.Count > 0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
public void AddComment(string comment)
|
||||
{
|
||||
Header.Comments.Add(comment);
|
||||
}
|
||||
|
||||
public void ClearComments()
|
||||
|
||||
private string ParseHeader(string line, string headerName)
|
||||
{
|
||||
Header.Comments.Clear();
|
||||
string str;
|
||||
int x = line.LastIndexOf(headerName) + headerName.Length;
|
||||
str = line.Substring(x + 1, line.Length - x - 1);
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
|
||||
UInt32 version = r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.MovieVersion, "FCEU movie version " + version.ToString() + " (.fcm)");
|
||||
m.Header.SetHeaderLine(MovieHeader.MovieVersion, "FCEU movie version " + version.ToString() + " (.fcm)");
|
||||
|
||||
byte[] flags = new byte[4];
|
||||
for (int x = 0; x < 4; x++)
|
||||
|
@ -40,8 +40,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
UInt32 frameCount = r.ReadUInt32();
|
||||
|
||||
m.rerecordCount = (int)r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.RERECORDS, m.rerecordCount.ToString());
|
||||
m.SetRerecords((int)r.ReadUInt32());
|
||||
|
||||
UInt32 movieDataSize = r.ReadUInt32();
|
||||
UInt32 savestateOffset = r.ReadUInt32();
|
||||
|
@ -51,7 +50,7 @@ namespace BizHawk.MultiClient
|
|||
//TODO: ROM checksum movie header line (MD5)
|
||||
|
||||
UInt32 EmuVersion = r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.EMULATIONVERSION, "FCEU " + EmuVersion.ToString());
|
||||
m.Header.SetHeaderLine(MovieHeader.EMULATIONVERSION, "FCEU " + EmuVersion.ToString());
|
||||
|
||||
List<byte> romBytes = new List<byte>();
|
||||
while (true)
|
||||
|
@ -62,7 +61,7 @@ namespace BizHawk.MultiClient
|
|||
romBytes.Add(r.ReadByte());
|
||||
}
|
||||
string rom = System.Text.Encoding.UTF8.GetString(romBytes.ToArray());
|
||||
m.SetHeaderLine(MovieHeader.GAMENAME, rom);
|
||||
m.Header.SetHeaderLine(MovieHeader.GAMENAME, rom);
|
||||
|
||||
r.ReadByte(); //Advance past null byte
|
||||
|
||||
|
@ -75,7 +74,7 @@ namespace BizHawk.MultiClient
|
|||
authorBytes.Add(r.ReadByte());
|
||||
}
|
||||
string author = System.Text.Encoding.UTF8.GetString(authorBytes.ToArray());
|
||||
m.SetHeaderLine(MovieHeader.AUTHOR, author);
|
||||
m.Header.SetHeaderLine(MovieHeader.AUTHOR, author);
|
||||
|
||||
r.ReadByte(); //Advance past null byte
|
||||
|
||||
|
@ -87,8 +86,8 @@ namespace BizHawk.MultiClient
|
|||
if ((int)(flags[0] & 4) > 0)
|
||||
pal = true;
|
||||
|
||||
m.SetHeaderLine("SyncHack", movieSyncHackOn.ToString());
|
||||
m.SetHeaderLine("PAL", pal.ToString());
|
||||
m.Header.SetHeaderLine("SyncHack", movieSyncHackOn.ToString());
|
||||
m.Header.SetHeaderLine("PAL", pal.ToString());
|
||||
|
||||
//Power on vs reset
|
||||
if ((int)(flags[0] & 8) > 0)
|
||||
|
@ -152,12 +151,11 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
|
||||
UInt32 version = r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.MOVIEVERSION, "Dega version " + version.ToString());
|
||||
m.Header.SetHeaderLine(MovieHeader.MOVIEVERSION, "Dega version " + version.ToString());
|
||||
|
||||
UInt32 framecount = r.ReadUInt32();
|
||||
|
||||
m.rerecordCount = (int)r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.RERECORDS, m.rerecordCount.ToString());
|
||||
m.SetRerecords((int)r.ReadUInt32());
|
||||
|
||||
UInt32 IsFromReset = r.ReadUInt32();
|
||||
if (IsFromReset == 0)
|
||||
|
@ -176,7 +174,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
string author = System.Text.Encoding.UTF8.GetString(authorBytes);
|
||||
//TODO: remove null characters
|
||||
m.SetHeaderLine(MovieHeader.AUTHOR, author);
|
||||
m.Header.SetHeaderLine(MovieHeader.AUTHOR, author);
|
||||
|
||||
//4-byte little endian flags
|
||||
byte flags = r.ReadByte();
|
||||
|
@ -186,25 +184,25 @@ namespace BizHawk.MultiClient
|
|||
pal = true;
|
||||
else
|
||||
pal = false;
|
||||
m.SetHeaderLine("PAL", pal.ToString());
|
||||
m.Header.SetHeaderLine("PAL", pal.ToString());
|
||||
|
||||
bool japan;
|
||||
if ((int)(flags & 4) > 0)
|
||||
japan = true;
|
||||
else
|
||||
japan = false;
|
||||
m.SetHeaderLine("Japan", japan.ToString());
|
||||
m.Header.SetHeaderLine("Japan", japan.ToString());
|
||||
|
||||
bool gamegear;
|
||||
if ((int)(flags & 8) > 0)
|
||||
{
|
||||
gamegear = true;
|
||||
m.SetHeaderLine(MovieHeader.PLATFORM, "GG");
|
||||
m.Header.SetHeaderLine(MovieHeader.PLATFORM, "GG");
|
||||
}
|
||||
else
|
||||
{
|
||||
gamegear = false;
|
||||
m.SetHeaderLine(MovieHeader.PLATFORM, "SMS");
|
||||
m.Header.SetHeaderLine(MovieHeader.PLATFORM, "SMS");
|
||||
}
|
||||
|
||||
r.ReadBytes(3); //Unused flags
|
||||
|
@ -214,14 +212,14 @@ namespace BizHawk.MultiClient
|
|||
romnameBytes[x] = r.ReadByte();
|
||||
string romname = System.Text.Encoding.UTF8.GetString(romnameBytes.ToArray());
|
||||
//TODO: remove null characters
|
||||
m.SetHeaderLine(MovieHeader.GAMENAME, romname);
|
||||
m.Header.SetHeaderLine(MovieHeader.GAMENAME, romname);
|
||||
|
||||
byte[] MD5Bytes = new byte[16];
|
||||
for (int x = 0; x < 16; x++)
|
||||
MD5Bytes[x] = r.ReadByte();
|
||||
string MD5 = System.Text.Encoding.UTF8.GetString(MD5Bytes.ToArray());
|
||||
//TODO: format correctly
|
||||
m.SetHeaderLine("MD5", MD5);
|
||||
m.Header.SetHeaderLine("MD5", MD5);
|
||||
|
||||
|
||||
for (int x = 0; x < (framecount); x++)
|
||||
|
@ -322,9 +320,8 @@ namespace BizHawk.MultiClient
|
|||
Movie m = new Movie(Path.ChangeExtension(path, ".tas"), MOVIEMODE.PLAY);
|
||||
|
||||
UInt32 GUID = r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.GUID, GUID.ToString()); //TODO: format to hex string
|
||||
m.rerecordCount = (int)r.ReadUInt32();
|
||||
m.SetHeaderLine(MovieHeader.RERECORDS, m.rerecordCount.ToString());
|
||||
m.Header.SetHeaderLine(MovieHeader.GUID, GUID.ToString()); //TODO: format to hex string
|
||||
m.SetRerecords((int)r.ReadUInt32());
|
||||
|
||||
UInt32 framecount = r.ReadUInt32();
|
||||
byte ControllerFlags = r.ReadByte();
|
||||
|
@ -349,7 +346,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
if ((int)(MovieFlags & 2) > 0)
|
||||
{
|
||||
m.SetHeaderLine("PAL", "True");
|
||||
m.Header.SetHeaderLine("PAL", "True");
|
||||
}
|
||||
|
||||
byte SyncOptions = r.ReadByte();
|
||||
|
@ -405,15 +402,13 @@ namespace BizHawk.MultiClient
|
|||
|
||||
UInt32 versionno = r.ReadUInt32(); //always 1
|
||||
UInt32 uid = r.ReadUInt32(); //time of recording
|
||||
m.SetHeaderLine(MovieHeader.GUID, uid.ToString());
|
||||
m.Header.SetHeaderLine(MovieHeader.GUID, uid.ToString());
|
||||
UInt32 framecount = r.ReadUInt32();
|
||||
m.Frames = (int)framecount;
|
||||
|
||||
|
||||
//0x10
|
||||
UInt32 rerecordcount = r.ReadUInt32();
|
||||
m.rerecordCount = (int)rerecordcount;
|
||||
m.SetHeaderLine(MovieHeader.RERECORDS, m.rerecordCount.ToString());
|
||||
m.SetRerecords((int)rerecordcount);
|
||||
m.Header.SetHeaderLine(MovieHeader.RERECORDS, m.Rerecords.ToString());
|
||||
Byte moviestartflags = r.ReadByte();
|
||||
|
||||
|
||||
|
@ -493,20 +488,20 @@ namespace BizHawk.MultiClient
|
|||
|
||||
char[] internalgamename = r.ReadChars(0x0C);
|
||||
string gamename = new String(internalgamename);
|
||||
m.SetHeaderLine(MovieHeader.GAMENAME, gamename);
|
||||
m.Header.SetHeaderLine(MovieHeader.GAMENAME, gamename);
|
||||
|
||||
//0x30
|
||||
Byte minorversion = r.ReadByte();
|
||||
Byte internalcrc = r.ReadByte();
|
||||
UInt16 internalchacksum = r.ReadUInt16();
|
||||
UInt32 unitcode = r.ReadUInt32();
|
||||
UInt32 saveoffset = r.ReadUInt32(); //set to 0 if unused
|
||||
UInt32 saveoffset = r.ReadUInt32(); //set to 0 if unused
|
||||
UInt32 controllerdataoffset = r.ReadUInt32();
|
||||
|
||||
//0x40 start info.
|
||||
char[] authorsname = r.ReadChars(0x40); //vbm specification states these strings
|
||||
string author = new String(authorsname); //are locale dependant.
|
||||
m.SetHeaderLine(MovieHeader.AUTHOR, author);
|
||||
char[] authorsname = r.ReadChars(0x40); //vbm specification states these strings
|
||||
string author = new String(authorsname); //are locale dependant.
|
||||
m.Header.SetHeaderLine(MovieHeader.AUTHOR, author);
|
||||
|
||||
//0x80
|
||||
char[] moviedescription = r.ReadChars(0x80);
|
||||
|
|
|
@ -6,14 +6,14 @@ using System.IO;
|
|||
|
||||
namespace BizHawk.MultiClient
|
||||
{
|
||||
class MovieHeader
|
||||
public class MovieHeader
|
||||
{
|
||||
//Required Header Params
|
||||
//Emulation - Core version, will be 1.0.0 until there is a versioning system
|
||||
//Movie - Versioning for the Movie code itself, or perhaps this could be changed client version?
|
||||
//Platform - Must know what platform we are making a movie on!
|
||||
//GameName - Which game
|
||||
//TODO: GUID, checksum of game, other stuff
|
||||
//TODO: checksum of game, other stuff
|
||||
|
||||
public Dictionary<string, string> HeaderParams = new Dictionary<string, string>(); //Platform specific options go here
|
||||
public List<string> Comments = new List<string>();
|
||||
|
@ -107,5 +107,76 @@ namespace BizHawk.MultiClient
|
|||
sw.WriteLine(Comments[x]);
|
||||
}
|
||||
}
|
||||
|
||||
private string ParseHeader(string line, string headerName)
|
||||
{
|
||||
string str;
|
||||
int x = line.LastIndexOf(headerName) + headerName.Length;
|
||||
str = line.Substring(x + 1, line.Length - x - 1);
|
||||
return str;
|
||||
}
|
||||
|
||||
//TODO: replace Movie Preload & Load functions with this
|
||||
/// <summary>
|
||||
/// Receives a line and attempts to add as a header, returns false if not a useable header line
|
||||
/// </summary>
|
||||
/// <param name="line"></param>
|
||||
/// <returns></returns>
|
||||
public bool AddHeaderFromLine(string line)
|
||||
{
|
||||
if (line.Length == 0) return false;
|
||||
else if (line.Contains(MovieHeader.EMULATIONVERSION))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.EMULATIONVERSION);
|
||||
AddHeaderLine(MovieHeader.EMULATIONVERSION, line);
|
||||
}
|
||||
else if (line.Contains(MovieHeader.MOVIEVERSION))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.MOVIEVERSION);
|
||||
AddHeaderLine(MovieHeader.MOVIEVERSION, line);
|
||||
}
|
||||
else if (line.Contains(MovieHeader.PLATFORM))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.PLATFORM);
|
||||
AddHeaderLine(MovieHeader.PLATFORM, line);
|
||||
}
|
||||
else if (line.Contains(MovieHeader.GAMENAME))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.GAMENAME);
|
||||
AddHeaderLine(MovieHeader.GAMENAME, line);
|
||||
}
|
||||
else if (line.Contains(MovieHeader.RERECORDS))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.RERECORDS);
|
||||
AddHeaderLine(MovieHeader.RERECORDS, line);
|
||||
}
|
||||
else if (line.Contains(MovieHeader.AUTHOR))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.AUTHOR);
|
||||
AddHeaderLine(MovieHeader.AUTHOR, line);
|
||||
}
|
||||
else if (line.ToUpper().Contains(MovieHeader.GUID))
|
||||
{
|
||||
line = ParseHeader(line, MovieHeader.GUID);
|
||||
AddHeaderLine(MovieHeader.GUID, line);
|
||||
}
|
||||
else if (line.StartsWith("subtitle") || line.StartsWith("sub"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (line.StartsWith("comment"))
|
||||
{
|
||||
Comments.Add(line.Substring(8, line.Length - 8));
|
||||
}
|
||||
else if (line[0] == '|')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
Comments.Add(line);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue