2016-02-20 23:25:00 +01:00
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
#include "Core.hpp"
|
|
|
|
#include "Logger.hpp"
|
2016-05-22 05:20:38 +02:00
|
|
|
#include "Base/Stack.hpp"
|
2016-02-20 23:25:00 +01:00
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
#include <sqstdstring.h>
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
namespace SqMod {
|
|
|
|
|
2016-03-24 08:32:44 +01:00
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
extern void EnableReload(Int32 header, Object & payload);
|
|
|
|
extern void DisableReload();
|
|
|
|
extern bool ReloadEnabled();
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
// ------------------------------------------------------------------------------------------------
|
2016-05-22 05:20:38 +02:00
|
|
|
static Object & GetBlip(Int32 id) { return Core::Get().GetBlip(id).mObj; }
|
|
|
|
static Object & GetCheckpoint(Int32 id) { return Core::Get().GetCheckpoint(id).mObj; }
|
|
|
|
static Object & GetKeybind(Int32 id) { return Core::Get().GetKeybind(id).mObj; }
|
|
|
|
static Object & GetObject(Int32 id) { return Core::Get().GetObject(id).mObj; }
|
|
|
|
static Object & GetPickup(Int32 id) { return Core::Get().GetPickup(id).mObj; }
|
|
|
|
static Object & GetPlayer(Int32 id) { return Core::Get().GetPlayer(id).mObj; }
|
|
|
|
static Object & GetVehicle(Int32 id) { return Core::Get().GetVehicle(id).mObj; }
|
2016-02-20 23:25:00 +01:00
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
static bool DelBlip(Int32 id, Int32 header, Object & payload)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().DelBlip(id, header, payload);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
static bool DelCheckpoint(Int32 id, Int32 header, Object & payload)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().DelCheckpoint(id, header, payload);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
static bool DelKeybind(Int32 id, Int32 header, Object & payload)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().DelKeybind(id, header, payload);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
static bool DelObject(Int32 id, Int32 header, Object & payload)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().DelObject(id, header, payload);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
static bool DelPickup(Int32 id, Int32 header, Object & payload)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().DelPickup(id, header, payload);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
static bool DelVehicle(Int32 id, Int32 header, Object & payload)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().DelVehicle(id, header, payload);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
2016-02-20 23:25:00 +01:00
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
2016-03-22 03:12:25 +01:00
|
|
|
static void BindEvent(Int32 id, Object & env, Function & func)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
Core::Get().BindEvent(id, env, func);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
2016-02-20 23:25:00 +01:00
|
|
|
|
2016-05-23 02:51:44 +02:00
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
static void CustomEvent(Int32 group, Int32 header, Object & payload)
|
|
|
|
{
|
|
|
|
Core::Get().EmitCustomEvent(group, header, payload);
|
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
// ------------------------------------------------------------------------------------------------
|
2016-03-12 21:51:44 +01:00
|
|
|
static Int32 GetState()
|
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().GetState();
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
static void SetState(Int32 value)
|
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().SetState(value);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
2016-02-20 23:25:00 +01:00
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
2016-03-12 21:51:44 +01:00
|
|
|
static CSStr GetOption(CSStr name)
|
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().GetOption(name);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
static CSStr GetOptionOr(CSStr name, CSStr value)
|
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().GetOption(name, value);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
static void SetOption(CSStr name, CSStr value)
|
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return Core::Get().SetOption(name, value);
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
2016-02-20 23:25:00 +01:00
|
|
|
|
2016-03-24 08:32:44 +01:00
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
static void SetReload(bool toggle)
|
|
|
|
{
|
|
|
|
if (toggle)
|
|
|
|
{
|
|
|
|
EnableReload(0, NullObject());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
DisableReload();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
static void SetReloadBecause(Int32 header, Object & payload)
|
|
|
|
{
|
|
|
|
EnableReload(header, payload);
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
static bool IsReloading()
|
|
|
|
{
|
|
|
|
return ReloadEnabled();
|
|
|
|
}
|
|
|
|
|
2016-02-20 23:25:00 +01:00
|
|
|
// ================================================================================================
|
|
|
|
void Register_Core(HSQUIRRELVM vm)
|
|
|
|
{
|
|
|
|
RootTable(vm)
|
2016-03-11 19:04:26 +01:00
|
|
|
.Bind(_SC("SqCore"), Table(vm)
|
2016-02-20 23:25:00 +01:00
|
|
|
.Func(_SC("Bind"), &BindEvent)
|
2016-05-23 02:51:44 +02:00
|
|
|
.Func(_SC("CustomEvent"), &CustomEvent)
|
2016-03-24 08:32:44 +01:00
|
|
|
.Func(_SC("Reload"), &SetReload)
|
|
|
|
.Func(_SC("ReloadBecause"), &SetReloadBecause)
|
|
|
|
.Func(_SC("Reloading"), &IsReloading)
|
2016-02-20 23:25:00 +01:00
|
|
|
.Func(_SC("GetState"), &GetState)
|
|
|
|
.Func(_SC("SetState"), &SetState)
|
|
|
|
.Func(_SC("GetOption"), &GetOption)
|
2016-03-11 19:04:26 +01:00
|
|
|
.Func(_SC("GetOptionOr"), &GetOptionOr)
|
2016-02-20 23:25:00 +01:00
|
|
|
.Func(_SC("SetOption"), &SetOption)
|
|
|
|
.Func(_SC("GetBlip"), &GetBlip)
|
|
|
|
.Func(_SC("GetCheckpoint"), &GetCheckpoint)
|
|
|
|
.Func(_SC("GetKeybind"), &GetKeybind)
|
|
|
|
.Func(_SC("GetObject"), &GetObject)
|
|
|
|
.Func(_SC("GetPickup"), &GetPickup)
|
|
|
|
.Func(_SC("GetPlayer"), &GetPlayer)
|
|
|
|
.Func(_SC("GetVehicle"), &GetVehicle)
|
|
|
|
.Func(_SC("DestroyBlip"), &DelBlip)
|
|
|
|
.Func(_SC("DestroyCheckpoint"), &DelCheckpoint)
|
|
|
|
.Func(_SC("DestroyKeybind"), &DelKeybind)
|
|
|
|
.Func(_SC("DestroyObject"), &DelObject)
|
|
|
|
.Func(_SC("DestroyPickup"), &DelPickup)
|
|
|
|
.Func(_SC("DestroyVehicle"), &DelVehicle)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
template < Uint8 L, bool S > static SQInteger LogBasicMessage(HSQUIRRELVM vm)
|
|
|
|
{
|
|
|
|
const Int32 top = sq_gettop(vm);
|
2016-03-10 04:57:13 +01:00
|
|
|
// Was the message value specified?
|
2016-02-20 23:25:00 +01:00
|
|
|
if (top <= 1)
|
2016-03-12 21:51:44 +01:00
|
|
|
{
|
2016-03-10 04:57:13 +01:00
|
|
|
return sq_throwerror(vm, "Missing message value");
|
2016-03-12 21:51:44 +01:00
|
|
|
}
|
2016-05-22 05:20:38 +02:00
|
|
|
// Attempt to generate the string value
|
|
|
|
StackStrF val(vm, 2);
|
|
|
|
// Have we failed to retrieve the string?
|
|
|
|
if (SQ_FAILED(val.mRes))
|
2016-03-10 04:57:13 +01:00
|
|
|
{
|
2016-05-22 05:20:38 +02:00
|
|
|
return val.mRes; // Propagate the error!
|
2016-03-10 04:57:13 +01:00
|
|
|
}
|
2016-05-22 05:20:38 +02:00
|
|
|
// Forward the resulted string value to the logger
|
|
|
|
Logger::Get().Write(L, S, "%s", val.mPtr);
|
2016-03-10 04:57:13 +01:00
|
|
|
// This function does not return a value
|
2016-05-22 05:20:38 +02:00
|
|
|
return 0;
|
2016-02-20 23:25:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// ================================================================================================
|
|
|
|
void Register_Log(HSQUIRRELVM vm)
|
|
|
|
{
|
|
|
|
RootTable(vm)
|
2016-02-23 04:23:56 +01:00
|
|
|
.Bind(_SC("SqLog"), Table(vm)
|
2016-05-22 05:20:38 +02:00
|
|
|
.SquirrelFunc(_SC("Dbg"), &LogBasicMessage< LOGL_DBG, false >)
|
|
|
|
.SquirrelFunc(_SC("Usr"), &LogBasicMessage< LOGL_USR, false >)
|
|
|
|
.SquirrelFunc(_SC("Scs"), &LogBasicMessage< LOGL_SCS, false >)
|
|
|
|
.SquirrelFunc(_SC("Inf"), &LogBasicMessage< LOGL_INF, false >)
|
|
|
|
.SquirrelFunc(_SC("Wrn"), &LogBasicMessage< LOGL_WRN, false >)
|
|
|
|
.SquirrelFunc(_SC("Err"), &LogBasicMessage< LOGL_ERR, false >)
|
|
|
|
.SquirrelFunc(_SC("Ftl"), &LogBasicMessage< LOGL_FTL, false >)
|
|
|
|
.SquirrelFunc(_SC("SDbg"), &LogBasicMessage< LOGL_DBG, true >)
|
|
|
|
.SquirrelFunc(_SC("SUsr"), &LogBasicMessage< LOGL_USR, true >)
|
|
|
|
.SquirrelFunc(_SC("SScs"), &LogBasicMessage< LOGL_SCS, true >)
|
|
|
|
.SquirrelFunc(_SC("SInf"), &LogBasicMessage< LOGL_INF, true >)
|
|
|
|
.SquirrelFunc(_SC("SWrn"), &LogBasicMessage< LOGL_WRN, true >)
|
|
|
|
.SquirrelFunc(_SC("SErr"), &LogBasicMessage< LOGL_ERR, true >)
|
|
|
|
.SquirrelFunc(_SC("SFtl"), &LogBasicMessage< LOGL_FTL, true >)
|
2016-02-20 23:25:00 +01:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
} // Namespace:: SqMod
|