From 3f477f5a32de1441dfb9327def587e540a36eed5 Mon Sep 17 00:00:00 2001 From: AURUMVORXX Date: Mon, 4 Nov 2024 14:57:54 +0300 Subject: [PATCH] feat: Switch from default sq stack parsing to NoNut --- src/NoNut/core/Bind.h | 1 + src/NoNut/core/CommonHeader.h | 3 - src/NoNut/core/UserData.h | 2 + src/NoNut/core/Utils.h | 4 +- src/events/sqevents_general.cpp | 15 ++-- src/events/sqevents_player.cpp | 155 ++++++++++++++++---------------- 6 files changed, 91 insertions(+), 89 deletions(-) diff --git a/src/NoNut/core/Bind.h b/src/NoNut/core/Bind.h index 28b87c4..3ab66d1 100644 --- a/src/NoNut/core/Bind.h +++ b/src/NoNut/core/Bind.h @@ -13,6 +13,7 @@ namespace nonut public: static void registerFunction(String funcName, const SQFUNCTION func, size_t funcSize) { + HSQUIRRELVM vm = Sqrat::DefaultVM::Get(); const auto top = sq_gettop(vm); sq_pushroottable(vm); sq_pushstring(vm, funcName.c_str(), funcName.length()); diff --git a/src/NoNut/core/CommonHeader.h b/src/NoNut/core/CommonHeader.h index 34ac6c5..53a6e49 100644 --- a/src/NoNut/core/CommonHeader.h +++ b/src/NoNut/core/CommonHeader.h @@ -15,7 +15,4 @@ namespace nonut constexpr SQObject SQ_NULL{ OT_NULL }; } -namespace nonut::g2o{} -namespace g2o = nonut::g2o; - #endif // CORE_COMMONHEADER_H_ diff --git a/src/NoNut/core/UserData.h b/src/NoNut/core/UserData.h index ea2ad7b..238c1bb 100644 --- a/src/NoNut/core/UserData.h +++ b/src/NoNut/core/UserData.h @@ -1,6 +1,8 @@ #ifndef NONUT_CORE_USER_DATA_H #define NONUT_CORE_USER_DATA_H +#include + namespace nonut { class UserData diff --git a/src/NoNut/core/Utils.h b/src/NoNut/core/Utils.h index 62deaf1..504615f 100644 --- a/src/NoNut/core/Utils.h +++ b/src/NoNut/core/Utils.h @@ -18,7 +18,7 @@ namespace nonut std::is_same_v || std::is_same_v || std::is_same_v || - std::is_same_v || + std::is_same_v || std::is_same_v || std::is_same_v, "Not supported return type"); @@ -29,7 +29,7 @@ namespace nonut sq_getinteger(vm, idx, outPtr); if constexpr (std::is_same_v) sq_getfloat(vm, idx, outPtr); - if constexpr (std::is_same_v) + if constexpr (std::is_same_v) sq_getstring(vm, idx, outPtr); if constexpr (std::is_same_v) { diff --git a/src/events/sqevents_general.cpp b/src/events/sqevents_general.cpp index 51ba6ed..6a72019 100644 --- a/src/events/sqevents_general.cpp +++ b/src/events/sqevents_general.cpp @@ -1,5 +1,6 @@ #include #include +#include "NoNut/core/Utils.h" #include "sqcontainers.h" #include "sqevents.h" @@ -30,9 +31,9 @@ SQInteger sq_onTime(HSQUIRRELVM vm) { SQInteger day, hour, min; - sq_getinteger(vm, 2, &day); - sq_getinteger(vm, 3, &hour); - sq_getinteger(vm, 4, &min); + nonut::sqGetValue(vm, 2, &day); + nonut::sqGetValue(vm, 3, &hour); + nonut::sqGetValue(vm, 4, &min); py::dict kwargs = py::dict("day"_a=day, "hour"_a=hour, "min"_a=min); g2o.attr("callEvent")("onTime", **kwargs); @@ -42,8 +43,8 @@ SQInteger sq_onTime(HSQUIRRELVM vm) SQInteger sq_onBan(HSQUIRRELVM vm) { - SQObject obj; - sq_getstackobj(vm, 2, &obj); + HSQOBJECT obj; + nonut::sqGetValue(vm, 2, &obj); Sqrat::Table banData = Sqrat::Table(obj, vm); py::dict kwargs = sqParseTable(banData); @@ -54,8 +55,8 @@ SQInteger sq_onBan(HSQUIRRELVM vm) SQInteger sq_onUnban(HSQUIRRELVM vm) { - SQObject obj; - sq_getstackobj(vm, 2, &obj); + HSQOBJECT obj; + nonut::sqGetValue(vm, 2, &obj); Sqrat::Table banData = Sqrat::Table(obj, vm); py::dict kwargs = sqParseTable(banData); diff --git a/src/events/sqevents_player.cpp b/src/events/sqevents_player.cpp index 4c16195..c6e12ea 100644 --- a/src/events/sqevents_player.cpp +++ b/src/events/sqevents_player.cpp @@ -1,5 +1,6 @@ #include #include +#include "NoNut/core/Utils.h" #include "sqevents.h" namespace py = pybind11; @@ -11,10 +12,10 @@ SQInteger sq_onPlayerChangeColor(HSQUIRRELVM vm) { SQInteger playerid, r, g, b; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &r); - sq_getinteger(vm, 4, &g); - sq_getinteger(vm, 5, &b); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &r); + nonut::sqGetValue(vm, 4, &g); + nonut::sqGetValue(vm, 5, &b); py::dict kwargs = py::dict("playerid"_a=playerid, "r"_a=r, "g"_a=g, "b"_a=b); g2o.attr("callEvent")("onPlayerChangeColor", **kwargs); @@ -26,9 +27,9 @@ SQInteger sq_onPlayerChangeFocus(HSQUIRRELVM vm) { SQInteger playerid, oldFocusId, newFocusId; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &oldFocusId); - sq_getinteger(vm, 4, &newFocusId); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &oldFocusId); + nonut::sqGetValue(vm, 4, &newFocusId); py::dict kwargs = py::dict("playerid"_a=playerid, "oldFocusId"_a=oldFocusId, "newFocusId"_a=newFocusId); g2o.attr("callEvent")("onPlayerChangeFocus", **kwargs); @@ -40,9 +41,9 @@ SQInteger sq_onPlayerChangeHealth(HSQUIRRELVM vm) { SQInteger playerid, oldHP, newHP; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &oldHP); - sq_getinteger(vm, 4, &newHP); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &oldHP); + nonut::sqGetValue(vm, 4, &newHP); py::dict kwargs = py::dict("playerid"_a=playerid, "oldHP"_a=oldHP, "newHP"_a=newHP); g2o.attr("callEvent")("onPlayerChangeHealth", **kwargs); @@ -54,9 +55,9 @@ SQInteger sq_onPlayerChangeMana(HSQUIRRELVM vm) { SQInteger playerid, oldMP, newMP; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &oldMP); - sq_getinteger(vm, 4, &newMP); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &oldMP); + nonut::sqGetValue(vm, 4, &newMP); py::dict kwargs = py::dict("playerid"_a=playerid, "oldMP"_a=oldMP, "newMP"_a=newMP); g2o.attr("callEvent")("onPlayerChangeMana", **kwargs); @@ -68,9 +69,9 @@ SQInteger sq_onPlayerChangeMaxHealth(HSQUIRRELVM vm) { SQInteger playerid, oldMaxHP, newMaxHP; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &oldMaxHP); - sq_getinteger(vm, 4, &newMaxHP); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &oldMaxHP); + nonut::sqGetValue(vm, 4, &newMaxHP); py::dict kwargs = py::dict("playerid"_a=playerid, "oldMaxHP"_a=oldMaxHP, "newMaxHP"_a=newMaxHP); g2o.attr("callEvent")("onPlayerChangeMaxHealth", **kwargs); @@ -82,9 +83,9 @@ SQInteger sq_onPlayerChangeMaxMana(HSQUIRRELVM vm) { SQInteger playerid, oldMaxMP, newMaxMP; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &oldMaxMP); - sq_getinteger(vm, 4, &newMaxMP); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &oldMaxMP); + nonut::sqGetValue(vm, 4, &newMaxMP); py::dict kwargs = py::dict("playerid"_a=playerid, "oldMaxMP"_a=oldMaxMP, "newMaxMP"_a=newMaxMP); g2o.attr("callEvent")("onPlayerChangeMaxMana", **kwargs); @@ -96,9 +97,9 @@ SQInteger sq_onPlayerChangeWeaponMode(HSQUIRRELVM vm) { SQInteger playerid, oldWeaponMode, newWeaponMode; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &oldWeaponMode); - sq_getinteger(vm, 4, &newWeaponMode); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &oldWeaponMode); + nonut::sqGetValue(vm, 4, &newWeaponMode); py::dict kwargs = py::dict("playerid"_a=playerid, "oldWeaponMode"_a=oldWeaponMode, "newWeaponMode"_a=newWeaponMode); g2o.attr("callEvent")("onPlayerChangeWeaponMode", **kwargs); @@ -109,12 +110,12 @@ SQInteger sq_onPlayerChangeWeaponMode(HSQUIRRELVM vm) SQInteger sq_onPlayerChangeWorld(HSQUIRRELVM vm) { SQInteger playerid; - const SQChar* world; - const SQChar* waypoint; + const SQChar* world = nullptr; + const SQChar* waypoint = nullptr; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &world); - sq_getstring(vm, 4, &waypoint); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &world); + nonut::sqGetValue(vm, 4, &waypoint); py::dict kwargs = py::dict("playerid"_a=playerid, "world"_a=world, "waypoint"_a=waypoint); g2o.attr("callEvent")("onPlayerChangeWorld", **kwargs); @@ -130,9 +131,9 @@ SQInteger sq_onPlayerCommand(HSQUIRRELVM vm) const SQChar* command; const SQChar* params; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &command); - sq_getstring(vm, 4, ¶ms); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &command); + nonut::sqGetValue(vm, 4, ¶ms); py::dict kwargs = py::dict("playerid"_a=playerid, "command"_a=command, "params"_a=params); g2o.attr("callEvent")("onPlayerCommand", **kwargs); @@ -144,8 +145,8 @@ SQInteger sq_onPlayerDead(HSQUIRRELVM vm) { SQInteger playerid, killerid; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &killerid); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &killerid); py::dict kwargs = py::dict("playerid"_a=playerid, "killerid"_a=killerid); g2o.attr("callEvent")("onPlayerDead", **kwargs); @@ -157,8 +158,8 @@ SQInteger sq_onPlayerDisconnect(HSQUIRRELVM vm) { SQInteger playerid, reason; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &reason); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &reason); py::dict kwargs = py::dict("playerid"_a=playerid, "reason"_a=reason); g2o.attr("callEvent")("onPlayerDisconnect", **kwargs); @@ -171,8 +172,8 @@ SQInteger sq_onPlayerEnterWorld(HSQUIRRELVM vm) SQInteger playerid; const SQChar* world; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &world); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &world); py::dict kwargs = py::dict("playerid"_a=playerid, "world"_a=world); g2o.attr("callEvent")("onPlayerEnterWorld", **kwargs); @@ -184,7 +185,7 @@ SQInteger sq_onPlayerJoin(HSQUIRRELVM vm) { SQInteger playerid; - sq_getinteger(vm, 2, &playerid); + nonut::sqGetValue(vm, 2, &playerid); py::dict kwargs = py::dict("playerid"_a=playerid); g2o.attr("callEvent")("onPlayerJoin", **kwargs); @@ -197,8 +198,8 @@ SQInteger sq_onPlayerMessage(HSQUIRRELVM vm) SQInteger playerid; const SQChar* message; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &message); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &message); py::dict kwargs = py::dict("playerid"_a=playerid, "message"_a=message); g2o.attr("callEvent")("onPlayerMessage", **kwargs); @@ -210,9 +211,9 @@ SQInteger sq_onPlayerMobInteract(HSQUIRRELVM vm) { SQInteger playerid, from, to; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &from); - sq_getinteger(vm, 3, &to); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &from); + nonut::sqGetValue(vm, 3, &to); py::dict kwargs = py::dict("playerid"_a=playerid, "from"_a=from, "to"_a = to); g2o.attr("callEvent")("onPlayerMobInteract", **kwargs); @@ -224,7 +225,7 @@ SQInteger sq_onPlayerRespawn(HSQUIRRELVM vm) { SQInteger playerid; - sq_getinteger(vm, 2, &playerid); + nonut::sqGetValue(vm, 2, &playerid); py::dict kwargs = py::dict("playerid"_a=playerid); g2o.attr("callEvent")("onPlayerRespawn", **kwargs); @@ -237,8 +238,8 @@ SQInteger sq_onPlayerShoot(HSQUIRRELVM vm) SQInteger playerid; const SQChar* munition; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &munition); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &munition); py::dict kwargs = py::dict("playerid"_a=playerid, "munition"_a=munition); g2o.attr("callEvent")("onPlayerShoot", **kwargs); @@ -251,8 +252,8 @@ SQInteger sq_onPlayerSpellCast(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerSpellCast", **kwargs); @@ -265,8 +266,8 @@ SQInteger sq_onPlayerSpellSetup(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerSpellSetup", **kwargs); @@ -279,8 +280,8 @@ SQInteger sq_onPlayerTeleport(HSQUIRRELVM vm) SQInteger playerid; const SQChar* vobName; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &vobName); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &vobName); py::dict kwargs = py::dict("playerid"_a=playerid, "vobName"_a=vobName); g2o.attr("callEvent")("onPlayerTeleport", **kwargs); @@ -294,9 +295,9 @@ SQInteger sq_onPlayerToggleFaceAni(HSQUIRRELVM vm) const SQChar* aniName; SQBool toggle; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &aniName); - sq_getbool(vm, 4, &toggle); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &aniName); + nonut::sqGetValue(vm, 4, &toggle); py::dict kwargs = py::dict("playerid"_a=playerid, "vobName"_a=aniName, "toggle"_a = toggle); g2o.attr("callEvent")("onPlayerToggleFaceAni", **kwargs); @@ -311,8 +312,8 @@ SQInteger sq_onPlayerEquipAmulet(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipAmulet", **kwargs); @@ -325,8 +326,8 @@ SQInteger sq_onPlayerEquipArmor(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipArmor", **kwargs); @@ -339,8 +340,8 @@ SQInteger sq_onPlayerEquipBelt(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipBelt", **kwargs); @@ -353,9 +354,9 @@ SQInteger sq_onPlayerEquipHandItem(HSQUIRRELVM vm) SQInteger playerid, hand; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &hand); - sq_getstring(vm, 4, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &hand); + nonut::sqGetValue(vm, 4, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "hand"_a = hand, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipHandItem", **kwargs); @@ -368,8 +369,8 @@ SQInteger sq_onPlayerEquipHelmet(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipHelmet", **kwargs); @@ -382,8 +383,8 @@ SQInteger sq_onPlayerEquipMeleeWeapon(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipMeleeWeapon", **kwargs); @@ -396,8 +397,8 @@ SQInteger sq_onPlayerEquipRangedWeapon(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipRangedWeapon", **kwargs); @@ -410,9 +411,9 @@ SQInteger sq_onPlayerEquipRing(HSQUIRRELVM vm) SQInteger playerid, hand; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &hand); - sq_getstring(vm, 4, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &hand); + nonut::sqGetValue(vm, 4, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "hand"_a = hand, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipRing", **kwargs); @@ -425,8 +426,8 @@ SQInteger sq_onPlayerEquipShield(HSQUIRRELVM vm) SQInteger playerid; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getstring(vm, 3, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipShield", **kwargs); @@ -439,9 +440,9 @@ SQInteger sq_onPlayerEquipSpell(HSQUIRRELVM vm) SQInteger playerid, slotId; const SQChar* instance; - sq_getinteger(vm, 2, &playerid); - sq_getinteger(vm, 3, &slotId); - sq_getstring(vm, 4, &instance); + nonut::sqGetValue(vm, 2, &playerid); + nonut::sqGetValue(vm, 3, &slotId); + nonut::sqGetValue(vm, 4, &instance); py::dict kwargs = py::dict("playerid"_a=playerid, "slotId"_a = slotId, "instance"_a=instance); g2o.attr("callEvent")("onPlayerEquipSpell", **kwargs);