#pragma once #include "GameTypes.h" #include "GameReferences.h" template class IHandlerFunctor { public: virtual ~IHandlerFunctor(); virtual UInt8 Process(FormT * form, DataT unk04); // pure BSIntrusiveRefCounted refCount; }; template<> class IHandlerFunctor { public: virtual ~IHandlerFunctor(); virtual UInt8 Process(Actor * form, UInt32 unk04); // pure template UInt8 ProcessAction(Actor * form, UInt32 unk04); }; // All member functions below are merely the original vtbl function address class WeaponRightSwingHandler : public IHandlerFunctor { public: virtual ~WeaponRightSwingHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(WeaponRightSwingHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C500, Actor * form, UInt32 unk04); }; class WeaponLeftSwingHandler : public IHandlerFunctor { public: virtual ~WeaponLeftSwingHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(WeaponLeftSwingHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C590, Actor * form, UInt32 unk04); }; class RightHandSpellFireHandler : public IHandlerFunctor { public: virtual ~RightHandSpellFireHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(RightHandSpellFireHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C750, Actor * form, UInt32 unk04); }; class LeftHandSpellFireHandler : public IHandlerFunctor { public: virtual ~LeftHandSpellFireHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(LeftHandSpellFireHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C700, Actor * form, UInt32 unk04); }; class RightHandSpellCastHandler : public IHandlerFunctor { public: virtual ~RightHandSpellCastHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(RightHandSpellCastHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C910, Actor * form, UInt32 unk04); }; class LeftHandSpellCastHandler : public IHandlerFunctor { public: virtual ~LeftHandSpellCastHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(LeftHandSpellCastHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C8C0, Actor * form, UInt32 unk04); }; class VoiceSpellCastHandler : public IHandlerFunctor { public: virtual ~VoiceSpellCastHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(VoiceSpellCastHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C960, Actor * form, UInt32 unk04); }; class VoiceSpellFireHandler : public IHandlerFunctor { public: virtual ~VoiceSpellFireHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(VoiceSpellFireHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C7A0, Actor * form, UInt32 unk04); }; class BowDrawnHandler : public IHandlerFunctor { public: virtual ~BowDrawnHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(BowDrawnHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074DBC0, Actor * form, UInt32 unk04); }; class BowReleaseHandler : public IHandlerFunctor { public: virtual ~BowReleaseHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(BowReleaseHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074DBE0, Actor * form, UInt32 unk04); }; class WeaponBeginDrawRightHandler : public IHandlerFunctor { public: virtual ~WeaponBeginDrawRightHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(WeaponBeginDrawRightHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074C9F0, Actor * form, UInt32 unk04); }; class WeaponBeginSheatheRightHandler : public IHandlerFunctor { public: virtual ~WeaponBeginSheatheRightHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(WeaponBeginSheatheRightHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074CAA0, Actor * form, UInt32 unk04); }; class RightHandWeaponDrawHandler : public IHandlerFunctor { public: virtual ~RightHandWeaponDrawHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(RightHandWeaponDrawHandler); DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074CB10, Actor * form, UInt32 unk04); }; class RightHandWeaponSheatheHandler : public IHandlerFunctor { public: virtual ~RightHandWeaponSheatheHandler(); virtual UInt8 Process(Actor * form, UInt32 unk04); MEMBER_FN_PREFIX(RightHandWeaponSheatheHandler); // ??_7RightHandWeaponSheatheHandler@@6B@ + 8 DEFINE_MEMBER_FN(Process_Origin, UInt8, 0x0074CC70, Actor * form, UInt32 unk04); };