public override void Load()
        {
            switchSkinButton   = Courier.UI.RegisterMultipleModOptionButton(() => "Switch Skin", null, ChangeSkin, GetSkinIndex, GetTextForSkinIndex);
            rainbowModeButton  = Courier.UI.RegisterToggleModOptionButton(() => "Rainbow Mode", OnRainbowModeToggle, (b) => rainbowMode);
            rainbowSpeedButton = Courier.UI.RegisterTextEntryModOptionButton(() => "Rainbow Speed", OnRainbowSpeedEntry, 3, null, () => rainbowSpeedMultiplier.ToString(), TextEntryButtonInfo.CharsetFlags.Dot | TextEntryButtonInfo.CharsetFlags.Number);

            switchSkinButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() != ELevel.NONE;

            Courier.Events.PlayerController.OnUpdate += PlayerController_OnUpdate;
        }
        public override void Load()
        {
            _hardcoreDealModeButton = Courier.UI.RegisterToggleModOptionButton(() => "Hardcore Deal", OnHardcoreModeToggle, b => _hcMode);

            On.SaveGameSelectionScreen.OnLoadGame += SaveGameSelectionScreen_OnLoadGame;

            On.InventoryManager.AddItem += InventoryManagerOnAddItem;

            On.PlayerController.ReceiveHit += PlayerController_ReceiveHit;
            On.Enemy.ReceiveHit            += EnemyOnReceiveHit;
            On.TotemBoss.OnReceiveHit      += TotemBossOnOnReceiveHit;

            On.Quarble.OnPlayerDied += QuarbleOnOnPlayerDied;
        }
Beispiel #3
0
        public override void Load()
        {
            base.Load();
            leafGolemButton    = Courier.UI.RegisterToggleModOptionButton(() => "Hard Leaf Golem", HardLeafGolem.Toggle, (t) => HardLeafGolem.Enabled);
            necromancerButton  = Courier.UI.RegisterToggleModOptionButton(() => "Hard Ruxxtin", HardNecromancer.Toggle, (t) => HardNecromancer.Enabled);
            bambooCreekButton  = Courier.UI.RegisterToggleModOptionButton(() => "Hard Bamboo Creek Boss", HardBambooCreek.Toggle, (t) => HardBambooCreek.Enabled);
            emeraldGolemButton = Courier.UI.RegisterToggleModOptionButton(() => "Hard Emerald Golem", HardEmeraldGolem.Toggle, (t) => HardEmeraldGolem.Enabled);

            // Disable the toggles if in-level
            // Some of these need to be applied before anything is loaded
            // For example, stuff runs in the Start() method for Emerald Golem
            leafGolemButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() == ELevel.NONE;

            necromancerButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() == ELevel.NONE;

            bambooCreekButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() == ELevel.NONE;

            emeraldGolemButton.IsEnabled = () => Manager <LevelManager> .Instance.GetCurrentLevelEnum() == ELevel.NONE;

            leafGolemButton.SaveMethod = new BooleanOptionSaveMethod("HarderBossesLeafGolem", () => HardLeafGolem.Enabled, (b) => {
                HardLeafGolem.Unload();
                if (HardLeafGolem.Enabled = b)
                {
                    HardLeafGolem.Load();
                }
            });
            necromancerButton.SaveMethod = new BooleanOptionSaveMethod("HarderBossesNecromancer", () => HardNecromancer.Enabled, (b) => {
                HardNecromancer.Unload();
                if (HardNecromancer.Enabled = b)
                {
                    HardNecromancer.Load();
                }
            });
            bambooCreekButton.SaveMethod = new BooleanOptionSaveMethod("HarderBossesBambooCreek", () => HardBambooCreek.Enabled, (b) => {
                HardBambooCreek.Unload();
                if (HardBambooCreek.Enabled = b)
                {
                    HardBambooCreek.Load();
                }
            });
            emeraldGolemButton.SaveMethod = new BooleanOptionSaveMethod("HarderBossesEmeraldGolem", () => HardEmeraldGolem.Enabled, (b) => {
                HardEmeraldGolem.Unload();
                if (HardEmeraldGolem.Enabled = b)
                {
                    HardEmeraldGolem.Load();
                }
            });
        }
        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();
            }
        }