public static void HandleSignal(string signal) { switch (signal) { case "reload": if (FramesTillUnlockReload == 0) { iniFlagCache.Clear(); FramesTillNextSend = 0; Randomizer.Client.Connect(); SeedController.ReadSeed(); if (InterOp.get_game_state() == GameState.Game) { PsuedoLocs.RELOAD_SEED.OnCollect(); } FramesTillUnlockReload = 120; } break; case "lastPickup": FramesTillNextSend = 1; // the only reason this isn't = 0 is that spamming this could get really annoying MessageQueue.Enqueue(Last); break; case "progressAndHints": HintsController.ProgressWithHints(); break; case "dev": Randomizer.Dev = !Randomizer.Dev; Randomizer.Log($"Dev: {Randomizer.Dev}"); break; case "exitapp": Environment.Exit(Environment.ExitCode); break; case "toggleDebug": InterOp.set_debug_controls(!InterOp.get_debug_controls()); Print($"Debug {(InterOp.get_debug_controls() ? "enabled" : "disabled")}", toMessageLog: false); break; case "toggleCursorLock": Print($"Cursor Lock {(InterOp.toggle_cursorlock() ? "enabled" : "disabled")}", toMessageLog: false); break; case "binding1": PsuedoLocs.BINDING_ONE.OnCollect(); break; case "binding2": PsuedoLocs.BINDING_TWO.OnCollect(); break; case "binding3": PsuedoLocs.BINDING_THREE.OnCollect(); break; case "binding4": PsuedoLocs.BINDING_FOUR.OnCollect(); break; case "binding5": PsuedoLocs.BINDING_FIVE.OnCollect(); break; case "unlockSpoiers": if (SeedController.Settings.RaceMode) { return; // no cheat } UberSet.Bool(GameComplete, true); Print("spoiler unlocked", toMessageLog: false); break; case "tpCheat": if (SeedController.Settings.RaceMode) { return; // no cheat } tpCheatToggle = !tpCheatToggle; Print($"TPCheat {(tpCheatToggle ? "enabled" : "disabled")}", toMessageLog: false); break; case "warpCredits": if (UberGet.Bool(GameComplete)) { InterOp.start_credits(); } else { Print($"Credit warp not unlocked!", toMessageLog: false); } break; case "printCoords": var pos = InterOp.get_position(); Print($"{pos.X}, {pos.Y}", toMessageLog: false); break; case "nameSpoilerToggle": MapController.NameLabels = !MapController.NameLabels; Print($"Loc name labels {(MapController.NameLabels ? "enabled" : "disabled")}", toMessageLog: false); break; case "logicprovidertoggle": MapController.RustLogic = !MapController.RustLogic; Print($"Logic Provider: {(MapController.RustLogic ? "Rust" : "Java")}", toMessageLog: false); MapController.UpdateReachable(); break; default: Randomizer.Log($"Recieved unknown signal {signal}"); break; } }
public static void NewGameInit() { if (!InterOp.is_loading_game()) { InterOp.clear_quest_messages(); Randomizer.Log($"New Game Init - {SeedController.SeedName}", false); ShopController.SetCostsAfterInit(); foreach (UberState s in DefaultUberStates) { s.Write(); } foreach (UberState s in Kuberstates) { s.Write(); } foreach (UberState s in DialogAndRumors) { s.Write(); } if (SeedController.KSDoorsOpen) { foreach (UberState s in KeystoneDoors) { s.Write(); } } if (!AHK.IniFlag("ShowShortCutscenes")) { foreach (UberState s in ShortCutscenes) { s.Write(); } } if (!AHK.IniFlag("ShowLongCutscenes")) { foreach (UberState s in LongCutscenes) { s.Write(); } } InterOp.discover_everything(); if (SeedController.Settings.LegacySeedgen && !SeedController.Flags.Contains(Flag.NOSWORD)) { SaveController.SetAbility(AbilityType.SpiritEdge); var slotRaw = AHK.IniString("Misc", "SpawnSlot"); var slot = 0; if (slotRaw != string.Empty) { slot = slotRaw.ParseToInt("Spawn Slot Ini") - 1; if (slot > 2 || slot < 0) { AHK.Print($"Ignoring invalid slot specifier {slotRaw}", toMessageLog: false); slot = 0; } } InterOp.bind(slot, 1002); } if (PsuedoLocs.GAME_START.Pickup().NonEmpty) { Randomizer.InputUnlockCallback = () => { MapController.UpdateReachable(2000); PsuedoLocs.GAME_START.OnCollect(); InterOp.save(); }; } else { MapController.UpdateReachable(); } InterOp.set_shard_slots(3); InterOp.save(); NeedsNewGameInit = false; } }