#ifndef COMMAND_H #define COMMAND_H #include namespace Category { enum Type { None = 0, Scene = 1 << 0, Player = 1 << 1, Enemy = 1 << 2 }; } class SceneNode; namespace sf { class Time; } struct Command { std::function action; Category::Type category; }; template std::function derivedAction(Functon func) { return [=] (SceneNode& node, const sf::Time& time) { //assert(dynamic_cast(&node)); func(static_cast(node), time); }; } #endif // COMMAND_H