LuaYard/LuaCommon.h
Kiritow bc189b4951 完整重构
分离各SDL类的包装代码.
事件分发处理全部转移至Lua Init层. C层只提供获取事件的方法.
这样有助于提高性能,以及今后Coroutine scheduler的添加.
2019-08-25 00:09:28 +08:00

24 lines
943 B
C++

#pragma once
#include "LuaVM.h"
#include "SDL2/include/SDL.h"
#include <vector>
bool LuaCompareType(lua_State* L, int index, const char* type, bool leave = false);
// 从Lua Rect/Point转换到SDL_Rect. 给定index类型必须是table (此方法不会校验是否为table)
// 正确转换则返回 0
// 出错则返回 1, 同时将 type 放在栈上. (有可能是nil)
int LuaRectPointToRect(lua_State* L, int index, SDL_Rect& r, int default_w = 0, int default_h = 0);
int LuaRectToRect(lua_State* L, int index, SDL_Rect& rect);
int LuaPointToPoint(lua_State* L, int index, SDL_Point& point);
// 从Lua RGBA转换到SDL_Color. 给定index类型必须是table. (此方法不会校验是否为table)
// 正确转换则返回 0
// 出错则返回 1, 同时将 type 放在栈上. (有可能是nil)
int LuaColorToColor(lua_State* L, int index, SDL_Color& c);
// Generate SDL error on lua stack.
// NOTE: Never actually returns. If this function is used in C++ context, you should compile Lua as C++.
int LuaSDLError(lua_State* L);