private void CreateAndAddLevelToProject(string levelName, string levelFolderPath, string dataFileName, string specificFileName) { // Create the ProjectLevel instance ProjectLevel importedLevel = new ProjectLevel { Name = levelName, FolderPath = levelFolderPath, DataFileName = dataFileName, SpecificFile = specificFileName }; UpdateLevelSettings(importedLevel); if (checkBox_GenerateSection.Checked) { int ambientSoundID = (int)numeric_SoundID.Value; bool horizon = checkBox_EnableHorizon.Checked; // // // // GeneratedScriptLines = LevelHandling.GenerateScriptLines(importedLevel, ambientSoundID, horizon); // // // // } // // // // ImportedLevel = importedLevel; // // // // }
private void button_Create_Click(object sender, EventArgs e) { button_Create.Enabled = false; try { string levelName = PathHelper.RemoveIllegalPathSymbols(textBox_LevelName.Text.Trim()); levelName = LevelHandling.RemoveIllegalNameSymbols(levelName); if (string.IsNullOrWhiteSpace(levelName)) { throw new ArgumentException("You must enter a valid name for your level."); } // Check for name duplicates foreach (ProjectLevel projectLevel in _targetProject.Levels) { if (projectLevel.Name.ToLower() == levelName.ToLower()) { throw new ArgumentException("A level with the same name already exists on the list."); } } string dataFileName = textBox_CustomFileName.Text.Trim(); if (string.IsNullOrWhiteSpace(dataFileName)) { throw new ArgumentException("You must specify the custom PRJ2 / DATA file name."); } string levelFolderPath = Path.Combine(_targetProject.LevelsPath, levelName); // Create the level folder if (!Directory.Exists(levelFolderPath)) { Directory.CreateDirectory(levelFolderPath); } if (Directory.EnumerateFileSystemEntries(levelFolderPath).ToArray().Length > 0) // 99% this will never accidentally happen { throw new ArgumentException("A folder with the same name as the \"Level name\" already exists in\n" + "the project's /Levels/ folder and it's not empty."); } ProjectLevel createdLevel = new ProjectLevel { Name = levelName, DataFileName = dataFileName, FolderPath = levelFolderPath }; // Create a simple .prj2 file with pre-set project settings (game paths etc.) Level level = Level.CreateSimpleLevel(); string prj2FilePath = Path.Combine(createdLevel.FolderPath, createdLevel.DataFileName) + ".prj2"; string exeFilePath = Path.Combine(_targetProject.EnginePath, _targetProject.GetExeFileName()); string dataFilePath = Path.Combine(_targetProject.EnginePath, "data", createdLevel.DataFileName + _targetProject.GetLevelFileExtension()); level.Settings.LevelFilePath = prj2FilePath; level.Settings.GameDirectory = level.Settings.MakeRelative(_targetProject.EnginePath, VariableType.LevelDirectory); level.Settings.GameExecutableFilePath = level.Settings.MakeRelative(exeFilePath, VariableType.LevelDirectory); level.Settings.GameLevelFilePath = level.Settings.MakeRelative(dataFilePath, VariableType.LevelDirectory); level.Settings.GameVersion = _targetProject.GameVersion; Prj2Writer.SaveToPrj2(prj2FilePath, level); if (checkBox_GenerateSection.Checked) { int ambientSoundID = (int)numeric_SoundID.Value; bool horizon = checkBox_EnableHorizon.Checked; // // // // GeneratedScriptLines = LevelHandling.GenerateScriptLines(createdLevel, ambientSoundID, horizon); // // // // } // // // // CreatedLevel = createdLevel; // // // // } catch (Exception ex) { DarkMessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); button_Create.Enabled = true; DialogResult = DialogResult.None; } }