Exemple #1
0
static int l_anim_set_tile(lua_State *L)
{

    T* pAnimation = luaT_testuserdata<T>(L);
    if(lua_isnoneornil(L, 2))
    {
        pAnimation->removeFromTile();
        lua_pushnil(L);
        luaT_setenvfield(L, 1, "map");
        lua_settop(L, 1);
    }
    else
    {
        THMap* pMap = luaT_testuserdata<THMap>(L, 2);
        THMapNode* pNode = pMap->getNode(luaL_checkint(L, 3) - 1, luaL_checkint(L, 4) - 1);
        if(pNode)
            pAnimation->attachToTile(pNode, lastLayer);

        else
        {
            luaL_argerror(L, 3, lua_pushfstring(L, "Map index out of bounds ("
                LUA_NUMBER_FMT "," LUA_NUMBER_FMT ")", lua_tonumber(L, 3),
                lua_tonumber(L, 4)));
        }

        lua_settop(L, 2);
        luaT_setenvfield(L, 1, "map");
    }

    return 1;
}
Exemple #2
0
static int l_anim_set_tag(lua_State *L)
{
    luaT_testuserdata<THAnimation>(L);
    lua_settop(L, 2);
    luaT_setenvfield(L, 1, "tag");
    return 1;
}
static int l_soundfx_set_archive(lua_State *L)
{
    THSoundEffects *pEffects = luaT_testuserdata<THSoundEffects>(L);
    THSoundArchive *pArchive = luaT_testuserdata<THSoundArchive>(L, 2);
    pEffects->setSoundArchive(pArchive);
    lua_settop(L, 2);
    luaT_setenvfield(L, 1, "archive");
    return 1;
}
static int l_path_set_map(lua_State *L)
{
    pathfinder* pPathfinder = luaT_testuserdata<pathfinder>(L);
    level_map* pMap = luaT_testuserdata<level_map>(L, 2);
    lua_settop(L, 2);

    pPathfinder->set_default_map(pMap);
    luaT_setenvfield(L, 1, "map");
    return 1;
}
static int l_map_set_sheet(lua_State *L)
{
    level_map* pMap = luaT_testuserdata<level_map>(L);
    sprite_sheet* pSheet = luaT_testuserdata<sprite_sheet>(L, 2);
    lua_settop(L, 2);

    pMap->set_block_sheet(pSheet);
    luaT_setenvfield(L, 1, "sprites");
    return 1;
}
/*!
    setCanvas(<video-surface>)
 */
