93 lines
2.1 KiB
C++
93 lines
2.1 KiB
C++
#pragma once
|
|
#include "squirrel/SquirrelEx.h"
|
|
#include "Global/Global_Game.h"
|
|
#include "EngineFrame/Base/Actor.h"
|
|
|
|
static SQRESULT sq_GetVecSize(HSQUIRRELVM v, int Index, VecSize *Size)
|
|
{
|
|
sq_pushnull(v); // null iterator
|
|
while (SQ_SUCCEEDED(sq_next(v, Index)))
|
|
{
|
|
SQFloat value;
|
|
sq_getfloat(v, -1, &value);
|
|
const SQChar *key;
|
|
sq_getstring(v, -2, &key);
|
|
|
|
if (strcmp(key, _SC("w")) == 0)
|
|
{
|
|
Size->width = value;
|
|
}
|
|
else if (strcmp(key, _SC("h")) == 0)
|
|
{
|
|
Size->height = value;
|
|
}
|
|
sq_pop(v, 2);
|
|
}
|
|
sq_pop(v, 1);
|
|
return SQ_OK;
|
|
}
|
|
|
|
static SQRESULT sq_GetVec2(HSQUIRRELVM v, int Index, Vec2 *Pos)
|
|
{
|
|
sq_pushnull(v); // null iterator
|
|
while (SQ_SUCCEEDED(sq_next(v, Index)))
|
|
{
|
|
SQFloat value;
|
|
sq_getfloat(v, -1, &value);
|
|
const SQChar *key;
|
|
sq_getstring(v, -2, &key);
|
|
|
|
if (strcmp(key, _SC("x")) == 0)
|
|
{
|
|
Pos->x = value;
|
|
}
|
|
else if (strcmp(key, _SC("y")) == 0)
|
|
{
|
|
Pos->y = value;
|
|
}
|
|
sq_pop(v, 2);
|
|
}
|
|
sq_pop(v, 1);
|
|
return SQ_OK;
|
|
}
|
|
|
|
static SQRESULT sq_GetFRect(HSQUIRRELVM v, int Index, SDL_FRect *Pos)
|
|
{
|
|
sq_pushnull(v); // null iterator
|
|
while (SQ_SUCCEEDED(sq_next(v, Index)))
|
|
{
|
|
SQFloat value;
|
|
sq_getfloat(v, -1, &value);
|
|
const SQChar *key;
|
|
sq_getstring(v, -2, &key);
|
|
|
|
if (strcmp(key, _SC("x")) == 0)
|
|
{
|
|
Pos->x = value;
|
|
}
|
|
else if (strcmp(key, _SC("y")) == 0)
|
|
{
|
|
Pos->y = value;
|
|
}
|
|
else if (strcmp(key, _SC("w")) == 0)
|
|
{
|
|
Pos->w = value;
|
|
}
|
|
else if (strcmp(key, _SC("h")) == 0)
|
|
{
|
|
Pos->h = value;
|
|
}
|
|
sq_pop(v, 2);
|
|
}
|
|
sq_pop(v, 1);
|
|
return SQ_OK;
|
|
}
|
|
|
|
static void RegisterNutApi(const SQChar *funcName, SQFUNCTION funcAddr, HSQUIRRELVM v)
|
|
{
|
|
sq_pushroottable(v);
|
|
sq_pushstring(v, funcName, -1);
|
|
sq_newclosure(v, funcAddr, 0);
|
|
sq_newslot(v, -3, false);
|
|
sq_poptop(v);
|
|
} |