public ArrayList LoadFileByCharSet(string FileName, string CharSet) { try { Clear(); StreamReader sr = new StreamReader(FileName, System.Text.Encoding.GetEncoding(CharSet)); int lastNumber = 0; int currentDeck = 0; ArrayList lastList = new ArrayList(); while (!sr.EndOfStream) { string s = sr.ReadLine().Trim(); if (s.StartsWith("====")) { currentDeck = 1; continue; } else if (s.StartsWith("####")) { currentDeck = 2; continue; } else if (s.StartsWith("$$$$")) { currentDeck = 3; continue; } else if (s.Length == 0) { continue; } CardDescription card = null; string lastname = null; if (s[0] == '[') { string name = s.Substring(s.LastIndexOf('[') + 1, s.LastIndexOf(']') - s.LastIndexOf('[') - 1); lastname = name; card = CardLibrary.GetInstance().GetCardByName(name); if (card == null) { card = CardLibrary.GetInstance().GetCardByOldName(name); } } else { string japname = CharacterSet.JPSBCToDBC(s); lastname = japname; card = CardLibrary.GetInstance().GetCardByJapName(japname); } if (card != null) { string err = null; switch (currentDeck) { case 0: if (card.iCardtype == 2 || card.iCardtype == 6) { err = FusionDeck.AddCard(card.ID); } else { err = MainDeck.AddCard(card.ID); } break; case 1: err = FusionDeck.AddCard(card.ID); break; case 2: err = SideDeck.AddCard(card.ID); break; case 3: err = TempDeck.AddCard(card.ID); break; } if (err != null) { lastNumber++; lastList.Add(card.name); } } else { lastNumber++; lastList.Add(lastname); } } sr.Close(); DeckName = Regex.Replace(FileName, @".[^.]*$", ""); DeckName = Regex.Replace(DeckName, @"^.*\\", ""); MainDeck.isChanged = false; SideDeck.isChanged = false; FusionDeck.isChanged = false; TempDeck.isChanged = false; return(lastList); } catch { Clear(); return(null); } }