public void ExportMainMenu(IndentedTextWriter _writer, SpriteImage _backgroundImage, SpriteExporter _spriteExporter) { _writer.Indent = 0; _writer.WriteLine("Menu {"); _writer.WriteLine(); ++_writer.Indent; _writer.WriteLine("Name: \"Main Menu\";"); _writer.WriteLine(); _writer.WriteLine($"BGIndex: {_spriteExporter.GetSpriteIndex(_backgroundImage)};"); _writer.WriteLine(); _writer.WriteLine("Items {"); ++_writer.Indent; _writer.WriteLine("Button {"); ++_writer.Indent; _writer.WriteLine("Text: \"Start Game\";"); _writer.WriteLine("Button: 50, 50, 50, 100, 0;"); _writer.WriteLine("Type: 0;"); --_writer.Indent; _writer.WriteLine("}"); _writer.WriteLine("Button {"); ++_writer.Indent; _writer.WriteLine("Text: \"Load Game\";"); _writer.WriteLine("Button: 50, 110, 50, 100, 0;"); _writer.WriteLine("Type: 1;"); --_writer.Indent; _writer.WriteLine("}"); _writer.WriteLine("Button {"); ++_writer.Indent; _writer.WriteLine("Text: \"Quit Game\";"); _writer.WriteLine("Button: 50, 170, 50, 100, 0;"); _writer.WriteLine("Type: 4;"); --_writer.Indent; _writer.WriteLine("}"); --_writer.Indent; _writer.WriteLine("}"); --_writer.Indent; _writer.WriteLine("}"); }
public void ExportStory(IndentedTextWriter _writer, Project _Project, SpriteExporter _spriteExporter) { _writer.Indent = 0; //Panels for (int i = 0; i < _Project.Panels.Count; ++i) { //-Panel Panel currentPanel = _Project.Panels[i]; _writer.WriteLine("Panel {"); _writer.WriteLine(); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentPanel.PanelName}\";"); _writer.WriteLine(); //BG _writer.WriteLine($"BGIndex: {_spriteExporter.GetSpriteIndex(currentPanel.BackgroundImage)};"); _writer.WriteLine(); //Condition if (currentPanel.Condition != null) { _writer.WriteLine("Condition {"); _writer.WriteLine(); ++_writer.Indent; //DataValues for (int j = 0; j < currentPanel.Condition.DataValues.Count; ++j) { //-DataValue DataValue currentDataValue = currentPanel.Condition.DataValues[j]; _writer.WriteLine("DataValue {"); _writer.WriteLine(); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentDataValue.Name}\";"); //Type _writer.WriteLine($"Type: \"{currentDataValue.ValueType}\";"); //Value _writer.WriteLine($"Value: \"{currentDataValue.Value}\";"); //Action //_writer.WriteLine($"Action: \"{currentDataValue.Action}\";"); --_writer.Indent; _writer.WriteLine("}"); } //Alternative _writer.WriteLine("Alternative {"); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentPanel.Condition.AlternativePanelKey}\";"); --_writer.Indent; _writer.WriteLine("}"); --_writer.Indent; _writer.WriteLine("}"); } //Condition end _writer.WriteLine("Sprites {"); _writer.WriteLine(); ++_writer.Indent; //Sprites if (currentPanel.SpriteImages != null) { foreach (KeyValuePair <Guid, SpriteImage> pair in currentPanel.SpriteImages) { _writer.WriteLine($"Sprite: {_spriteExporter.GetSpriteIndex(pair.Value)};"); } } --_writer.Indent; _writer.WriteLine("}"); _writer.WriteLine(); //EntryBranch Name _writer.WriteLine($"EntryBranch: \"{currentPanel.EntryBranchKey}\";"); _writer.WriteLine(); _writer.WriteLine("Branches {"); _writer.WriteLine(); ++_writer.Indent; //Branches for (int j = 0; j < currentPanel.Branches.Count; ++j) { //-Branch Branch currentBranch = currentPanel.Branches[j]; _writer.WriteLine("Branch {"); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentBranch.Name}\";"); //Texts for (int k = 0; k < currentBranch.ShownItems.Count; ++k) { //-Text DialogLine currentText = (DialogLine)currentBranch.ShownItems[k]; //Character Name //Said text _writer.Write($"Text: \"{currentText.CharacterName}\", \"{currentText.TextShown}\""); if (currentText.Sprites.Count > 0) { for (int l = 0; l < currentText.Sprites.Count; ++l) { SpriteViewModel currentSprite = currentText.Sprites[l]; //SpritePosition if (currentSprite.IsAutoPositioned) { //SpriteIndex _writer.Write($", {_spriteExporter.GetSpriteIndex(currentSprite.SpriteImage)}"); } else { //SpriteIndex, XPos, YPos _writer.Write($", {_spriteExporter.GetSpriteIndex(currentSprite.SpriteImage)}({(int)currentSprite.PosX}, {(int)currentSprite.PosX})"); } } _writer.WriteLine(";"); } else { _writer.WriteLine(";"); } } //Texts loop end //Continue _writer.WriteLine(); _writer.WriteLine("Continue {"); ++_writer.Indent; //ContinueType _writer.WriteLine($"Type: {currentBranch.Continue.Type};"); if (currentBranch.Continue.Type == Models.Enums.ContinueTypeEnum.Split) { //Split _writer.WriteLine("Split {"); ++_writer.Indent; //Options for (int l = 0; l < currentBranch.Continue.Split.Options.Count; ++l) { Option currentOption = currentBranch.Continue.Split.Options[l]; //-Option _writer.WriteLine("Option {"); ++_writer.Indent; //Name _writer.WriteLine($"Name: {currentOption.Name};"); //Text _writer.WriteLine($"Text: \"{currentOption.ShownText}\";"); //ButtonSprite _writer.WriteLine($"Sprite: {_spriteExporter.GetButtonSpriteIndex(currentOption.ButtonSprite)};"); //Continue _writer.WriteLine("Continue {"); ++_writer.Indent; //Type _writer.WriteLine($"Type: {currentOption.Continue.Type};"); //Key _writer.WriteLine($"Name: \"{currentOption.Continue.ContinueKey}\";"); --_writer.Indent; _writer.WriteLine("}"); //Continue Closing Bracket --_writer.Indent; _writer.WriteLine("}"); //Option Closing Bracket } --_writer.Indent; _writer.WriteLine("}"); } else { //Continue Key _writer.WriteLine($"Name: \"{currentBranch.Continue.ContinueKey}\";"); } --_writer.Indent; _writer.WriteLine("}"); //Continue closing Bracket --_writer.Indent; _writer.WriteLine("}"); //Current Branch closing Bracket } //Branches loop end --_writer.Indent; _writer.WriteLine("}"); //Branch Collection closiung Braces _writer.WriteLine("Animation_Placeholder {"); ++_writer.Indent; --_writer.Indent; _writer.WriteLine("}"); //AnimationPlaceholder closing Braces --_writer.Indent; _writer.WriteLine("}"); //currentPanel closing Braces } }
public bool Export(Project _project, SpriteExporter _spriteExporter, SpriteImage _mainMenuBGImage) { bool success = false; try { if (!Directory.Exists(m_exportPath)) { Directory.CreateDirectory(m_exportPath); } //Text Files //Gib den SpriteImages einen unique Key und füge diesen Key beim Export für jede Benutzung einem Dictionary zu //Wenn Das Sprite scho einmal benutzt wurde, wird es trotzdem nurt einmal vermerkt. //ImageImports using (StreamWriter writer = new StreamWriter(Path.Combine(m_exportPath, "ImageImports.txt"), false)) { for (int i = 0; i < _spriteExporter.SpriteCount; ++i) { writer.WriteLine(Path.GetFileName(_spriteExporter.SpritesArray[i].Image)); } writer.Close(); } //(Button)Sprite Imports using (StreamWriter writer = new StreamWriter(Path.Combine(m_exportPath, "SpriteImports.txt"), false)) { for (int i = 0; i < _spriteExporter.ButtonSpriteCount; ++i) { writer.WriteLine(Path.GetFileName(_spriteExporter.ButtonSpritesArray[i].Image)); } writer.Close(); } //Storyboard using (IndentedTextWriter writer = new IndentedTextWriter(new StreamWriter(Path.Combine(m_exportPath, "Storyboard.txt"), false))) { m_textBuilder.ExportStory(writer, _project, _spriteExporter); writer.Close(); } //Options Datei using (StreamWriter writer = new StreamWriter(Path.Combine(m_exportPath, "options.txt"), false)) { SettingsViewModel svm = _project.ProjectSettingsViewModel; FontManagerViewModel fmvm = _project.FontManagerViewModel; writer.WriteLine($"WindowWidth: {svm.WindowWidth};"); writer.WriteLine($"WindowHeight: {svm.WindowHeight};"); writer.WriteLine($"TextBoxRed: {svm.TextBoxRed};"); writer.WriteLine($"TextBoxGreen: {svm.TextBoxGreen};"); writer.WriteLine($"TextBoxBlue: {svm.TextBoxBlue};"); writer.WriteLine($"TextBoxAlpha: {svm.TextBoxAlpha};"); writer.WriteLine($"Font: {fmvm.CurrentUsedFont.Font.Source}.ttf;"); writer.Write($"FontSize: {fmvm.FontSize};"); //Last entry has to not contain new Line or Game loading will fail writer.Close(); } //Menu Files using (IndentedTextWriter writer = new IndentedTextWriter(new StreamWriter(Path.Combine(m_exportPath, "MainMenu.txt"), false))) { m_textBuilder.ExportMainMenu(writer, _mainMenuBGImage, _spriteExporter); writer.Close(); } //SaveMenu using (IndentedTextWriter writer = new IndentedTextWriter(new StreamWriter(Path.Combine(m_exportPath, "SaveMenu.txt"), false))) { var base64EncodedBytes = Convert.FromBase64String("TWVudSB7CgoJTmFtZTogIlNhdmUgTWVudSI7CgoJQkdJbmRleDogMgoKCUl0ZW1zIHsKCQlCdXR0b24gewoJCQlUZXh0OiAiR28gQmFjayI7CgkJCUJ1dHRvbjogNjAwLCA1MDAsIDEwMCwgMjAwLCAwOwoJCQlUeXBlOiAxMTsKCQl9CgkJQnV0dG9uIHsKCQkJVGV4dDogIlRlbXAiOwoJCQlCdXR0b246IDUwLCAxNzAsIDUwLCAxMDAsIDA7CgkJCVR5cGU6IDc7CgkJfQoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJUZW1wIjsKCQkJQnV0dG9uOiA1MCwgMjMwLCA1MCwgMTAwLCAwOwoJCQlUeXBlOiA3OwoJCX0KCQlCdXR0b24gewoJCQlUZXh0OiAiVGVtcCI7CgkJCUJ1dHRvbjogNTAsIDI5MCwgNTAsIDEwMCwgMDsKCQkJVHlwZTogNzsKCQl9CgoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJUZW1wIjsKCQkJQnV0dG9uOiAyMDAsIDE3MCwgNTAsIDEwMCwgMDsKCQkJVHlwZTogNzsKCQl9CgkJQnV0dG9uIHsKCQkJVGV4dDogIlRlbXAiOwoJCQlCdXR0b246IDIwMCwgMjMwLCA1MCwgMTAwLCAwOwoJCQlUeXBlOiA3OwoJCX0KCQlCdXR0b24gewoJCQlUZXh0OiAiVGVtcCI7CgkJCUJ1dHRvbjogMjAwLCAyOTAsIDUwLCAxMDAsIDA7CgkJCVR5cGU6IDc7CgkJfQoJfQp9"); string exportString = Encoding.UTF8.GetString(base64EncodedBytes); writer.Write(exportString); writer.Close(); } //LoadMenu using (IndentedTextWriter writer = new IndentedTextWriter(new StreamWriter(Path.Combine(m_exportPath, "LoadMenu.txt"), false))) { var base64EncodedBytes = Convert.FromBase64String("TWVudSB7CgoJTmFtZTogIkxvYWQgTWVudSI7CgoJQkdJbmRleDogMgoKCUl0ZW1zIHsKCQlCdXR0b24gewoJCQlUZXh0OiAiR28gQmFjayI7CgkJCUJ1dHRvbjogNjAwLCA1MDAsIDEwMCwgMjAwLCAwOwoJCQlUeXBlOiAxMTsKCQl9CgkJQnV0dG9uIHsKCQkJVGV4dDogIlRlbXAiOwoJCQlCdXR0b246IDUwLCAxNzAsIDUwLCAxMDAsIDA7CgkJCVR5cGU6IDEyOwoJCX0KCQlCdXR0b24gewoJCQlUZXh0OiAiVGVtcCI7CgkJCUJ1dHRvbjogNTAsIDIzMCwgNTAsIDEwMCwgMDsKCQkJVHlwZTogMTI7CgkJfQoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJUZW1wIjsKCQkJQnV0dG9uOiA1MCwgMjkwLCA1MCwgMTAwLCAwOwoJCQlUeXBlOiAxMjsKCQl9CgoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJUZW1wIjsKCQkJQnV0dG9uOiAyMDAsIDE3MCwgNTAsIDEwMCwgMDsKCQkJVHlwZTogMTI7CgkJfQoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJUZW1wIjsKCQkJQnV0dG9uOiAyMDAsIDIzMCwgNTAsIDEwMCwgMDsKCQkJVHlwZTogMTI7CgkJfQoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJUZW1wIjsKCQkJQnV0dG9uOiAyMDAsIDI5MCwgNTAsIDEwMCwgMDsKCQkJVHlwZTogMTI7CgkJfQoJfQp9"); string exportString = Encoding.UTF8.GetString(base64EncodedBytes); writer.Write(exportString); writer.Close(); } //PauseMenu using (IndentedTextWriter writer = new IndentedTextWriter(new StreamWriter(Path.Combine(m_exportPath, "PauseMenu.txt"), false))) { var base64EncodedBytes = Convert.FromBase64String("TWVudSB7CgoJTmFtZTogIlBhdXNlIE1lbnUiOwoKCUJHSW5kZXg6IDIKCglJdGVtcyB7CgkJQnV0dG9uIHsKCQkJVGV4dDogIkJhY2sgdG8gR2FtZSI7CgkJCUJ1dHRvbjogNTAsIDUwLCAxMDAsIDIwMCwgMDsKCQkJVHlwZTogMTA7CgkJfQoJCUJ1dHRvbiB7CgkJCVRleHQ6ICJTYXZlIjsKCQkJQnV0dG9uOiA1MCwgMTEwLCA1MCwgMTAwLCAwOwoJCQlUeXBlOiAxNDsKCQl9CgkJQnV0dG9uIHsKCQkJVGV4dDogIkxvYWQiOwoJCQlCdXR0b246IDUwLCAxNzAsIDUwLCAxMDAsIDA7CgkJCVR5cGU6IDE1OwoJCX0KCQlCdXR0b24gewoJCQlUZXh0OiAiQmFjayB0byBNYWluIE1lbnUiOwoJCQlCdXR0b246IDUwLCAyMzAsIDUwLCAxMDAsIDA7CgkJCVR5cGU6IDEzOwoJCX0KCX0KfQ=="); string exportString = Encoding.UTF8.GetString(base64EncodedBytes); writer.Write(exportString); writer.Close(); } //Variables using (IndentedTextWriter writer = new IndentedTextWriter(new StreamWriter(Path.Combine(m_exportPath, "Variables.txt"), false))) { m_textBuilder.ExportVariables(writer, _project.VariableManagerViewModel); writer.Close(); } //Copy Files string filename; string destFile; //Image Files for (int i = 0; i < _spriteExporter.SpriteCount; ++i) { filename = Path.GetFileName(_spriteExporter.SpritesArray[i].Image); destFile = Path.Combine(m_exportPath, filename); File.Copy(_spriteExporter.SpritesArray[i].Image, destFile, true); } //Button Image Files for (int i = 0; i < _spriteExporter.ButtonSpriteCount; ++i) { filename = Path.GetFileName(_spriteExporter.ButtonSpritesArray[i].Image); destFile = Path.Combine(m_exportPath, filename); File.Copy(_spriteExporter.ButtonSpritesArray[i].Image, destFile, true); } //TTF Font Files string path = _project.FontManagerViewModel.CurrentUsedFont.Font.BaseUri.OriginalString; filename = _project.FontManagerViewModel.CurrentUsedFont.Font.Source; destFile = Path.Combine(m_exportPath, filename + ".ttf"); File.Copy(path, destFile, true); //bin Files path = Directory.GetCurrentDirectory() + @"\bin"; DirectoryCopy(path, m_exportPath, false); return(success = true); } catch (Exception ex) { MessageBox.Show("Export failed! " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(success); } }