static int l_spritesheet_count(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); lua_pushinteger(L, pSheet->getSpriteCount()); return 1; }
static int l_spritesheet_isvisible(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); size_t iSprite = luaL_checkinteger(L, 2); THColour oDummy; lua_pushboolean(L, pSheet->getSpriteAverageColour(iSprite, &oDummy) ? 1:0); return 1; }
static int l_spritesheet_hittest(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); size_t iSprite = luaL_checkinteger(L, 2); int iX = static_cast<int>(luaL_checkinteger(L, 3)); int iY = static_cast<int>(luaL_checkinteger(L, 4)); uint32_t iFlags = static_cast<uint32_t>(luaL_optinteger(L, 5, 0)); return pSheet->hitTestSprite(iSprite, iX, iY, iFlags); }
static int l_spritesheet_hittest(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); unsigned int iSprite = (unsigned int)luaL_checkinteger(L, 2); int iX = luaL_checkint(L, 3); int iY = luaL_checkint(L, 4); unsigned long iFlags = (unsigned long)luaL_optint(L, 5, 0); return pSheet->hitTestSprite(iSprite, iX, iY, iFlags); }
static int l_spritesheet_set_pal(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); THPalette* pPalette = luaT_testuserdata<THPalette>(L, 2); lua_settop(L, 2); pSheet->setPalette(pPalette); luaT_setenvfield(L, 1, "palette"); return 1; }
static int l_spritesheet_draw(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); THRenderTarget* pCanvas = luaT_testuserdata<THRenderTarget>(L, 2); int iSprite = static_cast<int>(luaL_checkinteger(L, 3)); // No array adjustment pSheet->drawSprite(pCanvas, iSprite, static_cast<int>(luaL_optinteger(L, 4, 0)), static_cast<int>(luaL_optinteger(L, 5, 0)), static_cast<int>(luaL_optinteger(L, 6, 0))); lua_settop(L, 1); return 1; }
static int l_spritesheet_size(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); size_t iSprite = luaL_checkinteger(L, 2); // No array adjustment if(iSprite < 0 || iSprite >= pSheet->getSpriteCount()) return luaL_argerror(L, 2, "Sprite index out of bounds"); unsigned int iWidth, iHeight; pSheet->getSpriteSizeUnchecked(iSprite, &iWidth, &iHeight); lua_pushinteger(L, iWidth); lua_pushinteger(L, iHeight); return 2; }
static int l_spritesheet_load(lua_State *L) { THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L); size_t iDataLenTable, iDataLenChunk; const uint8_t* pDataTable = luaT_checkfile(L, 2, &iDataLenTable); const uint8_t* pDataChunk = luaT_checkfile(L, 3, &iDataLenChunk); bool bComplex = lua_toboolean(L, 4) != 0; THRenderTarget* pSurface = luaT_testuserdata<THRenderTarget>(L, 5, luaT_upvalueindex(1), false); if(pSheet->loadFromTHFile(pDataTable, iDataLenTable, pDataChunk, iDataLenChunk, bComplex, pSurface)) lua_pushboolean(L, 1); else lua_pushboolean(L, 0); return 1; }