コード例 #1
0
        void ReadMultiLineContent(MultiLineContentType contentType)
        {
            string dirName    = "";
            bool   hasSpliter = false;
            string fileName   = "*.txt";

            switch (contentType)
            {
            case MultiLineContentType.Stishki:
                dirName = "Стишки";
                break;

            case MultiLineContentType.Songs:
                dirName = "Песенки";
                break;

            case MultiLineContentType.Rasskazy:
                dirName = "Рассказы";
                break;

            case MultiLineContentType.Skorogovorki:
                hasSpliter = true;
                fileName   = "Скороговорки.txt";
                break;

            case MultiLineContentType.Schitalki:
                hasSpliter = true;
                fileName   = "Считалки.txt";
                break;
            }

            ReadMultiLineTypedContent(fileName, dirName, hasSpliter, contentType);
        }
コード例 #2
0
        void ReadMultiLineTypedContent(string fileName, string dirName, bool isHasSplitter, MultiLineContentType contentType)
        {
            List <MultiLineObject> mobList = new List <MultiLineObject>();
            string catFolder = Lib.LibFolderName + "\\" + name + "\\" + dirName;

            if (!isHasSplitter)
            {
                if (Directory.Exists(catFolder))
                {
                    string[] fl = Directory.GetFiles(catFolder, fileName);
                    if (fl != null && fl.Length > 0)
                    {
                        Hashtable ht = new Hashtable();
                        for (int i = 0; i < fl.Length; i++)
                        {
                            List <string> contentList = new List <string>();
                            string        flName      = fl[i];
                            if (File.Exists(flName))
                            {
                                ht.Add(flName, null);
                                FileStream   fs = File.Open(flName, FileMode.Open);
                                StreamReader sr = new StreamReader(fs, Encoding.GetEncoding(1251));

                                while (!sr.EndOfStream)
                                {
                                    string ln = sr.ReadLine();
                                    contentList.Add(ln);
                                }

                                ht[flName] = contentList;

                                sr.Close();
                                fs.Close();
                            }
                        }

                        foreach (string key in ht.Keys)
                        {
                            List <string>   contentList = (List <string>)ht[key];
                            MultiLineObject mob         = new MultiLineObject(key, contentList, this);
                            mobList.Add(mob);
                        }
                    }
                }
            }
            else
            {
                if (Directory.Exists(catFolder))
                {
                    string[] fl = Directory.GetFiles(catFolder, fileName);
                    if (fl != null && fl.Length > 0)
                    {
                        Hashtable ht = new Hashtable();
                        for (int i = 0; i < fl.Length; i++)
                        {
                            List <string> contentList = new List <string>();
                            string        flName      = fl[i];
                            if (File.Exists(flName))
                            {
                                ht.Add(flName, null);
                                FileStream   fs = File.Open(flName, FileMode.Open);
                                StreamReader sr = new StreamReader(fs, Encoding.GetEncoding(1251));

                                while (!sr.EndOfStream)
                                {
                                    string ln = sr.ReadLine();
                                    if (!String.IsNullOrEmpty(ln) && ln == "@")
                                    {
                                        MultiLineObject mob = new MultiLineObject(flName, contentList, this);
                                        mobList.Add(mob);
                                        contentList = new List <string>();
                                    }
                                    else
                                    {
                                        contentList.Add(ln);
                                    }
                                }

                                ht[flName] = contentList;

                                sr.Close();
                                fs.Close();
                            }
                        }

                        foreach (string key in ht.Keys)
                        {
                            List <string>   contentList = (List <string>)ht[key];
                            MultiLineObject mob         = new MultiLineObject(key, contentList, this);
                            mobList.Add(mob);
                        }
                    }
                }
            }

            switch (contentType)
            {
            case MultiLineContentType.Schitalki:
                if (!Settings.MixElementsEnabled)
                {
                    schitalki = mobList;
                }
                else
                {
                    //надо перемешать считалки
                    schitalki = Category.FillRandomMobList(mobList);
                }
                break;

            case MultiLineContentType.Skorogovorki:
                if (!Settings.MixElementsEnabled)
                {
                    skorogovorki = mobList;
                }
                else
                {
                    //надо перемешать скороговорки
                    skorogovorki = Category.FillRandomMobList(mobList);
                }
                break;

            case MultiLineContentType.Stishki:
                stishki = mobList;
                break;

            case MultiLineContentType.Songs:
                songs = mobList;
                break;

            case MultiLineContentType.Rasskazy:
                rasskazy = mobList;
                break;
            }
        }