Exemplo n.º 1
0
        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);
            }
        }