diff --git a/mod_examples/add_building_basic.js b/mod_examples/add_building_basic.js index c06b5dd4..532455a1 100644 --- a/mod_examples/add_building_basic.js +++ b/mod_examples/add_building_basic.js @@ -56,10 +56,10 @@ registerMod(() => { }); // Add it to the regular toolbar - this.signals.hudElementInitialized.add(element => { - if (element.constructor.name === "HUDBuildingsToolbar") { - element.primaryBuildings.push(MetaDemoModBuilding); - } + this.modInterface.addNewBuildingToToolbar({ + toolbar: "regular", + location: "primary", + metaClass: MetaDemoModBuilding, }); } }; diff --git a/mod_examples/add_building_flipper.js b/mod_examples/add_building_flipper.js index b78283d6..1174823b 100644 --- a/mod_examples/add_building_flipper.js +++ b/mod_examples/add_building_flipper.js @@ -121,10 +121,10 @@ registerMod(() => { }); // Add it to the regular toolbar - this.signals.hudElementInitialized.add(element => { - if (element.constructor.name === "HUDBuildingsToolbar") { - element.primaryBuildings.push(MetaModFlipperBuilding); - } + this.modInterface.addNewBuildingToToolbar({ + toolbar: "regular", + location: "primary", + metaClass: MetaModFlipperBuilding, }); } }; diff --git a/mod_examples/combined.js b/mod_examples/combined.js index 54bf474a..c7d6c6b6 100644 --- a/mod_examples/combined.js +++ b/mod_examples/combined.js @@ -188,11 +188,10 @@ registerMod(() => { }); // Add it to the regular toolbar - this.signals.hudElementInitialized.add(element => { - if (element.constructor.name === "HUDBuildingsToolbar") { - // @ts-ignore - element.primaryBuildings.push(MetaDemoModBuilding); - } + this.modInterface.addNewBuildingToToolbar({ + toolbar: "regular", + location: "primary", + metaClass: MetaDemoModBuilding, }); // Register keybinding diff --git a/mod_examples/custom_theme.js b/mod_examples/custom_theme.js index b53016aa..328630a5 100644 --- a/mod_examples/custom_theme.js +++ b/mod_examples/custom_theme.js @@ -19,7 +19,6 @@ registerMod(() => { } init() { - console.log("CUSTOM GAME THEME NOW"); this.modInterface.registerGameTheme({ id: "my-theme", name: "My fancy theme", diff --git a/src/js/mods/mod_interface.js b/src/js/mods/mod_interface.js index 0e967990..eb27df21 100644 --- a/src/js/mods/mod_interface.js +++ b/src/js/mods/mod_interface.js @@ -344,4 +344,21 @@ export class ModInterface { }, }); } + + /** + * @param {object} param0 + * @param {"regular"|"wires"} param0.toolbar + * @param {"primary"|"secondary"} param0.location + * @param {typeof MetaBuilding} param0.metaClass + */ + addNewBuildingToToolbar({ toolbar, location, metaClass }) { + const hudElementName = toolbar === "wires" ? "HUDWiresToolbar" : "HUDBuildingsToolbar"; + const property = location === "secondary" ? "secondaryBuildings" : "primaryBuildings"; + + this.modLoader.signals.hudElementInitialized.add(element => { + if (element.constructor.name === hudElementName) { + element[property].push(metaClass); + } + }); + } }