IEnumerator DoSave()
    {
        PatternSelector.Close();
        yield return(new WaitForSeconds(0.5f));

        Controller.Instance.Popup.SetText("<align=\"center\">Saving <#FF6666>savegame<#FFFFFF><s1>...<s10>\r\n\r\nPlease wait.", true);
        yield return(new WaitForSeconds(3f));

        while (SavegameSaving && !SavegameSaved)
        {
            yield return(new WaitForEndOfFrame());
        }
        SavegameSaving = false;
        Controller.Instance.Popup.Close();
        yield return(new WaitForSeconds(0.3f));

        Controller.Instance.SwitchToMainMenu();
    }
    IEnumerator DoSave()
    {
        Logger.Log(Logger.Level.INFO, "[Controller] Saving...");
        try
        {
            PatternSelector.Close();
        }
        catch (System.Exception e)
        {
            Logger.Log(Logger.Level.ERROR, "[Controller] Error while saving: " + e.ToString());
        }
        yield return(new WaitForSeconds(0.5f));

        try
        {
            Controller.Instance.Popup.SetText("<align=\"center\">Saving <#FF6666>savegame<#FFFFFF><s1>...<s10>\r\n\r\nPlease wait.", true);
        }
        catch (System.Exception e)
        {
            Logger.Log(Logger.Level.ERROR, "[Controller] Error while saving: " + e.ToString());
        }
        yield return(new WaitForSeconds(3f));

        while (SavegameSaving && !SavegameSaved)
        {
            yield return(new WaitForEndOfFrame());
        }
        try
        {
            SavegameSaving = false;
            Controller.Instance.Popup.Close();
        }
        catch (System.Exception e)
        {
            Logger.Log(Logger.Level.ERROR, "[Controller] Error while saving: " + e.ToString());
        }
        yield return(new WaitForSeconds(0.3f));

        try
        {
            Controller.Instance.SwitchToMainMenu();
        }
        catch (System.Exception e)
        {
            Logger.Log(Logger.Level.ERROR, "[Controller] Error while saving: " + e.ToString());
        }
    }