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 { } } }
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(); }