1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 08:47:17 +01:00
SqMod/source/Core.hpp
Sandu Liviu Catalin 216ac8bbc0 Use unordered maps for storing script instances and options.
Also update some of the code to use braces even for single statements.
2016-03-26 18:16:01 +02:00

998 lines
40 KiB
C++

#ifndef _CORE_HPP_
#define _CORE_HPP_
// ------------------------------------------------------------------------------------------------
#include "Base/Shared.hpp"
// ------------------------------------------------------------------------------------------------
#include "Base/Shared.hpp"
#include "Base/Vector3.hpp"
#include "Base/Color4.hpp"
// ------------------------------------------------------------------------------------------------
#include <vector>
#include <unordered_map>
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
extern SQMOD_MANAGEDPTR_TYPE(Core) _Core;
/* ------------------------------------------------------------------------------------------------
* Core module class responsible for managing resources.
*/
class Core
{
protected:
/* --------------------------------------------------------------------------------------------
* Helper structure meant to track changes in player instances.
*/
struct PlayerTrack
{
PlayerTrack() : mWeapon(-1), mHealth(0), mArmour(0), mPosition()
{ /* ... */ }
Int32 mWeapon; /* Last used player weapon. */
Float32 mHealth; /* Last known player health. */
Float32 mArmour; /* Last known player armour */
Vector3 mPosition; /* Last known player position. */
};
/* --------------------------------------------------------------------------------------------
* Helper structure meant to track changes in vehicle instances.
*/
struct VehicleTrack
{
VehicleTrack() : mHealth(0), mPosition()
{ /* ... */ }
Float32 mHealth; /* Last known vehicle health. */
Vector3 mPosition; /* Last known vehicle position. */
};
// --------------------------------------------------------------------------------------------
typedef String MsgPrefix[SQMOD_PLAYER_MSG_PREFIXES];
/* --------------------------------------------------------------------------------------------
* ...
*/
struct BlipInst
{
BlipInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~BlipInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CBlip * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Int32 mWorld;
Int32 mScale;
// ----------------------------------------------------------------------------------------
Int32 mSprID;
// ----------------------------------------------------------------------------------------
Vector3 mPosition;
Color4 mColor;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct CheckpointInst
{
CheckpointInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~CheckpointInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CCheckpoint * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnEntered;
Function mOnExited;
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct ForcefieldInst
{
ForcefieldInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~ForcefieldInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CForcefield * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnEntered;
Function mOnExited;
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct KeybindInst
{
KeybindInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~KeybindInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CKeybind * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Int32 mFirst;
Int32 mSecond;
Int32 mThird;
Int32 mRelease;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnKeyPress;
Function mOnKeyRelease;
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct ObjectInst
{
ObjectInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~ObjectInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CObject * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnShot;
Function mOnBump;
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct PickupInst
{
PickupInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~PickupInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CPickup * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnRespawn;
Function mOnClaimed;
Function mOnCollected;
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct PlayerInst
{
PlayerInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~PlayerInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CPlayer * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Int32 mAuthority;
// ----------------------------------------------------------------------------------------
MsgPrefix mPrefixes;
// ----------------------------------------------------------------------------------------
Uint32 mMessageColor;
Int32 mAnnounceStyle;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnAway;
Function mOnGameKeys;
Function mOnRename;
Function mOnRequestClass;
Function mOnRequestSpawn;
Function mOnSpawn;
Function mOnStartTyping;
Function mOnStopTyping;
Function mOnChat;
Function mOnCommand;
Function mOnMessage;
Function mOnHealth;
Function mOnArmour;
Function mOnWeapon;
Function mOnMove;
Function mOnWasted;
Function mOnKilled;
Function mOnTeamKill;
Function mOnSpectate;
Function mOnCrashreport;
Function mOnBurning;
Function mOnCrouching;
Function mOnState;
Function mOnAction;
Function mOnStateNone;
Function mOnStateNormal;
Function mOnStateShooting;
Function mOnStateDriver;
Function mOnStatePassenger;
Function mOnStateEnterDriver;
Function mOnStateEnterPassenger;
Function mOnStateExitVehicle;
Function mOnStateUnspawned;
Function mOnActionNone;
Function mOnActionNormal;
Function mOnActionAiming;
Function mOnActionShooting;
Function mOnActionJumping;
Function mOnActionLieDown;
Function mOnActionGettingUp;
Function mOnActionJumpVehicle;
Function mOnActionDriving;
Function mOnActionDying;
Function mOnActionWasted;
Function mOnActionEmbarking;
Function mOnActionDisembarking;
Function mOnKeyPress;
Function mOnKeyRelease;
Function mOnEmbarking;
Function mOnEmbarked;
Function mOnDisembark;
Function mOnPickupClaimed;
Function mOnPickupCollected;
Function mOnObjectShot;
Function mOnObjectBump;
Function mOnCheckpointEntered;
Function mOnCheckpointExited;
Function mOnForcefieldEntered;
Function mOnForcefieldExited;
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct SpriteInst
{
SpriteInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~SpriteInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CSprite * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
String mPath;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct TextdrawInst
{
TextdrawInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~TextdrawInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CTextdraw * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
String mText;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
};
/* --------------------------------------------------------------------------------------------
* ...
*/
struct VehicleInst
{
VehicleInst() : mID(-1), mFlags(ENF_DEFAULT), mInst(NULL)
{ /* ... */ }
~VehicleInst();
// ----------------------------------------------------------------------------------------
Int32 mID;
Uint16 mFlags;
CVehicle * mInst;
Object mObj;
// ----------------------------------------------------------------------------------------
Function mOnDestroyed;
Function mOnCustom;
// ----------------------------------------------------------------------------------------
Function mOnRespawn;
Function mOnExplode;
Function mOnHealth;
Function mOnMove;
Function mOnEmbarking;
Function mOnEmbarked;
Function mOnDisembark;
};
public:
// --------------------------------------------------------------------------------------------
typedef std::vector< BlipInst > Blips;
typedef std::vector< CheckpointInst > Checkpoints;
typedef std::vector< ForcefieldInst > Forcefields;
typedef std::vector< KeybindInst > Keybinds;
typedef std::vector< ObjectInst > Objects;
typedef std::vector< PickupInst > Pickups;
typedef std::vector< PlayerInst > Players;
typedef std::vector< SpriteInst > Sprites;
typedef std::vector< TextdrawInst > Textdraws;
typedef std::vector< VehicleInst > Vehicles;
// --------------------------------------------------------------------------------------------
typedef PlayerTrack PlayerInstTrack[SQMOD_PLAYER_POOL];
typedef VehicleTrack VehicleInstTrack[SQMOD_VEHICLE_POOL];
// --------------------------------------------------------------------------------------------
typedef std::unordered_map< String, Script > Scripts;
typedef std::unordered_map< String, String > Options;
private:
// --------------------------------------------------------------------------------------------
Int32 m_State;
HSQUIRRELVM m_VM;
Scripts m_Scripts;
Options m_Options;
// --------------------------------------------------------------------------------------------
Blips m_Blips;
Checkpoints m_Checkpoints;
Forcefields m_Forcefields;
Keybinds m_Keybinds;
Objects m_Objects;
Pickups m_Pickups;
Players m_Players;
Sprites m_Sprites;
Textdraws m_Textdraws;
Vehicles m_Vehicles;
// --------------------------------------------------------------------------------------------
PlayerInstTrack m_PlayerTrack;
VehicleInstTrack m_VehicleTrack;
protected:
/* --------------------------------------------------------------------------------------------
* Default constructor.
*/
Core();
/* --------------------------------------------------------------------------------------------
* Copy constructor. (disabled)
*/
Core(const Core &);
/* --------------------------------------------------------------------------------------------
* Copy assignment operator. (disabled)
*/
Core & operator = (const Core &);
public:
/* --------------------------------------------------------------------------------------------
* Destructor.
*/
~Core();
/* --------------------------------------------------------------------------------------------
* Singleton retriever.
*/
static Core * Get()
{
if (!_Core)
{
_Core = SQMOD_MANAGEDPTR_MAKE(Core, new Core());
}
return SQMOD_MANAGEDPTR_GET(_Core);
}
/* --------------------------------------------------------------------------------------------
* Lifetime managers.
*/
bool Init();
bool Load();
void Terminate();
/* --------------------------------------------------------------------------------------------
* State mutators.
*/
void SetState(Int32 val)
{
m_State = val;
}
Int32 GetState() const
{
return m_State;
}
/* --------------------------------------------------------------------------------------------
* Option mutators.
*/
CSStr GetOption(CSStr name) const;
CSStr GetOption(CSStr name, CSStr value) const;
void SetOption(CSStr name, CSStr value);
/* --------------------------------------------------------------------------------------------
* Retrieve the virtual machine.
*/
HSQUIRRELVM GetVM() const
{
return m_VM;
}
/* --------------------------------------------------------------------------------------------
* Adds a script to the load queue.
*/
bool LoadScript(CSStr filepath);
protected:
/* --------------------------------------------------------------------------------------------
* Script output handlers.
*/
static void PrintFunc(HSQUIRRELVM vm, CSStr msg, ...);
static void ErrorFunc(HSQUIRRELVM vm, CSStr msg, ...);
/* --------------------------------------------------------------------------------------------
* Script error handlers.
*/
static SQInteger RuntimeErrorHandler(HSQUIRRELVM vm);
static void CompilerErrorHandler(HSQUIRRELVM vm, CSStr desc, CSStr src,
SQInteger line, SQInteger column);
/* --------------------------------------------------------------------------------------------
* Entity instance scaners.
*/
void ImportBlips();
void ImportCheckpoints();
void ImportForcefields();
void ImportKeybinds();
void ImportObjects();
void ImportPickups();
void ImportPlayers();
void ImportSprites();
void ImportTextdraws();
void ImportVehicles();
/* --------------------------------------------------------------------------------------------
* Instance allocators.
*/
Object & AllocBlip(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocCheckpoint(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocForcefield(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocKeybind(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocObject(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocPickup(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocSprite(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocTextdraw(Int32 id, bool owned, Int32 header, Object & payload);
Object & AllocVehicle(Int32 id, bool owned, Int32 header, Object & payload);
/* --------------------------------------------------------------------------------------------
* Instance deallocators.
*/
void DeallocBlip(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocCheckpoint(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocForcefield(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocKeybind(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocObject(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocPickup(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocSprite(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocTextdraw(Int32 id, bool destroy, Int32 header, Object & payload);
void DeallocVehicle(Int32 id, bool destroy, Int32 header, Object & payload);
public:
/* --------------------------------------------------------------------------------------------
* Instance creators.
*/
Object & NewBlip(Int32 index, Int32 world, Float32 x, Float32 y, Float32 z,
Int32 scale, Uint32 color, Int32 sprid,
Int32 header, Object & payload);
Object & NewCheckpoint(Int32 player, Int32 world, Float32 x, Float32 y, Float32 z,
Uint8 r, Uint8 g, Uint8 b, Uint8 a, Float32 radius,
Int32 header, Object & payload);
Object & NewForcefield(Int32 player, Int32 world, Float32 x, Float32 y, Float32 z,
Uint8 r, Uint8 g, Uint8 b, Float32 radius,
Int32 header, Object & payload);
Object & NewKeybind(Int32 slot, bool release,
Int32 primary, Int32 secondary, Int32 alternative,
Int32 header, Object & payload);
Object & NewObject(Int32 model, Int32 world, Float32 x, Float32 y, Float32 z,
Int32 alpha, Int32 header, Object & payload);
Object & NewPickup(Int32 model, Int32 world, Int32 quantity,
Float32 x, Float32 y, Float32 z, Int32 alpha, bool automatic,
Int32 header, Object & payload);
Object & NewSprite(Int32 index, CSStr file, Int32 xp, Int32 yp,
Int32 xr, Int32 yr, Float32 angle, Int32 alpha, bool rel,
Int32 header, Object & payload);
Object & NewTextdraw(Int32 index, CSStr text, Int32 xp, Int32 yp,
Uint32 color, bool rel, Int32 header, Object & payload);
Object & NewVehicle(Int32 model, Int32 world, Float32 x, Float32 y, Float32 z,
Float32 angle, Int32 primary, Int32 secondary,
Int32 header, Object & payload);
/* --------------------------------------------------------------------------------------------
* Instance destroyers.
*/
bool DelBlip(Int32 id, Int32 header, Object & payload);
bool DelCheckpoint(Int32 id, Int32 header, Object & payload);
bool DelForcefield(Int32 id, Int32 header, Object & payload);
bool DelKeybind(Int32 id, Int32 header, Object & payload);
bool DelObject(Int32 id, Int32 header, Object & payload);
bool DelPickup(Int32 id, Int32 header, Object & payload);
bool DelSprite(Int32 id, Int32 header, Object & payload);
bool DelTextdraw(Int32 id, Int32 header, Object & payload);
bool DelVehicle(Int32 id, Int32 header, Object & payload);
/* --------------------------------------------------------------------------------------------
* Instance retrievers.
*/
BlipInst & GetBlip(Int32 id) { return m_Blips.at(id); }
CheckpointInst & GetCheckpoint(Int32 id) { return m_Checkpoints.at(id); }
ForcefieldInst & GetForcefield(Int32 id) { return m_Forcefields.at(id); }
KeybindInst & GetKeybind(Int32 id) { return m_Keybinds.at(id); }
ObjectInst & GetObject(Int32 id) { return m_Objects.at(id); }
PickupInst & GetPickup(Int32 id) { return m_Pickups.at(id); }
PlayerInst & GetPlayer(Int32 id) { return m_Players.at(id); }
SpriteInst & GetSprite(Int32 id) { return m_Sprites.at(id); }
TextdrawInst & GetTextdraw(Int32 id) { return m_Textdraws.at(id); }
VehicleInst & GetVehicle(Int32 id) { return m_Vehicles.at(id); }
/* --------------------------------------------------------------------------------------------
* Pool retrievers.
*/
const Blips & GetBlips() const { return m_Blips; }
const Checkpoints & GetCheckpoints() const { return m_Checkpoints; }
const Forcefields & GetForcefields() const { return m_Forcefields; }
const Keybinds & GetKeybinds() const { return m_Keybinds; }
const Objects & GetObjects() const { return m_Objects; }
const Pickups & GetPickups() const { return m_Pickups; }
const Players & GetPlayers() const { return m_Players; }
const Sprites & GetSprites() const { return m_Sprites; }
const Textdraws & GetTextdraws() const { return m_Textdraws; }
const Vehicles & GetVehicles() const { return m_Vehicles; }
protected:
/* --------------------------------------------------------------------------------------------
* Instance cleaners.
*/
void ResetInst(BlipInst & inst);
void ResetInst(CheckpointInst & inst);
void ResetInst(ForcefieldInst & inst);
void ResetInst(KeybindInst & inst);
void ResetInst(ObjectInst & inst);
void ResetInst(PickupInst & inst);
void ResetInst(PlayerInst & inst);
void ResetInst(SpriteInst & inst);
void ResetInst(TextdrawInst & inst);
void ResetInst(VehicleInst & inst);
/* --------------------------------------------------------------------------------------------
* Bindings cleaners.
*/
void ResetFunc(BlipInst & inst);
void ResetFunc(CheckpointInst & inst);
void ResetFunc(ForcefieldInst & inst);
void ResetFunc(KeybindInst & inst);
void ResetFunc(ObjectInst & inst);
void ResetFunc(PickupInst & inst);
void ResetFunc(PlayerInst & inst);
void ResetFunc(SpriteInst & inst);
void ResetFunc(TextdrawInst & inst);
void ResetFunc(VehicleInst & inst);
void ResetFunc();
// --------------------------------------------------------------------------------------------
static void Emit(Function & func)
{
if (!func.IsNull())
func.Execute();
}
// --------------------------------------------------------------------------------------------
template < typename A1 >
static void Emit(Function & func, A1 a1)
{
if (!func.IsNull())
func.Execute(a1);
}
// --------------------------------------------------------------------------------------------
template < typename A1, typename A2 >
static void Emit(Function & func, A1 a1, A2 a2)
{
if (!func.IsNull())
func.Execute(a1, a2);
}
// --------------------------------------------------------------------------------------------
template < typename A1, typename A2, typename A3 >
static void Emit(Function & func, A1 a1, A2 a2, A3 a3)
{
if (!func.IsNull())
func.Execute(a1, a2, a3);
}
// --------------------------------------------------------------------------------------------
template < typename A1, typename A2, typename A3, typename A4 >
static void Emit(Function & func, A1 a1, A2 a2, A3 a3, A4 a4)
{
if (!func.IsNull())
func.Execute(a1, a2, a3, a4);
}
// --------------------------------------------------------------------------------------------
template < typename A1, typename A2, typename A3, typename A4, typename A5 >
static void Emit(Function & func, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{
if (!func.IsNull())
func.Execute(a1, a2, a3, a4, a5);
}
// --------------------------------------------------------------------------------------------
template < typename A1, typename A2, typename A3, typename A4, typename A5, typename A6 >
static void Emit(Function & func, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{
if (!func.IsNull())
func.Execute(a1, a2, a3, a4, a5, a6);
}
public:
/* --------------------------------------------------------------------------------------------
* Global event binder.
*/
void BindEvent(Int32 id, Object & env, Function & func);
/* --------------------------------------------------------------------------------------------
* Player lifetime management.
*/
void ConnectPlayer(Int32 id, Int32 header, Object & payload);
void DisconnectPlayer(Int32 id, Int32 header, Object & payload);
/* --------------------------------------------------------------------------------------------
* Event propagators.
*/
void EmitBlipCreated(Int32 blip, Int32 header, Object & payload);
void EmitCheckpointCreated(Int32 checkpoint, Int32 header, Object & payload);
void EmitForcefieldCreated(Int32 forcefield, Int32 header, Object & payload);
void EmitKeybindCreated(Int32 keybind, Int32 header, Object & payload);
void EmitObjectCreated(Int32 object, Int32 header, Object & payload);
void EmitPickupCreated(Int32 pickup, Int32 header, Object & payload);
void EmitPlayerCreated(Int32 player, Int32 header, Object & payload);
void EmitSpriteCreated(Int32 sprite, Int32 header, Object & payload);
void EmitTextdrawCreated(Int32 textdraw, Int32 header, Object & payload);
void EmitVehicleCreated(Int32 vehicle, Int32 header, Object & payload);
void EmitBlipDestroyed(Int32 blip, Int32 header, Object & payload);
void EmitCheckpointDestroyed(Int32 checkpoint, Int32 header, Object & payload);
void EmitForcefieldDestroyed(Int32 forcefield, Int32 header, Object & payload);
void EmitKeybindDestroyed(Int32 keybind, Int32 header, Object & payload);
void EmitObjectDestroyed(Int32 object, Int32 header, Object & payload);
void EmitPickupDestroyed(Int32 pickup, Int32 header, Object & payload);
void EmitPlayerDestroyed(Int32 player, Int32 header, Object & payload);
void EmitSpriteDestroyed(Int32 sprite, Int32 header, Object & payload);
void EmitTextdrawDestroyed(Int32 textdraw, Int32 header, Object & payload);
void EmitVehicleDestroyed(Int32 vehicle, Int32 header, Object & payload);
void EmitBlipCustom(Int32 blip, Int32 header, Object & payload);
void EmitCheckpointCustom(Int32 checkpoint, Int32 header, Object & payload);
void EmitForcefieldCustom(Int32 forcefield, Int32 header, Object & payload);
void EmitKeybindCustom(Int32 keybind, Int32 header, Object & payload);
void EmitObjectCustom(Int32 object, Int32 header, Object & payload);
void EmitPickupCustom(Int32 pickup, Int32 header, Object & payload);
void EmitPlayerCustom(Int32 player, Int32 header, Object & payload);
void EmitSpriteCustom(Int32 sprite, Int32 header, Object & payload);
void EmitTextdrawCustom(Int32 textdraw, Int32 header, Object & payload);
void EmitVehicleCustom(Int32 vehicle, Int32 header, Object & payload);
void EmitPlayerAway(Int32 player, bool status);
void EmitPlayerGameKeys(Int32 player, Int32 previous, Int32 current);
void EmitPlayerRename(Int32 player, CCStr previous, CCStr current);
void EmitPlayerRequestClass(Int32 player, Int32 offset);
void EmitPlayerRequestSpawn(Int32 player);
void EmitPlayerSpawn(Int32 player);
void EmitPlayerStartTyping(Int32 player);
void EmitPlayerStopTyping(Int32 player);
void EmitPlayerChat(Int32 player, CCStr message);
void EmitPlayerCommand(Int32 player, CCStr command);
void EmitPlayerMessage(Int32 player, Int32 receiver, CCStr message);
void EmitPlayerHealth(Int32 player, Float32 previous, Float32 current);
void EmitPlayerArmour(Int32 player, Float32 previous, Float32 current);
void EmitPlayerWeapon(Int32 player, Int32 previous, Int32 current);
void EmitPlayerMove(Int32 player, const Vector3 & previous, const Vector3 & current);
void EmitPlayerWasted(Int32 player, Int32 reason);
void EmitPlayerKilled(Int32 player, Int32 killer, Int32 reason, Int32 body_part);
void EmitPlayerTeamKill(Int32 player, Int32 killer, Int32 reason, Int32 body_part);
void EmitPlayerSpectate(Int32 player, Int32 target);
void EmitPlayerCrashreport(Int32 player, CCStr report);
void EmitPlayerBurning(Int32 player, bool state);
void EmitPlayerCrouching(Int32 player, bool state);
void EmitPlayerState(Int32 player, Int32 previous, Int32 current);
void EmitPlayerAction(Int32 player, Int32 previous, Int32 current);
void EmitStateNone(Int32 player, Int32 previous);
void EmitStateNormal(Int32 player, Int32 previous);
void EmitStateShooting(Int32 player, Int32 previous);
void EmitStateDriver(Int32 player, Int32 previous);
void EmitStatePassenger(Int32 player, Int32 previous);
void EmitStateEnterDriver(Int32 player, Int32 previous);
void EmitStateEnterPassenger(Int32 player, Int32 previous);
void EmitStateExitVehicle(Int32 player, Int32 previous);
void EmitStateUnspawned(Int32 player, Int32 previous);
void EmitActionNone(Int32 player, Int32 previous);
void EmitActionNormal(Int32 player, Int32 previous);
void EmitActionAiming(Int32 player, Int32 previous);
void EmitActionShooting(Int32 player, Int32 previous);
void EmitActionJumping(Int32 player, Int32 previous);
void EmitActionLieDown(Int32 player, Int32 previous);
void EmitActionGettingUp(Int32 player, Int32 previous);
void EmitActionJumpVehicle(Int32 player, Int32 previous);
void EmitActionDriving(Int32 player, Int32 previous);
void EmitActionDying(Int32 player, Int32 previous);
void EmitActionWasted(Int32 player, Int32 previous);
void EmitActionEmbarking(Int32 player, Int32 previous);
void EmitActionDisembarking(Int32 player, Int32 previous);
void EmitVehicleRespawn(Int32 vehicle);
void EmitVehicleExplode(Int32 vehicle);
void EmitVehicleHealth(Int32 vehicle, Float32 previous, Float32 current);
void EmitVehicleMove(Int32 vehicle, const Vector3 & previous, const Vector3 & current);
void EmitPickupRespawn(Int32 pickup);
void EmitPlayerKeyPress(Int32 player, Int32 keybind);
void EmitPlayerKeyRelease(Int32 player, Int32 keybind);
void EmitPlayerEmbarking(Int32 player, Int32 vehicle, Int32 slot);
void EmitPlayerEmbarked(Int32 player, Int32 vehicle, Int32 slot);
void EmitPlayerDisembark(Int32 player, Int32 vehicle);
void EmitPickupClaimed(Int32 player, Int32 pickup);
void EmitPickupCollected(Int32 player, Int32 pickup);
void EmitObjectShot(Int32 player, Int32 object, Int32 weapon);
void EmitObjectBump(Int32 player, Int32 object);
void EmitCheckpointEntered(Int32 player, Int32 checkpoint);
void EmitCheckpointExited(Int32 player, Int32 checkpoint);
void EmitForcefieldEntered(Int32 player, Int32 forcefield);
void EmitForcefieldExited(Int32 player, Int32 forcefield);
void EmitServerFrame(Float32 delta);
void EmitServerStartup();
void EmitServerShutdown();
void EmitInternalCommand(Int32 type, CCStr text);
void EmitLoginAttempt(CCStr name, CCStr passwd, CCStr ip);
void EmitCustomEvent(Int32 group, Int32 header, Object & payload);
void EmitWorldOption(Int32 option, Object & value);
void EmitWorldToggle(Int32 option, bool value);
void EmitScriptReload(Int32 header, Object & payload);
void EmitScriptLoaded();
void EmitPlayerUpdate(Int32 player, Int32 type);
void EmitVehicleUpdate(Int32 vehicle, Int32 type);
void EmitEntityPool(Int32 type, Int32 id, bool deleted);
/* --------------------------------------------------------------------------------------------
* Retrie global event bidings.
*/
Function & GetEvent(Int32 evid);
/* --------------------------------------------------------------------------------------------
* Retrie local event bidings.
*/
Function & GetBlipEvent(Int32 id, Int32 evid);
Function & GetCheckpointEvent(Int32 id, Int32 evid);
Function & GetForcefieldEvent(Int32 id, Int32 evid);
Function & GetKeybindEvent(Int32 id, Int32 evid);
Function & GetObjectEvent(Int32 id, Int32 evid);
Function & GetPickupEvent(Int32 id, Int32 evid);
Function & GetPlayerEvent(Int32 id, Int32 evid);
Function & GetSpriteEvent(Int32 id, Int32 evid);
Function & GetTextdrawEvent(Int32 id, Int32 evid);
Function & GetVehicleEvent(Int32 id, Int32 evid);
private:
/* --------------------------------------------------------------------------------------------
* Global event bindings.
*/
Function mOnBlipCreated;
Function mOnCheckpointCreated;
Function mOnForcefieldCreated;
Function mOnKeybindCreated;
Function mOnObjectCreated;
Function mOnPickupCreated;
Function mOnPlayerCreated;
Function mOnSpriteCreated;
Function mOnTextdrawCreated;
Function mOnVehicleCreated;
Function mOnBlipDestroyed;
Function mOnCheckpointDestroyed;
Function mOnForcefieldDestroyed;
Function mOnKeybindDestroyed;
Function mOnObjectDestroyed;
Function mOnPickupDestroyed;
Function mOnPlayerDestroyed;
Function mOnSpriteDestroyed;
Function mOnTextdrawDestroyed;
Function mOnVehicleDestroyed;
Function mOnBlipCustom;
Function mOnCheckpointCustom;
Function mOnForcefieldCustom;
Function mOnKeybindCustom;
Function mOnObjectCustom;
Function mOnPickupCustom;
Function mOnPlayerCustom;
Function mOnSpriteCustom;
Function mOnTextdrawCustom;
Function mOnVehicleCustom;
Function mOnPlayerAway;
Function mOnPlayerGameKeys;
Function mOnPlayerRename;
Function mOnPlayerRequestClass;
Function mOnPlayerRequestSpawn;
Function mOnPlayerSpawn;
Function mOnPlayerStartTyping;
Function mOnPlayerStopTyping;
Function mOnPlayerChat;
Function mOnPlayerCommand;
Function mOnPlayerMessage;
Function mOnPlayerHealth;
Function mOnPlayerArmour;
Function mOnPlayerWeapon;
Function mOnPlayerMove;
Function mOnPlayerWasted;
Function mOnPlayerKilled;
Function mOnPlayerTeamKill;
Function mOnPlayerSpectate;
Function mOnPlayerCrashreport;
Function mOnPlayerBurning;
Function mOnPlayerCrouching;
Function mOnPlayerState;
Function mOnPlayerAction;
Function mOnStateNone;
Function mOnStateNormal;
Function mOnStateShooting;
Function mOnStateDriver;
Function mOnStatePassenger;
Function mOnStateEnterDriver;
Function mOnStateEnterPassenger;
Function mOnStateExitVehicle;
Function mOnStateUnspawned;
Function mOnActionNone;
Function mOnActionNormal;
Function mOnActionAiming;
Function mOnActionShooting;
Function mOnActionJumping;
Function mOnActionLieDown;
Function mOnActionGettingUp;
Function mOnActionJumpVehicle;
Function mOnActionDriving;
Function mOnActionDying;
Function mOnActionWasted;
Function mOnActionEmbarking;
Function mOnActionDisembarking;
Function mOnVehicleRespawn;
Function mOnVehicleExplode;
Function mOnVehicleHealth;
Function mOnVehicleMove;
Function mOnPickupRespawn;
Function mOnKeybindKeyPress;
Function mOnKeybindKeyRelease;
Function mOnVehicleEmbarking;
Function mOnVehicleEmbarked;
Function mOnVehicleDisembark;
Function mOnPickupClaimed;
Function mOnPickupCollected;
Function mOnObjectShot;
Function mOnObjectBump;
Function mOnCheckpointEntered;
Function mOnCheckpointExited;
Function mOnForcefieldEntered;
Function mOnForcefieldExited;
Function mOnServerFrame;
Function mOnServerStartup;
Function mOnServerShutdown;
Function mOnInternalCommand;
Function mOnLoginAttempt;
Function mOnCustomEvent;
Function mOnWorldOption;
Function mOnWorldToggle;
Function mOnScriptReload;
Function mOnScriptLoaded;
};
} // Namespace:: SqMod
#endif // _CORE_HPP_