Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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");
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public static DataArray Create(Stream stream)
 {
     try {
         return(new DataArray(DTB.Create(new EndianReader(stream, Endianness.LittleEndian))));
     } catch (FormatException) {
         return(null);
     }
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 public override string ToString()
 {
     return(MSSV + ", " + Ten + ", " + DTB.ToString() + ", " + GioiTinh.ToString() + "\n");
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }