示例#1
0
        private void LoadCoroHelper(SaveStateType stateType)
        {
            switch (stateType)
            {
            case SaveStateType.File:
                if (saveStateFiles.ContainsKey(currentStateSlot))
                {
                    saveStateFiles.Remove(currentStateSlot);
                }
                saveStateFiles.Add(currentStateSlot, new SaveState());
                saveStateFiles[currentStateSlot].LoadStateFromFile(currentStateSlot);
                quickState.data = saveStateFiles[currentStateSlot].DeepCopy();
                break;

            case SaveStateType.SkipOne:
                if (saveStateFiles.ContainsKey(currentStateSlot))
                {
                    saveStateFiles.Remove(currentStateSlot);
                }
                saveStateFiles.Add(currentStateSlot, new SaveState());
                saveStateFiles[currentStateSlot].NewLoadStateFromFile();
                break;

            default:
                break;
            }
        }
示例#2
0
        // Todo: cleanup Adds and Removes, because used to C++ :)
        private void SaveCoroHelper(SaveStateType stateType)
        {
            switch (stateType)
            {
            case SaveStateType.File:
                if (quickState == null || !quickState.IsSet())
                {
                    quickState.SaveTempState();
                }
                if (saveStateFiles.ContainsKey(currentStateSlot))
                {
                    saveStateFiles.Remove(currentStateSlot);
                }
                saveStateFiles.Add(currentStateSlot, new SaveState());
                saveStateFiles[currentStateSlot].data = quickState.DeepCopy();
                saveStateFiles[currentStateSlot].SaveStateToFile(currentStateSlot);
                break;

            case SaveStateType.SkipOne:
                if (saveStateFiles.ContainsKey(currentStateSlot))
                {
                    saveStateFiles.Remove(currentStateSlot);
                }
                saveStateFiles.Add(currentStateSlot, new SaveState());
                saveStateFiles[currentStateSlot].NewSaveStateToFile(currentStateSlot);
                break;

            default:
                break;
            }
        }
示例#3
0
        public void LoadState(SaveStateType stateType)
        {
            switch (stateType)
            {
            case SaveStateType.Memory:
                if (quickState.IsSet())
                {
                    quickState.LoadTempState();
                }
                else
                {
                    Console.AddLine("No save state active");
                }
                break;

            case SaveStateType.File or SaveStateType.SkipOne:
                if (!inSelectSlotState)
                {
                    RefreshStateMenu();
                    GameManager.instance.StartCoroutine(SelectSlot(false, stateType));
                }
                break;

            default:
                break;
            }
        }
示例#4
0
    public SaveState getSaveState(SaveStateType type)
    {
        if (persistent == null || midlevels == null || midlevels.Length < Get.midlevel_savegames)
        {
            InitNewGame(summary.id, summary.name);
        }

        if (type == SaveStateType.MidLevel)
        {
            return(getLatestMidLevel());
        }
        else
        {
            return(persistent);
        }
    }
示例#5
0
        public void SaveState(SaveStateType stateType)
        {
            switch (stateType)
            {
            case SaveStateType.Memory:
                quickState.SaveTempState();
                break;

            case SaveStateType.File or SaveStateType.SkipOne:
                if (!inSelectSlotState)
                {
                    RefreshStateMenu();
                    GameManager.instance.StartCoroutine(SelectSlot(true, stateType));
                }
                break;

            default: break;
            }
        }
示例#6
0
        private IEnumerator SelectSlot(bool save, SaveStateType stateType)
        {
            switch (stateType)
            {
            case SaveStateType.Memory:
                currentStateOperation = save ? "Quickslot (save)" : "Quickslot (load)";
                break;

            case SaveStateType.File:
                currentStateOperation = save ? "Quickslot save to file" : "Load file to quickslot";
                break;

            case SaveStateType.SkipOne:
                currentStateOperation = save ? "Save new state to file" : "Load new state from file";
                break;

            default:
                //DebugMod.instance.LogError("SelectSlot ended started");
                throw new ArgumentException("Helper func SelectSlot requires `bool` and `SaveStateType` to proceed the savestate process");
            }

            if (DebugMod.settings.binds.TryGetValue(currentStateOperation, out int keycode))
            {
                DebugMod.alphaKeyDict.Add((KeyCode)keycode, keycode);
            }
            else
            {
                throw new Exception("Helper func SelectSlot could not find a binding for the `" + currentStateOperation + "` savestate process");
            }

            yield return(null);

            timeoutHelper = DateTime.Now.AddSeconds(timeoutAmount);
            DebugMod.settings.SaveStatePanelVisible = inSelectSlotState = true;
            yield return(new WaitUntil(DidInput));

            if (GUIController.didInput && !GUIController.inputEsc)
            {
                if (currentStateSlot >= 0 && currentStateSlot < maxSaveStates)
                {
                    if (save)
                    {
                        SaveCoroHelper(stateType);
                    }
                    else
                    {
                        LoadCoroHelper(stateType);
                    }
                }
            }
            else
            {
                if (GUIController.didInput)
                {
                    Console.AddLine("Savestate action cancelled");
                }
                else
                {
                    Console.AddLine("Timeout (" + timeoutAmount.ToString() + ")s was reached");
                }
            }

            DebugMod.alphaKeyDict.Remove((KeyCode)keycode);
            currentStateOperation  = null;
            GUIController.inputEsc = GUIController.didInput = false;
            DebugMod.settings.SaveStatePanelVisible = inSelectSlotState = false;
        }