Beispiel #1
0
    void OnGUI()
    {
        ScriptableObject   target          = this;
        SerializedObject   so              = new SerializedObject(target);
        SerializedProperty stringsProperty = so.FindProperty("NameFiles");

        EditorGUILayout.PropertyField(stringsProperty, true); // True means show children
        so.ApplyModifiedProperties();                         // Remember to apply modified properties

        if (GUILayout.Button("Save Name Files"))
        {
            RegisterResolver.Register();
            var nameFilesDirectory = ActionGameManager.GameDataDirectory.CreateSubdirectory("NameFile");
            foreach (var nameFile in NameFiles)
            {
                var entry = new NameFile
                {
                    Name  = nameFile.name,
                    Names = nameFile.text.Split('\n')
                };
                File.WriteAllBytes(Path.Combine(nameFilesDirectory.FullName, $"{entry.ID.ToString()}.msgpack"), MessagePackSerializer.Serialize((DatabaseEntry)entry));
            }
        }

        nameFile               = (TextAsset)EditorGUILayout.ObjectField("Name File", nameFile, typeof(TextAsset), false);
        minWordLength          = EditorGUILayout.IntField("Minimum File Word Length", minWordLength);
        NameGeneratorMinLength = EditorGUILayout.IntField("Generated Minimum Word Length", NameGeneratorMinLength);
        NameGeneratorMaxLength = EditorGUILayout.IntField("Generated Maximum Word Length", NameGeneratorMaxLength);
        NameGeneratorOrder     = EditorGUILayout.IntField("Generator Order", NameGeneratorOrder);
        _stripNumberTokens     = GUILayout.Toggle(_stripNumberTokens, "Strip Number Tokens");

        if (GUILayout.Button("Clean Name File"))
        {
            var lines = nameFile.text.Split('\n');
            using StreamWriter outputFile = new StreamWriter(Path.Combine(Application.dataPath, nameFile.name + ".csv"));
            var names = new HashSet <string>();
            foreach (var line in lines)
            {
                var tokens = line.Split(',', ' ');
                foreach (var t in tokens)
                {
                    if (!HasNonASCIIChars(t))
                    {
                        var s = new string(t.Where(c => char.IsLetter(c) || c == '-' || c == '`' || c == '\'').ToArray()).Trim().Trim('`', '-');
                        if (s.Length >= minWordLength && !names.Contains(s))
                        {
                            names.Add(s);
                            outputFile.WriteLine(s);
                        }
                    }
                }
            }
        }

        if (GUILayout.Button("Process Name File") && nameFile != null)
        {
            var names = new HashSet <string>();
            var lines = nameFile.text.Split('\n');
            foreach (var line in lines)
            {
                foreach (var word in line.ToUpperInvariant().Split(' ', ',', '.', '"'))
                {
                    if (word.Length >= minWordLength && !names.Contains(word))
                    {
                        names.Add(word);
                    }
                }
            }
            Debug.Log($"Found {lines.Length} lines, with {names.Count} unique names!");
            var random = new Random(1337);
            _nameGenerator = new MarkovNameGenerator(ref random, names, NameGeneratorOrder, NameGeneratorMinLength, NameGeneratorMaxLength);
        }

        if (_nameGenerator != null)
        {
            if (GUILayout.Button("Generate Name"))
            {
                Debug.Log(_nameGenerator.NextName);
            }
        }
    }
        public void SaveHtmlPage()
        {
            DirectoryInfo dirInfo = new DirectoryInfo(Path);

            if (!dirInfo.Exists)
            {
                Logger.Log("Path not found");
                throw new Exception("Path not found");
            }
            if (Path[Path.Length - 1] != '\\')
            {
                Path = Path + '\\';
            }
            if (Url == null)
            {
                Logger.Log("Url NullReferenceException");
                throw new Exception("Url NullReferenceException");
            }
            else
            {
                try
                {
                    using (Stream stream = client.OpenRead(Url))
                    {
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex.Message);
                    throw;
                }
            }
            if (NameFile == null)
            {
                int    a    = Url.Length;
                string Name = Url.Substring(Url.IndexOf(" / /") + 2);
                if (Name.IndexOf(" /") > 0)
                {
                    Name = Name.Substring(0, Name.IndexOf("/"));
                    Name = Name.Substring(0, Name.LastIndexOf("."));
                }
                else
                {
                    Name = Name.Substring(0, Name.LastIndexOf("."));
                }
                if (Name.IndexOf('.') > 0)
                {
                    Name = Name.Substring(Name.IndexOf("."));
                }
                Name = Name.Replace('.', ' ');

                if (Name.IndexOf('\\') > 0 || Name.IndexOf("/") > 0 || Name.IndexOf(":") > 0 || Name.IndexOf("*") > 0 || Name.IndexOf("\"") > 0 || Name.IndexOf("<") > 0 || Name.IndexOf(">") > 0 || Name.IndexOf("|") > 0)
                {
                    Logger.Log("The filename should not contain these characters \\/:*?\"<>|");
                    throw new Exception("The filename should not contain these characters \\/:*?\"<>|");
                }
                Path = Path + Name + ".html";
            }
            else
            {
                if (NameFile.IndexOf('\\') > 0 || NameFile.IndexOf("/") > 0 || NameFile.IndexOf(":") > 0 || NameFile.IndexOf("*") > 0 || NameFile.IndexOf("\"") > 0 || NameFile.IndexOf("<") > 0 || NameFile.IndexOf(">") > 0 || NameFile.IndexOf("|") > 0)
                {
                    Logger.Log("The filename should not contain these characters \\/:*?\"<>|");
                    throw new Exception($"The filename should not contain these characters \\/:*?\"<>|");
                }
                Path = Path + NameFile + ".html";
            }
            client.DownloadFile(Url, Path);
        }
Beispiel #3
0
        protected static void Massa(int index, string NameOfConfiguration)                     //Так как в основном код "поставит ьконфиг" и "удалить конфиг" совершенно одинаковый,
                                                                                               //было решено написать отдельную функцию, к которой будут обращаться
                                                                                               //другие две по индексу.
        {
            string FolderOfConfigurathion = ConfigurationsFolder + "\\" + NameOfConfiguration; //Построение имени папки конфигурации

            if (Directory.Exists(FolderOfConfigurathion))
            {
                string[] FilesConfiguraton = Directory.GetFiles(FolderOfConfigurathion); //Получение файлов в папке конфигурации
                string   DesktopPath       = File.ReadAllText(DesktopPathFile);          //Получение рабочего стола
                foreach (string NameFile in FilesConfiguraton)
                {
                    //Неясно как будет лучше: или чтобы оператор свитч постоянно работал при новом витке цикла,
                    //или два цикла на один оператор свитча
                    switch (index)
                    {
                    case 1:    //Для отправки ярлыков на рабочий стол
                    {
                        if (NameFile.Substring(NameFile.LastIndexOf('.')) == ".lnk")
                        {
                            try
                            {
                                File.Copy(NameFile, DesktopPath + "\\" + NameFile.Substring(NameFile.LastIndexOf('\\') + 1));
                            }
                            catch
                            {
                                File.AppendAllText(ErrorFile, "Ошибка добавления файла на рабочий стол");
                            }
                        }
                    }
                    break;

                    case 2:    //Для удаления файлов с рабочего стола
                    {
                        File.Delete(DesktopPath + "\\" + NameFile.Substring(NameFile.LastIndexOf('\\') + 1));
                    }
                    break;
                    }
                }
            }
            else
            {
                MessageBox.Show("Папки конфигурации не существует");
            }
        }