Esempio n. 1
0
        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("}");
        }
Esempio n. 2
0
        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
            }
        }
Esempio n. 3
0
        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);
            }
        }