diff --git a/src/openrct2/actions/GameActionRegistry.cpp b/src/openrct2/actions/GameActionRegistry.cpp index 68256d2919..71d776b836 100644 --- a/src/openrct2/actions/GameActionRegistry.cpp +++ b/src/openrct2/actions/GameActionRegistry.cpp @@ -102,16 +102,20 @@ namespace GameActions using GameActionRegistry = std::array; - static constexpr void Register(GameActionRegistry& registry, GameCommand id, GameActionFactory factory, const char* name) + template + static constexpr void Register(GameActionRegistry& registry, GameActionFactory factory, const char* name) { - const auto idx = static_cast(id); + constexpr auto idx = static_cast(TId); + + static_assert(idx < EnumValue(GameCommand::Count)); + registry[idx] = { factory, name }; } template static constexpr void Register(GameActionRegistry& registry, const char* name) { GameActionFactory factory = []() -> GameAction* { return new T(); }; - Register(registry, T::TYPE, factory, name); + Register(registry, factory, name); } static constexpr GameActionRegistry BuildRegistry()