static int l_anims_set_canvas(lua_State *L)
{
    THAnimationManager* pAnims = luaT_testuserdata<THAnimationManager>(L);
    THRenderTarget* pCanvas = luaT_testuserdata<THRenderTarget>(L, 2);
    lua_settop(L, 2);

    pAnims->setCanvas(pCanvas);
    luaT_setenvfield(L, 1, "target");
    return 1;
}
Exemple #7
0
static int l_map_set_sheet(lua_State *L)
{
    THMap* pMap = luaT_testuserdata<THMap>(L);
    THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L, 2);
    lua_settop(L, 2);

    pMap->setBlockSheet(pSheet);
    luaT_setenvfield(L, 1, "sprites");
    return 1;
}
static int l_rawbitmap_set_pal(lua_State *L)
{
    THRawBitmap* pBitmap = luaT_testuserdata<THRawBitmap>(L);
    THPalette* pPalette = luaT_testuserdata<THPalette>(L, 2);
    lua_settop(L, 2);

    pBitmap->setPalette(pPalette);
    luaT_setenvfield(L, 1, "palette");
    return 1;
}
static int l_bitmap_font_set_spritesheet(lua_State *L)
{
    THBitmapFont* pFont = luaT_testuserdata<THBitmapFont>(L);
    THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L, 2);
    lua_settop(L, 2);

    pFont->setSpriteSheet(pSheet);
    luaT_setenvfield(L, 1, "sprites");
    return 1;
}
Exemple #10
0
static int l_srl_set_sheet(lua_State *L)
{
    THSpriteRenderList *pSrl = luaT_testuserdata<THSpriteRenderList>(L);
    THSpriteSheet *pSheet = luaT_testuserdata<THSpriteSheet>(L, 2);
    pSrl->setSheet(pSheet);

    lua_settop(L, 2);
    luaT_setenvfield(L, 1, "sheet");
    return 1;
}
Exemple #11
0
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;
}
Exemple #12
0
static int l_anims_set_spritesheet(lua_State *L)
{
    THAnimationManager* pAnims = luaT_testuserdata<THAnimationManager>(L);
    THSpriteSheet* pSheet = luaT_testuserdata<THSpriteSheet>(L, 2);
    lua_settop(L, 2);

    pAnims->setSpriteSheet(pSheet);
    luaT_setenvfield(L, 1, "sprites");
    return 1;
}
Exemple #13
0
static int l_freetype_font_set_face(lua_State *L)
{
    THFreeTypeFont* pFont = luaT_testuserdata<THFreeTypeFont>(L);
    size_t iLength;
    const uint8_t* pData = luaT_checkfile(L, 2, &iLength);
    lua_settop(L, 2);

    l_freetype_throw_error_code(L, pFont->setFace(pData, iLength));
    luaT_setenvfield(L, 1, "face");
    return 1;
}
Exemple #14
0
static int l_anim_set_anim(lua_State *L)
{
    THAnimation* pAnimation = luaT_testuserdata<THAnimation>(L);
    THAnimationManager* pManager = luaT_testuserdata<THAnimationManager>(L, 2);
    int iAnim = luaL_checkint(L, 3);
    if(iAnim < 0 || (unsigned int)iAnim >= pManager->getAnimationCount())
        luaL_argerror(L, 3, "Animation index out of bounds");

    if(lua_isnoneornil(L, 4))
        pAnimation->setFlags(0);
    else
        pAnimation->setFlags(luaL_checkint(L, 4));

    pAnimation->setAnimation(pManager, iAnim);
    lua_settop(L, 2);
    luaT_setenvfield(L, 1, "animator");
    lua_pushnil(L);
    luaT_setenvfield(L, 1, "morph_target");

    return 1;
}
Exemple #15
0
static int l_anim_set_morph(lua_State *L)
{
    THAnimation* pAnimation = luaT_testuserdata<THAnimation>(L);
    THAnimation* pMorphTarget = luaT_testuserdata<THAnimation>(L, 2, luaT_environindex);

    unsigned int iDurationFactor = 1;
    if(!lua_isnoneornil(L, 3) && luaL_checkint(L, 3) > 0)
        iDurationFactor = luaL_checkint(L, 3);

    pAnimation->setMorphTarget(pMorphTarget, iDurationFactor);
    lua_settop(L, 2);
    luaT_setenvfield(L, 1, "morph_target");

    return 1;
}
Exemple #16
0
static int l_isofs_set_root(lua_State *L)
{
    IsoFilesystem *pSelf = luaT_testuserdata<IsoFilesystem>(L);
    FILE *fIso = *luaT_testuserdata<FILE*>(L, 2);
    if(pSelf->initialise(fIso))
    {
        lua_pushvalue(L, 2);
        luaT_setenvfield(L, 1, "file");
        lua_settop(L, 1);
        return 1;
    }
    else
    {
        lua_pushnil(L);
        lua_pushstring(L, pSelf->getError());
        return 2;
    }
}
Exemple #17
0
static int l_load_music(lua_State *L)
{
    size_t iLength;
    const uint8_t *pData = luaT_checkfile(L, 1, &iLength);
    SDL_RWops* rwop = SDL_RWFromConstMem(pData, (int)iLength);
    Mix_Music* pMusic = Mix_LoadMUS_RW(rwop, 1);
    if(pMusic == nullptr)
    {
        lua_pushnil(L);
        lua_pushstring(L, Mix_GetError());
        return 2;
    }
    music_t* pLMusic = luaT_stdnew<music_t>(L, luaT_environindex, true);
    pLMusic->pMusic = pMusic;
    lua_pushvalue(L, 1);
    luaT_setenvfield(L, -2, "data");
    return 1;
}
Exemple #18
0
static int l_load_music_async(lua_State *L)
{
    size_t iLength;
    const uint8_t *pData = luaT_checkfile(L, 1, &iLength);
    luaL_checktype(L, 2, LUA_TFUNCTION);
    SDL_RWops* rwop = SDL_RWFromConstMem(pData, (int)iLength);
    lua_settop(L, 2);

    load_music_async_t *async = luaT_new(L, load_music_async_t);
    lua_pushlightuserdata(L, async);
    lua_pushvalue(L, -2);
    lua_settable(L, LUA_REGISTRYINDEX);
    async->L = L;
    async->music = nullptr;
    async->rwop = rwop;
    async->err = nullptr;
    lua_createtable(L, 2, 0);
    lua_pushthread(L);
    lua_rawseti(L, -2, 1);
    lua_pushvalue(L, 2);
    lua_rawseti(L, -2, 2);
    luaT_stdnew<music_t>(L, luaT_environindex, true);
    lua_pushvalue(L, 1);
    luaT_setenvfield(L, -2, "data");
    lua_rawseti(L, -2, 3);
    lua_settable(L, LUA_REGISTRYINDEX);

    /*
        In registry:
          [light userdata async] -> [full userdata async]
          [full userdata async] -> {
            [1] = callback_thread,
            [2] = callback_function,
            [3] = empty music_t userdata,
          }

        New thread will load music, and inform the main loop, which will then
        call the callback and remove the new entries from the registry.
    */

    SDL_CreateThread(load_music_async_thread, "music_thread", async);

    return 0;
}