mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2024-12-28 18:18:52 +00:00
6754b8d941
This reverts merge request !4178
90 lines
2.0 KiB
C++
90 lines
2.0 KiB
C++
#ifndef MWLUA_ENGINEEVENTS_H
|
|
#define MWLUA_ENGINEEVENTS_H
|
|
|
|
#include <variant>
|
|
|
|
#include <components/esm3/cellref.hpp> // defines RefNum that is used as a unique id
|
|
|
|
#include "../mwworld/cellstore.hpp"
|
|
|
|
namespace MWLua
|
|
{
|
|
class GlobalScripts;
|
|
|
|
class EngineEvents
|
|
{
|
|
public:
|
|
explicit EngineEvents(GlobalScripts& globalScripts)
|
|
: mGlobalScripts(globalScripts)
|
|
{
|
|
}
|
|
|
|
struct OnActive
|
|
{
|
|
ESM::RefNum mObject;
|
|
};
|
|
struct OnInactive
|
|
{
|
|
ESM::RefNum mObject;
|
|
};
|
|
struct OnTeleported
|
|
{
|
|
ESM::RefNum mObject;
|
|
};
|
|
struct OnActivate
|
|
{
|
|
ESM::RefNum mActor;
|
|
ESM::RefNum mObject;
|
|
};
|
|
struct OnUseItem
|
|
{
|
|
ESM::RefNum mActor;
|
|
ESM::RefNum mObject;
|
|
bool mForce;
|
|
};
|
|
struct OnConsume
|
|
{
|
|
ESM::RefNum mActor;
|
|
ESM::RefNum mConsumable;
|
|
};
|
|
struct OnNewExterior
|
|
{
|
|
MWWorld::CellStore& mCell;
|
|
};
|
|
struct OnAnimationTextKey
|
|
{
|
|
ESM::RefNum mActor;
|
|
std::string mGroupname;
|
|
std::string mKey;
|
|
};
|
|
struct OnSkillUse
|
|
{
|
|
ESM::RefNum mActor;
|
|
std::string mSkill;
|
|
int useType;
|
|
float scale;
|
|
};
|
|
struct OnSkillLevelUp
|
|
{
|
|
ESM::RefNum mActor;
|
|
std::string mSkill;
|
|
std::string mSource;
|
|
};
|
|
using Event = std::variant<OnActive, OnInactive, OnConsume, OnActivate, OnUseItem, OnNewExterior, OnTeleported,
|
|
OnAnimationTextKey, OnSkillUse, OnSkillLevelUp>;
|
|
|
|
void clear() { mQueue.clear(); }
|
|
void addToQueue(Event e) { mQueue.push_back(std::move(e)); }
|
|
void callEngineHandlers();
|
|
|
|
private:
|
|
class Visitor;
|
|
|
|
GlobalScripts& mGlobalScripts;
|
|
std::vector<Event> mQueue;
|
|
};
|
|
|
|
}
|
|
|
|
#endif // MWLUA_ENGINEEVENTS_H
|