CreatureLib/src/Battling/ScriptHandling/Script.hpp

46 lines
1.6 KiB
C++
Raw Normal View History

#ifndef CREATURELIB_SCRIPT_HPP
#define CREATURELIB_SCRIPT_HPP
#include <any>
#include <string>
#include <utility>
#include <vector>
namespace CreatureLib::Battling{
class BaseTurnChoice;
2019-11-23 10:53:00 +00:00
class AttackTurnChoice;
2019-11-09 11:15:45 +00:00
class ExecutingAttack;
class Creature;
class Script{
const std::string _name;
public:
explicit Script(std::string name) :_name(std::move(name)){}
virtual ~Script() = default;
virtual void Stack(){};
const std::string& GetName(){
return _name;
}
2019-11-09 11:15:45 +00:00
virtual void OnBeforeTurn(const BaseTurnChoice* choice){};
2019-11-23 10:53:00 +00:00
virtual void ChangeAttack(AttackTurnChoice* choice, std::string& attack){};
virtual void PreventAttack(ExecutingAttack* attack,bool& result){};
2019-11-09 11:55:48 +00:00
virtual void FailIncomingAttack(ExecutingAttack* attack, Creature* target, bool& result){};
virtual void IsInvulnerable(ExecutingAttack* attack, Creature* target , bool& result){};
2019-11-09 11:15:45 +00:00
virtual void OnAttackMiss(ExecutingAttack* attack, Creature* target){};
2019-11-09 11:55:48 +00:00
virtual void ChangeAttackType(ExecutingAttack* attack, Creature* target, uint8_t hitNumber, uint8_t& type){};
virtual void OnStatusMove(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber){};
virtual void PreventSecondaryEffects(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber, bool& result){};
virtual void OnSecondaryEffect(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber){};
virtual void OnAfterHits(const ExecutingAttack* attack, Creature* target){};
};
}
#endif //CREATURELIB_SCRIPT_HPP