#pragma once #include "al/factory/Factory.h" #include "server/gamemode/GameModeBase.hpp" #include "server/gamemode/modifiers/GravityModifier.hpp" #include "server/gamemode/modifiers/ModeModifierBase.hpp" #include "server/gamemode/modifiers/NoCapModifier.hpp" typedef ModeModifierBase* (*createMod)(GameModeBase* mode); template ModeModifierBase* createModifier(GameModeBase* mode) { return new T(mode); }; __attribute((used)) constexpr al::NameToCreator modifierTable[] = { {"Gravity", &createModifier}, {"NoCap", &createModifier} }; constexpr const char* modifierNames[] = { "Sticky Gravity", "Cappy-Less" }; class ModifierFactory : public al::Factory { public: ModifierFactory(const char *fName) { this->factoryName = fName; this->actorTable = modifierTable; this->factoryCount = sizeof(modifierTable)/sizeof(modifierTable[0]); }; };