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; } }
// 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; } }
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; } }
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); } }
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; } }
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; }