#ifndef GAME_MWWORLD_ACTION_H #define GAME_MWWORLD_ACTION_H #include #include "ptr.hpp" namespace MWWorld { /// \brief Abstract base for actions class Action { std::string mSoundId; bool mKeepSound; Ptr mTarget; // not implemented Action (const Action& action); Action& operator= (const Action& action); /// @return true if the sound should be played, false if not (e.g. if the action is not allowed) virtual bool executeImp (const Ptr& actor) = 0; protected: const Ptr& getTarget() const; public: Action (bool keepSound = false, const Ptr& target = Ptr()); ///< \param keepSound Keep playing the sound even if the object the sound is played on is removed. virtual ~Action(); void execute (const Ptr& actor); void setSound (const std::string& id); }; } #endif