private void backupButton_Click(object sender, RoutedEventArgs e)
        {
            var    currentTime    = DateTime.Now;
            string backupSaveName = "Appdata Save " + currentTime.ToString("dd" + "-" + "MM" + "-" + "yy" + " hhmmss");
            string backupDirPath  = Constants.SavesPath + backupSaveName;

            Directory.CreateDirectory(backupDirPath);

            File.Copy(Constants.AppdataPath + "\\file0", backupDirPath + "\\file0", true);
            File.Copy(Constants.AppdataPath + "\\undertale.ini", backupDirPath + "\\undertale.ini", true);
            ((MainWindow)this.Owner).populateSavesCombo();

            Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
            {
                { Characters.Alphys, "S-s-sure, no problem! I've backed up your Local Appdata save to \"" + backupSaveName + "\" successfully!" },
                { Characters.Asgore, "Human, I've backed up your Local Appdata save to \"" + backupSaveName + "\" successfully!" },
                { Characters.Asriel, "Hey, I've tried my best and I think I've backed up your Local Appdata save to \"" + backupSaveName + "\" successfully!" },
                { Characters.Flowey, "You're not the ONLY one with this power. I've backed up your Local Appdata save to \"" + backupSaveName + "\". I'll be watching you." },
                { Characters.Papyrus, "NYEH, HUMAN! I, THE GREAT PAPYRUS, HAVE BACKED UP YOUR LOCAL APPDATA SAVE TO \"" + backupSaveName + "\" SUCCESSFULLY... SANS, WHAT'S AN APPDATA?" },
                { Characters.Sans, "hey buddy, lazy like me huh? I've backed up your Local Appdata save to \"" + backupSaveName + "\"" },
                { Characters.Toriel, "Of course my child! I've backed up your Local Appdata save to \"" + backupSaveName + "\" successfully! Be good, alright?" },
                { Characters.Undyne, "OI, PUNK, I'M BUSY! URGH. Fine. I've backed up your Local Appdata save to \"" + backupSaveName + "\"" },
                { Characters.None, "Local Appdata save backed up to \"" + backupSaveName + "\" successfully!" }
            };

            UTMessageBox.Show(messageDict, Constants.CharacterReactions.Positive, MessageBoxButton.OK);
        }
        //We use the saveButton_Click event to make a save from the UI control values and to write a new file0
        private void saveButton_Click(object sender, RoutedEventArgs e)
        {
            if (areTextBoxesFull())
            {
                makeSave();
                makeINI();

                if (SAVE.SAVEFile.AskToWrite(thisSave, thisINI))
                {
                    MXA2SE.play_sound(soundEngine, "Assets//Sounds//fileSaved.wav");
                    ((MainWindow)this.Owner).populateSavesCombo();

                    Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                    {
                        { Characters.Alphys, "N-n-no problem! I've made the \"" + thisSave.SaveName + "\" save file successfully!" },
                        { Characters.Asgore, "Not a problem at all, human. The \"" + thisSave.SaveName + "\" save file has been created successfully!" },
                        { Characters.Asriel, "Hey, howdy! I've made the \"" + thisSave.SaveName + "\" save successfully!" },
                        { Characters.Flowey, "URGH, don't you think I've got something better to do? I've made the \"" + thisSave.SaveName + "\" save for you." },
                        { Characters.Papyrus, "FEAR NOT, HUMAN! I'VE MASTERFULLY PREPARED THE \"" + thisSave.SaveName + "\" SAVE FOR YOU." },
                        { Characters.Sans, "sure thing buddy. i've created the \"" + thisSave.SaveName + "\" save for you." },
                        { Characters.Toriel, "I would be glad to assist you my child. The \"" + thisSave.SaveName + "\" save has been created successfully." },
                        { Characters.Undyne, "FUHUHUH! No problem, bestie! I've created the \"" + thisSave.SaveName + "\" save for you." },
                        { Characters.None, "Save \"" + thisSave.SaveName + "\" created successfully!" }
                    };

                    UTMessageBox.Show(messageDict, Constants.CharacterReactions.Positive, MessageBoxButton.OK);
                    Close();
                }
            }

            else
            {
                System.Windows.MessageBox.Show("Error! Some text boxes contain empty or invalid data! Please ensure the highlighted text boxes are corrected and then try again.", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        //We use the loadButton_Click event to open a new folder browser to allow the user to load a save and set up the UI for the loaded save
        private void loadButton_Click(object sender, RoutedEventArgs e)
        {
            FolderBrowser2 directoryFolderBrowser = new FolderBrowser2();

            directoryFolderBrowser.ShowDialog(null);

            if (File.Exists(directoryFolderBrowser.DirectoryPath + "//file0"))
            {
                SAVE.SAVEFile saveFile = SAVE.SAVEFile.LoadSaveFile(directoryFolderBrowser.DirectoryPath);
                loadSAVE(saveFile);
                thisINI = INI.ReadINI(saveFile);
                loadINI();

                Routes.GameRoutes closestRoute = SAVE.SAVEFile.GetClosestRoute(saveFile);

                if (closestRoute == Routes.GameRoutes.Genocide)
                {
                    genocideRadio.IsChecked = true;
                }

                else if (closestRoute >= Routes.GameRoutes.TruePacifistDate)
                {
                    pacifistRadio.IsChecked = true;
                    routeCombo.SelectedItem = Routes.GetEnumDescription(SAVE.SAVEFile.GetClosestRoute(thisSave));
                }

                else
                {
                    neutralRadio.IsChecked  = true;
                    routeCombo.SelectedItem = Routes.GetEnumDescription(SAVE.SAVEFile.GetClosestRoute(thisSave));
                }

                MXA2SE.play_sound(soundEngine, "Assets//Sounds//fileLoaded.wav");
            }

            else
            {
                Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                {
                    { Characters.Alphys, "S-s-sorry, that folder doesn't contain a valid Undertale save file." },
                    { Characters.Asgore, "Human, I'm sorry, but folder doesn't contain a valid Undertale save file." },
                    { Characters.Asriel, "I'm really sorry, I tried, but couldn't find a valid Undertale save file in that folder." },
                    { Characters.Flowey, "YOU. IDIOT! That folder doesn't contain a valid Undertale save file!" },
                    { Characters.Papyrus, "NYOO HOO HOO. I, THE GREAT PAPYRUS, HAVE FAILED TO FIND A VALID SAVE FILE IN THAT FOLDER." },
                    { Characters.Sans, "heyo, pal. try again. i couldn't find an Undertale save file in that folder." },
                    { Characters.Toriel, "My child, I am sorry, but I was unable to find a valid Undertale save file in that folder." },
                    { Characters.Undyne, "HEY, PUNK! I CAN'T FIND AN UNDERTALE SAVE FILE IN THAT FOLDER!" },
                    { Characters.None, "The folder specified does not contain a valid Undertale save file!" }
                };

                UTMessageBox.Show(messageDict, Constants.CharacterReactions.Negative, MessageBoxButton.OK);
            }
        }
示例#4
0
        //The Window_Loaded event is resposible for checking all working folder directories and contents to ensure they are valid
        //This includes checking the install path in path.xml as well as ensuring we a have good working folder structure and populating the UI Comboboxes
        private async void SharpWindow_Loaded(object sender, RoutedEventArgs e)
        {
            XML.Check();
            XML.ReadGamePath();
            XML.ReadSettingsXML();

            if (await SwiftUpdate.CheckForUpdates("Underlauncher", "http://apps.sgcsam.com/Underlauncher/"))
            {
                Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                {
                    { Characters.Alphys, "H-h-hey, so an update is r-r-ready for Underlauncher. Want to download it?" },
                    { Characters.Asgore, "Greetings human, it appears that an update is available for Underlauncher. Shall we download it?" },
                    { Characters.Asriel, "Howdy! Looks like there's an update available for Underlauncher. Want to download it?" },
                    { Characters.Flowey, "HEY. IDIOT. There's an update available to Underlauncher. Can we just download it already?" },
                    { Characters.Papyrus, "NYEH, HUMAN! I BRING NEWS! AN UPDATE IS AVAILABLE FOR UNDERLAUNCHER. WANT TO DOWNLOAD IT?" },
                    { Characters.Sans, "heya buddy. it looks like there's an update for underlauncher. want to download it?" },
                    { Characters.Toriel, "Excuse me child, but an update is available for Underlauncher. Shall we download it?" },
                    { Characters.Undyne, "HEY PUNK! Looks like there's an update available for Underlauncher. LET'S DOWNLOAD IT!" },
                    { Characters.None, "An update is available for Underlauncher. Do you want to download it?" }
                };

                if (UTMessageBox.Show(messageDict, Constants.CharacterReactions.Normal, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    Hide();
                    UpdateWindow updateWindow = new UpdateWindow();
                    updateWindow.ShowDialog();
                    Show();
                }
            }

            if (FileOperations.goodFolderIntegrity())
            {
                directoryBlock.Text    = "Path: " + XML.GetGamePath();
                directoryBlock.ToolTip = XML.GetGamePath();
                versionBlock.Text      = "Version: " + Constants.GameVersion + ", Dog Check DISABLED.";

                browseButton.IsEnabled      = false;
                saveEditorButton.IsEnabled  = true;
                musicEditorButton.IsEnabled = true;
                optionsButton.IsEnabled     = true;
                savesCombo.IsEnabled        = true;
                presetsCombo.IsEnabled      = true;
                debugCheck.IsEnabled        = true;
                launchButton.IsEnabled      = true;

                populateSavesCombo();
                populatePresetsCombo();
            }
        }
示例#5
0
        private void loadButton_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog presetDialog = new OpenFileDialog();

            presetDialog.Title            = "Open preset.xml file";
            presetDialog.Filter           = "XML files|*.xml";
            presetDialog.InitialDirectory = Environment.CurrentDirectory;
            presetDialog.ShowDialog();

            if (System.IO.Path.GetFileName(presetDialog.FileName) == "preset.xml")
            {
                ResetUI();
                saveButton.IsEnabled = true;
                musicPreset          = new MusicPreset(Constants.PresetsPath + new DirectoryInfo(System.IO.Path.GetDirectoryName(presetDialog.FileName)).Name);

                if (!musicPreset.Load())
                {
                    Application.Current.Shutdown();
                    return;
                }

                PopulateCustomTracks(musicPreset.customTrackDirectory);
                TagFromLoad();
                presetNameBox.Text = musicPreset.presetName;
            }

            else
            {
                Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                {
                    { Characters.Alphys, "S-s-sorry. but you're g-g-going to have to navigate to a valid preset folder." },
                    { Characters.Asgore, "I'm afraid you shall have to navigate to a valid preset folder human." },
                    { Characters.Asriel, "I'm real sorry, but please navigate to a valid preset folder." },
                    { Characters.Flowey, "Oh come on you idiot! Can't you navigate to a valid preset folder?" },
                    { Characters.Papyrus, "I AM SORRY MY FRIEND, BUT I NEED YOU TO NAVIGATE TO A VALID PRESET FOLDER." },
                    { Characters.Sans, "heyo, come on pal. navigate to a valid preset folder would ya?" },
                    { Characters.Toriel, "I'm sorry child, but please navigate to a valid preset folder." },
                    { Characters.Undyne, "HEY! Can you navigate to a valid preset folder already?" },
                    { Characters.None, "Invalid preset folder selected, please navigate to a valid preset folder!" }
                };

                UTMessageBox.Show(messageDict, Constants.CharacterReactions.Negative, MessageBoxButton.OK);
            }
        }
        private void setSoullessButton_Click(object sender, RoutedEventArgs e)
        {
            FileOperations.setGenocide(GenocideStates.Soulless);

            Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
            {
                { Characters.Alphys, "W-w-why would you do such a horrible thing? True Pacifist ending will be altered." },
                { Characters.Asgore, "Uh, what kind of monster are you? True Pacifist ending will be altered." },
                { Characters.Asriel, "I can help, I can-- please don't kill me. True Pacifist ending will be altered." },
                { Characters.Flowey, "You're soulless. Just like me. True Pacifist ending will be altered." },
                { Characters.Papyrus, "YOU CAN DO BETTER HUMAN, I STILL BELIEVE IN YOU! True Pacifist ending will be altered." },
                { Characters.Sans, "you dirty brother killer. True Pacifist ending will be altered." },
                { Characters.Toriel, "Be good, alright? My child... True Pacifist ending will be altered." },
                { Characters.Undyne, "You've made your choice. You're going to have to get past ME. True Pacifist ending will be altered." },
                { Characters.None, "Genocide effects activated. True Pacifist ending will be altered." }
            };

            UTMessageBox.Show(messageDict, Constants.CharacterReactions.Negative, MessageBoxButton.OK);
        }
        private void clearGenocideButton_Click(object sender, RoutedEventArgs e)
        {
            FileOperations.setGenocide(GenocideStates.None);

            Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
            {
                { Characters.Alphys, "O-O-Okay, the effects are cleared!\nTrue Pacifist ending will proceed as normal." },
                { Characters.Asgore, "Well human, those effects have been removed!\nTrue Pacifist ending will proceed as normal." },
                { Characters.Asriel, "Hey, those effects are gone, ok?\nTrue Pacifist ending will proceed as normal." },
                { Characters.Flowey, "YOU. CHEATING. IDIOT.\nTrue Pacifist ending will proceed as normal." },
                { Characters.Papyrus, "HUMAN, THOSE BAD EFFECTS ARE GONE. I NEVER STOPPED BELIEVING IN YOU!\nTrue Pacifist ending will proceed as normal." },
                { Characters.Sans, "you dirty hacker.\nTrue Pacifist ending will proceed as normal." },
                { Characters.Toriel, "Those effects are gone now, my child.\nTrue Pacifist ending will proceed as normal." },
                { Characters.Undyne, "YOU PUNK! THOSE EFFECTS ARE GONE!\nTrue Pacifist ending will proceed as normal." },
                { Characters.None, "Genocide effects have been cleared. True Pacifist ending will proceed as normal." }
            };

            UTMessageBox.Show(messageDict, Constants.CharacterReactions.Positive, MessageBoxButton.OK);
        }
示例#8
0
            //AskToWrite is called when we want to write our SAVEFile classes's variables to file0. It checks if the directory to write to
            //already exists and asks the user if they wish to overwrite. It then calls WriteSaveFile and WriteINI with the relevant arguments passed
            public static bool AskToWrite(SAVEFile thisSave, INI.INIFile thisINI)
            {
                if (!Directory.Exists(Constants.SavesPath + thisSave.SaveName))
                {
                    Directory.CreateDirectory(Constants.SavesPath + thisSave.SaveName);

                    if (!WriteSaveFile(thisSave, thisINI) || !INI.WriteINI(thisINI, thisSave))
                    {
                        return(false);
                    }

                    return(true);
                }

                else
                {
                    Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                    {
                        { Characters.Alphys, "Hey! So, the save \"" + thisSave.SaveName + "\" already exists. Would you like me to overwrite it?" },
                        { Characters.Asgore, "Well human, the save \"" + thisSave.SaveName + "\" already exists. Shall I overwrite it?" },
                        { Characters.Asriel, "Sorry, but the save \"" + thisSave.SaveName + "\" already exists. Do you want me to overwrite it? It's no trouble, really!" },
                        { Characters.Flowey, "YOU. IDIOT! The save \"" + thisSave.SaveName + "\" already exists. Of course, I've got to do all the work - do you want me to overwrite it?" },
                        { Characters.Papyrus, "NYEH, SORRY HUMAN. THE SAVE \"" + thisSave.SaveName + "\" ALREADY EXISTS. WOULD YOU LIKE ME TO ASSIST YOU AND OVERWRITE IT?" },
                        { Characters.Sans, "yo, buddy. the save \"" + thisSave.SaveName + "\" already exists. i'm normally quite lazy, but i'll make an exception for ya. want me to overwrite it?" },
                        { Characters.Toriel, "My child, I apologize, but the save \"" + thisSave.SaveName + "\" already exists. Would you like me to overwrite it for you?" },
                        { Characters.Undyne, "OH COME ON.  The save \"" + thisSave.SaveName + "\" already exists. Want me to overwrite it?" },
                        { Characters.None, "Save \"" + thisSave.SaveName + "\" already exists! Do you want to overwrite?" }
                    };

                    MessageBoxResult res = UTMessageBox.Show(messageDict, Constants.CharacterReactions.Normal, MessageBoxButton.YesNo);
                    if (res == MessageBoxResult.Yes)
                    {
                        if (!WriteSaveFile(thisSave, thisINI) || !INI.WriteINI(thisINI, thisSave))
                        {
                            return(false);
                        }

                        return(true);
                    }

                    return(false);
                }
            }
示例#9
0
        //browseButton_Click event allows the user to browse for an designate a new Undertale install directory
        private async void browseButton_Click(object sender, RoutedEventArgs e)
        {
            FolderBrowser2 directoryFolderBrowser = new FolderBrowser2();

            directoryFolderBrowser.ShowDialog((System.Windows.Forms.IWin32Window) this.Owner);

            if (File.Exists(directoryFolderBrowser.DirectoryPath + "//UNDERTALE.exe"))
            {
                WaitingWindow waitWindow = new WaitingWindow("Backing Up", "Backing up game files, please wait. This may take some time.");
                waitWindow.Owner = this;
                Hide();
                waitWindow.Show();
                await Task.Run(() => FileOperations.backupFilesFromGameDirectory(directoryFolderBrowser.DirectoryPath));

                waitWindow.Close();
                Show();

                browseButton.IsEnabled      = false;
                saveEditorButton.IsEnabled  = true;
                musicEditorButton.IsEnabled = true;
                optionsButton.IsEnabled     = true;
                savesCombo.IsEnabled        = true;
                presetsCombo.IsEnabled      = true;
                debugCheck.IsEnabled        = true;
                launchButton.IsEnabled      = true;

                populateSavesCombo();
                populatePresetsCombo();

                try
                {
                    string gameVersion = FileVersionInfo.GetVersionInfo(directoryFolderBrowser.DirectoryPath + "//UNDERTALE.exe").ProductVersion;
                    gameVersion = gameVersion.Replace(" ", String.Empty);   //Remove any spaces at the end of the version

                    XML.WriteGamePath(directoryFolderBrowser.DirectoryPath);

                    directoryBlock.Text    = "Path: " + XML.GetGamePath();
                    directoryBlock.ToolTip = XML.GetGamePath();

                    if (FileOperations.disableDogcheck(gameVersion, directoryFolderBrowser.DirectoryPath + "//data.win"))   //We disable dogcheck at the game directory
                    {
                        versionBlock.Text = "Game Version: " + gameVersion + ", Dog Check DISABLED.";
                    }

                    else
                    {
                        this.Close();
                    }
                }

                catch (Exception ex)
                {
                    MessageBox.Show("Unable to verify game version. This could indicate the Undertale.exe file is invalid or corrupt. Please try again and ensure the selected directory is correct. If the issue persists, please redownload the game. The exception is: " + ex, "Invalid Game Version!", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }

            else if (directoryFolderBrowser.DirectoryPath != null)
            {
                Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                {
                    { Characters.Alphys, "I'm real s-s-sorry, but I c-c-couldn't find the Undertale.exe in that folder." },
                    { Characters.Asgore, "I'm greatly sorry human, but I was unable to find the Undertale.exe in that folder." },
                    { Characters.Asriel, "I'm so sorry, but I can't find the Undertale.exe in that folder." },
                    { Characters.Flowey, "YOU. IDIOT. I can't find the Undertale.exe in that folder!" },
                    { Characters.Papyrus, "NYOO HOO HOO. I AM SORRY, BUT I'VE FAILED TO FIND THE UNDERTALE.EXE IN THAT FOLDER." },
                    { Characters.Sans, "c'mon pal, help me out here. i can't find the undertale.exe in that folder." },
                    { Characters.Toriel, "I'm afraid that I was unable to locate the Undertale.exe in that folder, my child." },
                    { Characters.Undyne, "HEY, COME ON PUNK! I can't find the Undertale.exe in that folder." },
                    { Characters.None, "Cannot locate Undertale.exe in the folder specified. Please navigate to a valid Undertale installation folder." }
                };

                UTMessageBox.Show(messageDict, Constants.CharacterReactions.Negative, MessageBoxButton.OK);
            }
        }
示例#10
0
        private async void saveButton_Click(object sender, RoutedEventArgs e)
        {
            bool shouldWrite = false;

            musicPreset.presetName = presetNameBox.Text;

            if (!Directory.Exists(Constants.PresetsPath + musicPreset.presetName))
            {
                Directory.CreateDirectory(Constants.PresetsPath + musicPreset.presetName + "\\Original");
                Directory.CreateDirectory(Constants.PresetsPath + musicPreset.presetName + "\\Named");
                shouldWrite = true;
            }

            else
            {
                Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                {
                    { Characters.Alphys, "Hey! So, preset \"" + musicPreset.presetName + "\" already exists. Would you like me to overwrite it?" },
                    { Characters.Asgore, "Well human, the preset \"" + musicPreset.presetName + "\" already exists. Shall I overwrite it?" },
                    { Characters.Asriel, "Sorry, but the preset \"" + musicPreset.presetName + "\" already exists. Do you want me to overwrite it? It's no trouble, really!" },
                    { Characters.Flowey, "YOU. IDIOT! The preset \"" + musicPreset.presetName + "\" already exists. Of course, I've got to do all the work - do you want me to overwrite it?" },
                    { Characters.Papyrus, "NYEH, SORRY HUMAN. THE PRESET \"" + musicPreset.presetName + "\" ALREADY EXISTS. WOULD YOU LIKE ME TO ASSIST YOU AND OVERWRITE IT?" },
                    { Characters.Sans, "yo, buddy. the preset \"" + musicPreset.presetName + "\" already exists. i'm normally quite lazy, but i'll make an exception this time. want me to overwrite it?" },
                    { Characters.Toriel, "My child, I apologize, but the preset \"" + musicPreset.presetName + "\" already exists. Would you like me to overwrite it for you?" },
                    { Characters.Undyne, "OH COME ON.  The preset \"" + musicPreset.presetName + "\" already exists. Want me to overwrite it?" },
                    { Characters.None, "Preset \"" + musicPreset.presetName + "\" already exists! Do you want to overwrite?" }
                };

                MessageBoxResult res = UTMessageBox.Show(messageDict, Constants.CharacterReactions.Negative, MessageBoxButton.YesNo);

                if (res == MessageBoxResult.Yes)
                {
                    shouldWrite = true;
                }
            }

            if (shouldWrite)
            {
                string[] gameTracks   = new string[Constants.GameTracksCount];
                string[] customTracks = new string[Constants.GameTracksCount];

                for (int i = 0; i < Constants.GameTracksCount; i++)
                {
                    ListViewItem thisGameItem = (ListViewItem)gameTracksList.Items[i];
                    gameTracks[i] = IDs.GameTracks.GetTrackFilename(thisGameItem.ToolTip.ToString());
                    if (thisGameItem.Tag.ToString() == "-1")
                    {
                        customTracks[i] = "Default";
                    }

                    else
                    {
                        ListViewItem thisCustomItem = (ListViewItem)customTracksList.Items[Convert.ToInt16(thisGameItem.Tag)];  //We set the custom game track to the content of the item in customTracksList at the index present in the game track's tag
                        customTracks[i] = thisCustomItem.ToolTip.ToString();
                    }
                }

                WaitingWindow waitWindow = new WaitingWindow("Converting Audio", "Converting audio for preset, please wait.This may take some time.");
                waitWindow.Owner = this;
                waitWindow.Show();
                await Task.Run(() => musicPreset.Write(gameTracks, customTracks));

                waitWindow.Close();
                ((MainWindow)this.Owner).populatePresetsCombo();

                Dictionary <Characters, string> messageDict = new Dictionary <Characters, string>()
                {
                    { Characters.Alphys, "Alright, sure! The \"" + musicPreset.presetName + "\" preset has been saved successfully!" },
                    { Characters.Asgore, "Of course human! I've made the \"" + musicPreset.presetName + "\" preset successfully!" },
                    { Characters.Asriel, "No problem, glad to help! I've made the \"" + musicPreset.presetName + "\" preset successfully" },
                    { Characters.Flowey, "Fine. I've made the stupid \"" + musicPreset.presetName + "\" preset successfully. Now go find something better to do." },
                    { Characters.Papyrus, "OF COURSE FRIEND, I'VE CREATED THE \"" + musicPreset.presetName + "\" PRESET SUCCESSFULLY. NYEH HEH HEH!" },
                    { Characters.Sans, "sure thing kiddo. the \"" + musicPreset.presetName + "\" preset has been made successfully." },
                    { Characters.Toriel, "No problem dear. I have created the \"" + musicPreset.presetName + "\" preset for you successfully." },
                    { Characters.Undyne, "Yeah, sure thing punk! The \"" + musicPreset.presetName + "\" preset has been created successfully! FUHUHUH!" },
                    { Characters.None, "Preset \"" + musicPreset.presetName + "\" saved successsfully!" }
                };

                UTMessageBox.Show(messageDict, Constants.CharacterReactions.Positive, MessageBoxButton.OK);
                Close();
            }
        }