Example #1
0
        private void ShowFileTree()
        {
            fm    = Fabric.GetFileManager();
            files = fm.GetFiles(current);

            tree = new List <string>();
            FillTreeList(files.FileList);

            string show = "";

            for (int i = 0; i < tree.Count; i++)
            {
                show += tree[i] + "\n";
            }

            richTextBox1.Text = show;
            // это мы отобразили список файлов и директорий.
            // отобразим теперь для них группы пользователей в соседнее окошечко

            string[] showlines = show.Split(new[] { '\n' });

            string shourights = "";

            for (int i = 0; i < tree.Count; i++)
            {
                // пройдем по всем строчкам, возьмем имена файлов - к ним найдем права и отобразим.
                rightss = null;
                GetRights(showlines[i], files.FileList);
                string[] rights = rightss;

                if (rights == null)
                {
                    shourights += "\n";
                }
                else
                {
                    string tmp = ""; for (int a = 0; a < rights.Length; a++)
                    {
                        tmp += " " + rights[a];
                    }
                    shourights += tmp + "\n";
                }
            }

            richTextBox2.Text = shourights;
        }
Example #2
0
        private void ShowFileList()
        {
            fm    = Fabric.GetFileManager();
            files = fm.GetFiles(current);

            tree = new List <string>();
            FillTreeList(files.FileList);

            string show = "";

            for (int i = 0; i < tree.Count; i++)
            {
                if (tree[i].Contains(".txt"))
                {
                    show += tree[i] + "\n";
                }
            }

            System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(show));
            richTextBox1.Selection.Load(stream, DataFormats.Text);
        }
Example #3
0
        private int frames; // на сколько кадров вперед идет расчет

        // компонента отвечающая за расчет погоды
        public List <WeatherCadr> GetWeatherFromBegin(IUserID user, string map, string weather)
        {
            frames = 50; // порция кадров

            // дай мне графику(набор кадров вперед) для этой карты для этой погоды в это время
            // считается что можно указывать файлик погоды. типа например есть карта россии
            // для нее есть погода в январе, в феврале .... и соответственно файлики называются. загружаем и смотрим

            List <Graphics> workFrames = new List <Graphics>();

            // этот буффер и отдадим

            // загрузим данные
            FileManagement.FileManager fm = Fabric.GetFileManager();


            string[] mapBuffer     = fm.GetThisFile(user, map);     // буффер карты
            string[] weatherBuffer = fm.GetThisFile(user, weather); // буффер погоды
            //
            // прочитаем заполним структуры в  WeatherCalculator
            WeatherCalculator wcalc = new WeatherCalculator();

            wcalc.setTime = 0;

            // прочитаем карту сначала

            string[] lines = mapBuffer[0].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);
            wcalc.SetRect(Convert.ToDouble(lines[0]), Convert.ToDouble(lines[1]));
            // установили размеры карты


            for (int i = 1; i < mapBuffer.Length; i++)
            {
                string[] lines1 = mapBuffer[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                double X     = Convert.ToDouble(lines1[0]);
                double Y     = Convert.ToDouble(lines1[1]);
                double R     = Convert.ToDouble(lines1[2]);
                double VALUE = Convert.ToDouble(lines1[3]);
                double COND  = Convert.ToDouble(lines1[4]);

                Land tmp = new Land(X, Y, R, VALUE, COND);

                wcalc.AddLand(tmp);
            }

            // теперь прочитаем файл погоды.
            // добавим циклоны
            int pos = 0;

            for (int i = 1; i < weatherBuffer.Length; i++)
            {
                string[] lines1 = weatherBuffer[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                if (lines1.Length != 0) // это условие отбросит строчки после пустой(траектории там для циклонов, если это погода)
                {
                    double X     = Convert.ToDouble(lines1[0]);
                    double Y     = Convert.ToDouble(lines1[1]);
                    double R     = Convert.ToDouble(lines1[2]);
                    double VALUE = Convert.ToDouble(lines1[3]);
                    double COND  = Convert.ToDouble(lines1[4]);

                    Cyclone tmp = new Cyclone(X, Y, R, VALUE, COND);

                    wcalc.AddWeather(tmp);
                }
                else
                {
                    pos = i; break;
                }
            }
            // к циклонам добавим траектории пути

            if (pos != 0)
            {
                pos++;

                for (int i = 0; i < weatherBuffer.Length - pos; i++)
                {
                    if (weatherBuffer[i + pos].Length != 0)
                    {
                        List <double[]> add = new List <double[]>();

                        string[] tmp = weatherBuffer[i + pos].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                        for (int t = 0; t < tmp.Length; t += 2)
                        {
                            add.Add(new double[2] {
                                Convert.ToDouble(tmp[t]), Convert.ToDouble(tmp[t + 1])
                            });
                        }
                        wcalc.AddWeatherPath(i, add);
                    }
                }
            }

            // все структуры заполнены


            List <WeatherCadr> answer = new List <WeatherCadr>();

            for (int i = 0; i < frames; i++)
            {
                answer.Add(wcalc.CalculateTact());// рассчитали такт еще один и положили в ролик
            }

            return(answer);

            //  return workFrames;
        }
Example #4
0
        public List <WeatherCadr> GetWeatherFromCadr(WeatherCadr cadr, int time, IUserID user, string weather)
        {
            frames = 10; // порция кадров

            // нам нужно в память загрузить кадо

            WeatherCalculator wcalc = new WeatherCalculator();

            wcalc.setTime = time;
            // добавим землю
            for (int i = 0; i < cadr.Land.Count; i++)
            {
                Land t   = (Land)cadr.Land[i];
                Land tmp = new Land(t.X, t.Y, t.R, t.V, t.C);
                wcalc.AddLand(tmp);
            }
            // добавим циклоны
            for (int i = 0; i < cadr.Weather.Count; i++)
            {
                Cyclone t   = (Cyclone)cadr.Weather[i];
                Cyclone tmp = new Cyclone(t.X, t.Y, t.R, t.V, t.C);
                wcalc.AddWeather(tmp);
            }



            // добавим траектории циклонов
            FileManagement.FileManager fm = Fabric.GetFileManager();
            string[] weatherBuffer        = fm.GetThisFile(user, weather);// буффер погоды

            string[] lines = weatherBuffer[0].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);
            wcalc.SetRect(Convert.ToDouble(lines[0]), Convert.ToDouble(lines[1]));


            int pos = 0;

            for (int i = 1; i < weatherBuffer.Length; i++)
            {
                string[] lines1 = weatherBuffer[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                if (lines1.Length == 0) // это условие отбросит строчки после пустой(траектории там для циклонов, если это погода)
                {
                    pos = i; break;
                }
            }

            if (pos != 0)
            {
                pos++;

                for (int i = 0; i < weatherBuffer.Length - pos; i++)
                {
                    if (weatherBuffer[i + pos].Length != 0)
                    {
                        List <double[]> add = new List <double[]>();

                        string[] tmp = weatherBuffer[i + pos].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                        for (int t = 0; t < tmp.Length; t += 2)
                        {
                            add.Add(new double[2] {
                                Convert.ToDouble(tmp[t]), Convert.ToDouble(tmp[t + 1])
                            });
                        }
                        wcalc.AddWeatherPath(i, add);
                    }
                }
            }

            // все заполнили


            List <WeatherCadr> answer = new List <WeatherCadr>();

            for (int i = 0; i < frames; i++)
            {
                answer.Add(wcalc.CalculateTact());// рассчитали такт еще один и положили в ролик
            }

            return(answer);
        }