示例#1
0
        private void exportDeckButton_Click(object sender, EventArgs e)
        {
            MemTools.YdcDeck deck = GetSelectedDeck();
            if (deck.Equals(default(MemTools.YdcDeck)))
            {
                return;
            }

            try
            {
                if (!Directory.Exists(deckFilesDir))
                {
                    Directory.CreateDirectory(deckFilesDir);
                }
            }
            catch
            {
            }

            if (Directory.Exists(deckFilesDir))
            {
                string filename = MakeSafeFileName(deck.DeckName).Trim();
                if (string.IsNullOrEmpty(filename))
                {
                    return;
                }
                filename += deckFilesExtension;
                string path = Path.Combine(deckFilesDir, filename);
                try
                {
                    DialogResult result = MessageBox.Show("Would you like to export this as YDK (instead of YDL)?", "Export", MessageBoxButtons.YesNoCancel);
                    if (result == DialogResult.Yes)
                    {
                        YdkHelper.SaveDeck(deck, Path.ChangeExtension(path, YdkHelper.FileExtension));
                    }
                    else if (result == DialogResult.No)
                    {
                        File.WriteAllBytes(path, MemTools.StructToByteArray(deck));
                    }
                }
                catch
                {
                }
            }
        }
示例#2
0
        private void ReloadDecks()
        {
            if (!Program.MemTools.IsFullyLoaded)
            {
                return;
            }

            MemTools.YdcDeck[] yDecks = Program.MemTools.ReadYdcDecks();
            if (yDecks != null)
            {
                ydcDecks.Clear();

                // The last 4 decks are reserved for custom duels
                for (int i = 0; i < yDecks.Length - 4; i++)
                {
                    ydcDecks.Add(yDecks[i]);
                }
            }

            MemTools.YdcDeck[] uDecks = Program.MemTools.ReadUserDecks();
            if (uDecks != null)
            {
                userDecks.Clear();
                userDecks.AddRange(uDecks);
            }

            if (Directory.Exists(deckFilesDir))
            {
                fileDecks.Clear();
                foreach (string file in Directory.GetFiles(deckFilesDir, "*" + deckFilesExtension))
                {
                    try
                    {
                        byte[] buffer = File.ReadAllBytes(file);
                        if (buffer.Length != System.Runtime.InteropServices.Marshal.SizeOf(typeof(MemTools.YdcDeck)))
                        {
                            continue;
                        }

                        MemTools.YdcDeck deck = MemTools.StructFromByteArray <MemTools.YdcDeck>(buffer);
                        if (deck.IsValid)
                        {
                            fileDecks.Add(deck);
                        }
                    }
                    catch
                    {
                    }
                }
                foreach (string file in Directory.GetFiles(deckFilesDir, "*" + YdkHelper.FileExtension))
                {
                    try
                    {
                        MemTools.YdcDeck deck = YdkHelper.LoadDeck(file);
                        if (deck.IsValid)
                        {
                            fileDecks.Add(deck);
                        }
                    }
                    catch
                    {
                    }
                }
            }

            UpdateDecksList();
        }