/// <inheritdoc cref="IGameLoopEvents.GameLaunched"/> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnGameLaunched(object sender, GameLaunchedEventArgs e) { var capi = this.Helper.ModRegistry.GetApi <IGenericModConfigMenuApi>("spacechase0.GenericModConfigMenu"); if (capi != null) { capi.RegisterModConfig(this.ModManifest, () => Mod.Config = new Configuration(), () => this.Helper.WriteConfig(Mod.Config)); capi.RegisterSimpleOption(this.ModManifest, "Altar Location", "The (internal) name of the location the magic altar should be placed at.", () => Mod.Config.AltarLocation, (string val) => Mod.Config.AltarLocation = val); capi.RegisterSimpleOption(this.ModManifest, "Altar X", "The X tile position of where the magic altar should be placed.", () => Mod.Config.AltarX, (int val) => Mod.Config.AltarX = val); capi.RegisterSimpleOption(this.ModManifest, "Altar Y", "The Y tile position of where the magic altar should be placed.", () => Mod.Config.AltarY, (int val) => Mod.Config.AltarY = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Cast", "The key to initiate casting a spell.", () => Mod.Config.Key_Cast, (SButton val) => Mod.Config.Key_Cast = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Swap Spells", "The key to swap spell sets.", () => Mod.Config.Key_SwapSpells, (SButton val) => Mod.Config.Key_SwapSpells = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Spell 1", "The key for spell 1.", () => Mod.Config.Key_Spell1, (SButton val) => Mod.Config.Key_Spell1 = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Spell 2", "The key for spell 2.", () => Mod.Config.Key_Spell2, (SButton val) => Mod.Config.Key_Spell2 = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Spell 3", "The key for spell 3.", () => Mod.Config.Key_Spell3, (SButton val) => Mod.Config.Key_Spell3 = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Spell 4", "The key for spell 4.", () => Mod.Config.Key_Spell4, (SButton val) => Mod.Config.Key_Spell4 = val); capi.RegisterSimpleOption(this.ModManifest, "Key: Spell 5", "The key for spell 5.", () => Mod.Config.Key_Spell5, (SButton val) => Mod.Config.Key_Spell5 = val); } var api2 = this.Helper.ModRegistry.GetApi <IManaBarApi>("spacechase0.ManaBar"); if (api2 == null) { Log.Error("No mana bar API???"); return; } Mod.Mana = api2; var api = this.Helper.ModRegistry.GetApi <JsonAssetsApi>("spacechase0.JsonAssets"); if (api == null) { Log.Error("No Json Assets API???"); return; } Mod.Ja = api; api.LoadAssets(Path.Combine(this.Helper.DirectoryPath, "assets")); }
/********* ** Private methods *********/ /// <inheritdoc cref="IGameLoopEvents.GameLaunched"/> /// <param name="sender">The event sender.</param> /// <param name="e">The event arguments.</param> private void OnGameLaunched(object sender, GameLaunchedEventArgs e) { // hook Generic Mod Config Menu { var configMenu = this.Helper.ModRegistry.GetGenericModConfigMenuApi(this.Monitor); if (configMenu != null) { configMenu.Register( mod: this.ModManifest, reset: () => Mod.Config = new Configuration(), save: () => this.Helper.WriteConfig(Mod.Config), titleScreenOnly: true ); // altar placement configMenu.AddSectionTitle(this.ModManifest, I18n.Config_AltarPlacement); configMenu.AddTextOption( mod: this.ModManifest, name: I18n.Config_Location_Name, tooltip: I18n.Config_Location_Tooltip, getValue: () => Mod.Config.AltarLocation, setValue: value => Mod.Config.AltarLocation = value ); configMenu.AddNumberOption( mod: this.ModManifest, name: I18n.Config_X_Name, tooltip: I18n.Config_X_Tooltip, getValue: () => Mod.Config.AltarX, setValue: value => Mod.Config.AltarX = value, min: -1, max: 255, formatValue: value => value < 0 ? I18n.Config_XOrY_AutomaticPosition() : value.ToString() ); configMenu.AddNumberOption( mod: this.ModManifest, name: I18n.Config_Y_Name, tooltip: I18n.Config_Y_Tooltip, getValue: () => Mod.Config.AltarY, setValue: value => Mod.Config.AltarY = value, min: -1, max: 255, formatValue: value => value < 0 ? I18n.Config_XOrY_AutomaticPosition() : value.ToString() ); // radio placement configMenu.AddSectionTitle(this.ModManifest, I18n.Config_RadioPlacement); configMenu.AddTextOption( mod: this.ModManifest, name: I18n.Config_Location_Name, tooltip: I18n.Config_Location_Tooltip, getValue: () => Mod.Config.RadioLocation, setValue: value => Mod.Config.RadioLocation = value ); configMenu.AddNumberOption( mod: this.ModManifest, name: I18n.Config_X_Name, tooltip: I18n.Config_X_Tooltip, getValue: () => Mod.Config.RadioX, setValue: value => Mod.Config.RadioX = value, min: -1, max: 255, formatValue: value => value < 0 ? I18n.Config_XOrY_AutomaticPosition() : value.ToString() ); configMenu.AddNumberOption( mod: this.ModManifest, name: I18n.Config_Y_Name, tooltip: I18n.Config_Y_Tooltip, getValue: () => Mod.Config.RadioY, setValue: value => Mod.Config.RadioY = value, min: -1, max: 255, formatValue: value => value < 0 ? I18n.Config_XOrY_AutomaticPosition() : value.ToString() ); // controls configMenu.AddSectionTitle(this.ModManifest, I18n.Config_Controls); configMenu.AddKeybind( mod: this.ModManifest, name: I18n.Config_CastKey_Name, tooltip: I18n.Config_CastKey_Tooltip, getValue: () => Mod.Config.Key_Cast, setValue: value => Mod.Config.Key_Cast = value ); configMenu.AddKeybind( mod: this.ModManifest, name: I18n.Config_SwapSpellsKey_Name, tooltip: I18n.Config_SwapSpellsKey_Tooltip, getValue: () => Mod.Config.Key_SwapSpells, setValue: value => Mod.Config.Key_SwapSpells = value ); configMenu.AddKeybind( mod: this.ModManifest, name: () => I18n.Config_SelectSpellKey_Name(slotNumber: 1), tooltip: () => I18n.Config_SelectSpellKey_Tooltip(slotNumber: 1), getValue: () => Mod.Config.Key_Spell1, setValue: value => Mod.Config.Key_Spell1 = value ); configMenu.AddKeybind( mod: this.ModManifest, name: () => I18n.Config_SelectSpellKey_Name(slotNumber: 2), tooltip: () => I18n.Config_SelectSpellKey_Tooltip(slotNumber: 2), getValue: () => Mod.Config.Key_Spell2, setValue: value => Mod.Config.Key_Spell2 = value ); configMenu.AddKeybind( mod: this.ModManifest, name: () => I18n.Config_SelectSpellKey_Name(slotNumber: 3), tooltip: () => I18n.Config_SelectSpellKey_Tooltip(slotNumber: 3), getValue: () => Mod.Config.Key_Spell3, setValue: value => Mod.Config.Key_Spell3 = value ); configMenu.AddKeybind( mod: this.ModManifest, name: () => I18n.Config_SelectSpellKey_Name(slotNumber: 4), tooltip: () => I18n.Config_SelectSpellKey_Tooltip(slotNumber: 4), getValue: () => Mod.Config.Key_Spell4, setValue: value => Mod.Config.Key_Spell4 = value ); configMenu.AddKeybind( mod: this.ModManifest, name: () => I18n.Config_SelectSpellKey_Name(slotNumber: 5), tooltip: () => I18n.Config_SelectSpellKey_Tooltip(slotNumber: 5), getValue: () => Mod.Config.Key_Spell5, setValue: value => Mod.Config.Key_Spell5 = value ); } } // hook Mana Bar { var manaBar = this.Helper.ModRegistry.GetApi <IManaBarApi>("spacechase0.ManaBar"); if (manaBar == null) { Log.Error("No mana bar API???"); return; } Mod.Mana = manaBar; } // hook Json Assets { var api = this.Helper.ModRegistry.GetApi <IJsonAssetsApi>("spacechase0.JsonAssets"); if (api == null) { Log.Error("No Json Assets API???"); return; } Mod.Ja = api; api.LoadAssets(Path.Combine(this.Helper.DirectoryPath, "assets", "json-assets"), this.Helper.Translation); } }