// When they enter the level to load into bool OnEnterTeleportLevel(string level) { if (Dicts.tpDict == null) { Dicts.InitTpDict(); } level = level.Replace(" ", ""); if (Dicts.tpDict.ContainsKey(level)) { TextEntryPopup locationPopup = InitTextEntryPopup(tpButton.addedTo, Manager <LocalizationManager> .Instance.GetText(TP_LOCATION_ENTRY_LOC_ID), (entry) => OnEnterTeleportLocation(level, entry), 2, null, CharsetFlags.Number | CharsetFlags.Dash); locationPopup.onBack += () => { locationPopup.gameObject.SetActive(false); tpButton.textEntryPopup.gameObject.SetActive(true); tpButton.textEntryPopup.StartCoroutine(tpButton.textEntryPopup.BackWhenBackButtonReleased()); }; tpButton.textEntryPopup.gameObject.SetActive(false); locationPopup.Init(string.Empty); locationPopup.gameObject.SetActive(true); locationPopup.transform.SetParent(tpButton.addedTo.transform.parent); tpButton.addedTo.gameObject.SetActive(false); Canvas.ForceUpdateCanvases(); locationPopup.initialSelection.GetComponent <UIObjectAudioHandler>().playAudio = false; EventSystem.current.SetSelectedGameObject(locationPopup.initialSelection); locationPopup.initialSelection.GetComponent <UIObjectAudioHandler>().playAudio = true; return(false); } Console.WriteLine("Teleport Level set to an invalid value"); return(false); }
static string GetLevelNameFromEnum(ELevel levelEnum) { if (Dicts.levelDict == null) { Dicts.InitLevelDict(); } foreach (KeyValuePair <string, string> kvp in Dicts.levelDict) { if (levelEnum.ToString().Equals(kvp.Value)) { return(kvp.Key); } } return(""); }
public override void Load() { On.InGameHud.OnGUI += InGameHud_OnGUI; On.PlayerController.CanJump += PlayerController_CanJump; On.PlayerController.Awake += PlayerController_Awake; On.PlayerController.ReceiveHit += PlayerController_ReceiveHit; On.Hittable.Awake += Hittable_Awake; On.PlayerController.Update += PlayerController_Update; #pragma warning disable RECS0026 // Possible unassigned object created by 'new' new Hook(get_PlayerShurikensInfo, get_PlayerShurikensHookInfo, this); // Stuff that doesn't always call orig(self) using (new DetourContext("TrainerRebornLast") { Before = { "*" } }) { On.PlayerController.Damage += PlayerController_Damage; On.RetroCamera.SnapPositionToCameraBounds += RetroCamera_SnapPositionToCameraBounds; } // Stuff that should always go first using (new DetourContext("TrainerRebornFirst") { After = { "*" } }) { On.PlayerController.CancelGraplou += PlayerController_CancelGraplou; On.PlayerController.CancelJumpCoroutine += PlayerController_CancelJumpCoroutine; On.PlayerKnockbackState.StateEnter += PlayerKnockbackState_StateEnter; On.PlayerKnockbackState.StateExecute += PlayerKnockbackState_StateExecute; On.PlayerKnockbackState.StateExit += PlayerKnockbackState_StateExit; } infHealthButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(INF_HEALTH_BUTTON_LOC_ID), OnInfHealth, (b) => infHealth); infShurikenButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(INF_SHURIKEN_BUTTON_LOC_ID), OnInfShuriken, (b) => infShuriken); infJumpButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(INF_JUMP_BUTTON_LOC_ID), OnInfJump, (b) => infJump); noKnockbackButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(NO_KNOCKBACK_BUTTON_LOC_ID), OnNoKnockback, (b) => noKnockback); noBoundsButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(NO_BOUNDS_BUTTON_LOC_ID), OnNoBounds, (b) => noBounds); debugPosButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(DEBUG_POS_BUTTON_LOC_ID), OnDebugPos, (b) => debugPos); debugBossButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(DEBUG_BOSS_BUTTON_LOC_ID), OnDebugBoss, (b) => debugBoss); toggleCollisionsButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(TOGGLE_COLLISIONS_BUTTON_LOC_ID), OnToggleCollisions, (b) => !collisionsDisabled); secondQuestButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(SECOND_QUEST_BUTTON_LOC_ID), OnSecondQuest, (b) => Manager <ProgressionManager> .Instance.secondQuest); showHitboxesButton = Courier.UI.RegisterToggleModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(SHOW_HITBOXES_BUTTON_LOC_ID), OnShowHitboxes, (b) => hitboxesShown); speedMultButton = Courier.UI.RegisterTextEntryModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(SPEED_MULT_BUTTON_LOC_ID), OnEnterSpeed, 4, null, () => Manager <PlayerManager> .Instance?.Player?.RunSpeedMultiplier.ToString() ?? "" + speedMult, CharsetFlags.Number | CharsetFlags.Dot); debugTextColorButton = Courier.UI.RegisterTextEntryModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(DEBUG_TEXT_COLOR_BUTTON_LOC_ID), OnEnterDebugTextColor, 7, null, () => "", CharsetFlags.Letter); tpButton = Courier.UI.RegisterTextEntryModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(TP_BUTTON_LOC_ID), OnEnterTeleportLevel, 17, () => Manager <LocalizationManager> .Instance.GetText(TP_LEVEL_ENTRY_LOC_ID), () => GetLevelNameFromEnum(Manager <LevelManager> .Instance?.GetCurrentLevelEnum() ?? ELevel.NONE), CharsetFlags.Letter); getItemButton = Courier.UI.RegisterTextEntryModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(GET_ITEM_BUTTON_LOC_ID), OnEnterItemToGive, 16, () => Manager <LocalizationManager> .Instance.GetText(ITEM_NAME_ENTRY_LOC_ID), () => "", CharsetFlags.Letter); reloadButton = Courier.UI.RegisterSubMenuModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(RELOAD_BUTTON_LOC_ID), OnReloadButton); saveButton = Courier.UI.RegisterSubMenuModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(SAVE_BUTTON_LOC_ID), OnSaveButton); switchDimensionButton = Courier.UI.RegisterSubMenuModOptionButton(() => Manager <LocalizationManager> .Instance.GetText(Manager <DimensionManager> .Instance?.CurrentDimension == EBits.BITS_8 ? SWITCH_DIMENSION_TO_16_LOC_ID : SWITCH_DIMENSION_TO_8_LOC_ID), OnSwitchDimensionButton); // Disable certain features until we enter the level secondQuestButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE; tpButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE; getItemButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE; reloadButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE; saveButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE; switchDimensionButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE; // Save keybindings for save and reload to the save file Courier.ModOptionSaveData.Add(new CharacterOptionSaveMethod("BrokemiaTrainerRebornReloadBinding", () => reloadKeyBinding, (val) => reloadKeyBinding = char.ToLower(val))); Courier.ModOptionSaveData.Add(new CharacterOptionSaveMethod("BrokemiaTrainerRebornSaveBinding", () => saveKeyBinding, (val) => saveKeyBinding = char.ToLower(val))); if (Dicts.tpDict == null) { Dicts.InitTpDict(); } if (Dicts.itemDict == null) { Dicts.InitItemDict(); } if (Dicts.levelDict == null) { Dicts.InitLevelDict(); } }