/*
 * skill.hpp
 *
 *  Created on: 17/06/2013
 *      Author: timothyw
 */

#ifndef VICTIMID_SKILL_HPP_
#define VICTIMID_SKILL_HPP_

#include "class.hpp"

using namespace crosbot;

namespace casualty {

class VicIdSkill : public crosbot::HandledObject {
public:
    VicIdSkill(std::string name) : name(name), rerun(false) {};
    ~VicIdSkill() {};

    inline std::string getName() {
        return name;
    }

    inline bool getRerun() {
        return rerun;
    }

    // Start the skill executing
    virtual void start() = 0;
    // Stop the skill
    virtual void stop() = 0;

    // Test for skill equality. This is so skills aren't stopped/started needlessly
    virtual bool equals(VicIdSkill& other) = 0;

protected:
    std::string name;
    bool rerun;
};
typedef crosbot::Handle<VicIdSkill> VicIdSkillPtr;

} // namespace casualty

#endif /* VICTIMID_SKILL_HPP_ */
