public void LoadConfig(string filename) { if (File.Exists(filename)) { Clear(); StreamReader sr = new StreamReader(filename); string result = sr.ReadToEnd(); sr.Close(); string kq = RC2.DecryptString(result, Form_QD._key, Form_QD._iv, Form_QD._padMode, Form_QD._opMode); StringReader stringReader = new StringReader(kq); ReadXml(stringReader); stringReader.Close(); } if (DTB.Rows.Count == 0) { DTB.AddDTBRow("", ""); } if (DIR.Rows.Count == 0) { DIR.AddDIRRow("", ""); } if (SYS.Rows.Count == 0) { SYS.AddSYSRow("", "", "", false); } }
public static void Load(MainForm form) { Form = form; Stream stream = GetConfigurationStream(FileMode.Open, FileAccess.Read, FileShare.Read); if (stream == null) { return; } try { DTB.NodeTree tree = DTB.Create(new EndianReader(stream, Endianness.LittleEndian)); stream.Close(); DataArray data = new DataArray(tree); MaxConcurrentTasks = data.GetValue <int>("MaxConcurrentTasks"); LocalTranscode = data.GetValue <bool>("LocalTranscode"); MemorySongData = data.GetValue <bool>("MemorySongData"); DefaultAction = (DefaultActionType)data.GetValue <int>("DefaultAction"); DefaultThreadPriority = (ThreadPriority)data.GetValue <int>("DefaultThreadPriority"); NamePrefix = (ImportMap.NamePrefix)data.GetValue <int>("NamePrefix"); LocalPath = data.GetValue <string>("LocalPath"); IterateBins = data.GetValue <bool>("IterateBins"); TemporaryPath = data.GetValue <string>("TemporaryPath"); InstallTitle = data.GetValue <string>("InstallTitle"); ExpertPlusGH5 = data.GetValue <bool>("ExpertPlusGH5"); } catch (Exception exception) { Exceptions.Warning(exception, "Error reading configuration data"); } }
private static IList <SongsDTA> GetInstalledCustoms(string path, string sdpath) { if (!Directory.Exists(path)) { return(new List <SongsDTA>()); } List <SongsDTA> list = new List <SongsDTA>(); string[] dirs = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); foreach (string file in dirs) { if (File.Exists(Path.Combine(file, "data"))) { FileStream fstream = null; try { fstream = new FileStream(Path.Combine(file, "data"), FileMode.Open); list.Add(SongsDTA.Create(DTB.Create(new EndianReader(fstream, Endianness.LittleEndian)))); } catch { } if (fstream != null) { fstream.Close(); } } } return(list); }
public static DataArray Create(Stream stream) { try { return(new DataArray(DTB.Create(new EndianReader(stream, Endianness.LittleEndian)))); } catch (FormatException) { return(null); } }
public SongData(SongData song) : this() { Stream stream = new MemoryStream(); song.Data.Save(stream); stream.Position = 0; Data.Options = DTB.Create(new EndianReader(stream, Endianness.LittleEndian)); }
public override PlatformData Create(string path, Game game, ProgressIndicator progress) { PlatformData data = new PlatformData(this, game); DirectoryNode dir = data.GetDirectoryStructure(path); List <DirectoryNode> dirs = new List <DirectoryNode>(); dirs.Add(dir); dirs.AddRange(dir.Directories); progress.NewTask(dirs.Count); foreach (DirectoryNode songdir in dirs) { data.Session["songdir"] = songdir; FileNode datafile = songdir.Navigate("data", false, true) as FileNode; FileNode newdatafile = songdir.Navigate("songdata", false, true) as FileNode; if (datafile == null && newdatafile == null) { Exceptions.Warning("Unable to find a custom in " + songdir.Filename); continue; } try { SongData song = null; if (datafile != null) { song = HarmonixMetadata.GetSongData(data, DTB.Create(new EndianReader(datafile.Data, Endianness.LittleEndian))); datafile.Data.Close(); AddSongOld(data, song, progress); } else { song = SongData.Create(newdatafile.Data); newdatafile.Data.Close(); AddSongNew(data, song, progress); } } catch (Exception exception) { Exceptions.Error(exception, "Unable to open the custom from " + songdir.Filename); } progress.Progress(); } progress.EndTask(); return(data); }
private void button1_Click(object sender, EventArgs e) { double toan = Convert.ToDouble(txtToan.Text); double van = Convert.ToDouble(txtNV.Text); double av = Convert.ToDouble(txtNN.Text); double DTN; DTN = toan; if (van < DTN) { DTN = van; } else if (av < DTN) { DTN = av; } this.txtDTN.Text = DTN.ToString(); double DTB; DTB = van * 2 + toan * 2 + av; if (this.chkMale.Checked == true) { DTB += 0.5; } this.txtDKQ.Text = DTB.ToString(); String rank = ""; if ((DTB > 40) && (DTN >= 7)) { rank += "Gioi"; } else if ((DTB > 40) && (DTN >= 7)) { rank += "Kha"; } else if ((DTB > 40) && (DTN >= 7)) { rank += "TB"; } else { rank += "Yeu"; } this.txtXL.Text = rank; }
public override void DeleteSong(PlatformData data, FormatData formatdata, ProgressIndicator progress) { string path = data.Session["maindirpath"] as string; string dtapath = "rawk/rb2/customs/" + formatdata.Song.ID; FileStream dtafile = new FileStream(Path.Combine(path, dtapath + "/data"), FileMode.Open, FileAccess.Read, FileShare.Read); EndianReader reader = new EndianReader(dtafile, Endianness.LittleEndian); DTB.NodeTree dtb = DTB.Create(reader); dtafile.Close(); SongsDTA dta = SongsDTA.Create(dtb); string title = dta.Song.Name.Substring(4, 4); int index = int.Parse(dta.Song.Name.Substring(9, 3)); Util.Delete(Path.Combine(path, "private/wii/data/" + title + "/" + Util.Pad((index).ToString(), 3) + ".bin")); Util.Delete(Path.Combine(path, "private/wii/data/" + title + "/" + Util.Pad((index + 1).ToString(), 3) + ".bin")); Directory.Delete(Path.Combine(path, dtapath), true); base.DeleteSong(data, formatdata, progress); SaveDTBCache(data); }
public override PlatformData Create(string path, Game game, ProgressIndicator progress) { if (File.Exists(path)) { if (String.Compare(Path.GetExtension(path), ".ark", true) == 0 || String.Compare(Path.GetExtension(path), ".hdr", true) == 0) { path = Path.GetDirectoryName(path); } } PlatformData data = new PlatformData(this, game); data.Game = Platform.DetermineGame(data); Ark ark = data.GetHarmonixArk(path); DirectoryNode songdir = ark.Root.Find("songs", true) as DirectoryNode; if (songdir == null) { Exceptions.Error("This is not a Guitar Hero PS2 disc; the songs dir is missing from the ark."); } FileNode songsdtbfile = ark.Root.Navigate("config/gen/songs.dtb", false, true) as FileNode; if (songsdtbfile == null) { Exceptions.Error("Couldn't find songs.dtb; this is not a Guitar Hero PS2 disc."); } data.Session["songdir"] = songdir; try { List <SongsDTA> dtas = new List <SongsDTA>(); Stream dtbstream = new MemoryStream((int)songsdtbfile.Size); CryptedDtbStream.DecryptOld(dtbstream, new EndianReader(songsdtbfile.Data, Endianness.LittleEndian), (int)songsdtbfile.Size); dtbstream.Position = 0; DTB.NodeTree dtb = DTB.Create(new EndianReader(dtbstream, Endianness.LittleEndian)); progress.NewTask(dtb.Nodes.Count); foreach (DTB.Node node in dtb.Nodes) { DTB.NodeTree tree = node as DTB.NodeTree; if (tree == null || tree.Nodes[0].Type != 0x00000005 || songdir.Find((tree.Nodes[0] as DTB.NodeString).Text) == null) { progress.Progress(); continue; } SongsDTA dta = SongsDTA.Create(tree); if (dtas.FirstOrDefault(d => d.BaseName == dta.BaseName) != null) { progress.Progress(); continue; // Don't import songs twice } dtas.Add(dta); SongData song = HarmonixMetadata.GetSongData(data, tree); try { AddSong(data, song, progress); } catch (Exception exception) { Exceptions.Warning(exception, "Unable to properly parse " + song.Name); } progress.Progress(); } progress.EndTask(); } catch (Exception exception) { Exceptions.Error(exception, "An error occurred while parsing the Guitar Hero PS2 disc."); } return(data); }
public override string ToString() { return(MSSV + ", " + Ten + ", " + DTB.ToString() + ", " + GioiTinh.ToString() + "\n"); }
public override PlatformData Create(string path, Game game, ProgressIndicator progress) { PlatformData data = new PlatformData(this, game); Ark ark = data.GetHarmonixArk(path); data.Game = Platform.DetermineGame(data); if (data.Game == Game.RockBand2 || data.Game == Game.RockBandBeatles) { Exceptions.Error("Unable to parse song list from Rock Band Wii disc."); } data.Session["songdir"] = ark.Root; string[] songdirs = new string[] { "songs", "songs_regional/na", "songs_regional/eu" }; progress.NewTask(songdirs.Length); foreach (string songdirname in songdirs) { DirectoryNode songdir = ark.Root.Navigate(songdirname) as DirectoryNode; if (songdir == null) { continue; } FileNode songsdtbfile = songdir.Navigate("gen/songs.dtb") as FileNode; if (songsdtbfile == null) { continue; } try { List <SongsDTA> dtas = new List <SongsDTA>(); DTB.NodeTree dtb = DTB.Create(new EndianReader(new CryptedDtbStream(new EndianReader(songsdtbfile.Data, Endianness.LittleEndian)), Endianness.LittleEndian)); progress.NewTask(dtb.Nodes.Count); foreach (DTB.Node node in dtb.Nodes) { DTB.NodeTree tree = node as DTB.NodeTree; if (tree == null || tree.Nodes[0].Type != 0x00000005 || songdir.Find((tree.Nodes[0] as DTB.NodeString).Text) == null) { progress.Progress(); continue; } SongsDTA dta = SongsDTA.Create(tree); if (dtas.Find(d => d.BaseName == dta.BaseName) != null) { progress.Progress(); continue; // Don't import songs twice } dtas.Add(dta); try { SongData song = HarmonixMetadata.GetSongData(data, tree); AddSong(data, song, progress); } catch (Exception exception) { Exceptions.Warning(exception, "Could not import " + dta.Name + " from the Rock Band Wii disc."); } progress.Progress(); } } catch (Exception exception) { Exceptions.Warning(exception, "Unable to parse song list from Rock Band Wii disc: " + songdirname); } progress.EndTask(); progress.Progress(); } progress.EndTask(); return(data); }
public override PlatformData Create(string path, Game game, ProgressIndicator progress) { progress.NewTask(10); progress.SetNextWeight(9); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } PlatformData data = new PlatformData(this, game); data.Session["maindirpath"] = path; string customdir = Path.Combine(path, "rawk/rb2/customs"); if (Directory.Exists(customdir)) { string dtapath = Path.Combine(customdir, "data"); DTB.NodeTree dtb = null; if (File.Exists(dtapath)) { Stream dtafile = new FileStream(dtapath, FileMode.Open, FileAccess.Read, FileShare.Read); try { dtb = DTB.Create(new EndianReader(dtafile, Endianness.LittleEndian)); } catch (Exception exception) { Exceptions.Warning(exception, "The rawk/rb2/customs/data cache DTB is corrupt."); } dtafile.Close(); } if (dtb != null) { progress.NewTask(dtb.Nodes.Count); foreach (DTB.NodeTree node in dtb.Nodes) { try { AddSongFromDTB(path, data, node, progress); } catch (Exception exception) { Exceptions.Warning(exception, "Could not import RawkSD custom from data cache."); } progress.Progress(); } progress.EndTask(); } else { string[] dirs = Directory.GetDirectories(customdir); progress.NewTask(dirs.Length); foreach (string folder in dirs) { try { dtapath = Path.Combine(folder, "data"); if (File.Exists(dtapath)) { dtb = null; Stream dtafile = new FileStream(dtapath, FileMode.Open, FileAccess.Read, FileShare.Read); try { dtb = DTB.Create(new EndianReader(dtafile, Endianness.LittleEndian)); } catch (Exception exception) { Exceptions.Warning(exception, "The data file for \"" + folder + "\" is corrupt."); } dtafile.Close(); if (dtb != null) { AddSongFromDTB(path, data, dtb, progress); } } } catch (Exception exception) { Exceptions.Warning(exception, "Could not import RawkSD custom from " + folder); } progress.Progress(); } progress.EndTask(); } progress.Progress(9); } RefreshUnusedContent(data); progress.Progress(); progress.EndTask(); return(data); }