static int SendBinaryMessageToLua(int nHandler,const unsigned char* pTable,int nLength)
{
    if (NULL == pTable || nHandler <= 0) {
        return 0;
    }
    
    if (NULL == ScriptEngineManager::getInstance()->getScriptEngine()) {
        return 0;
    }
    
    LuaStack *pStack = LuaEngine::getInstance()->getLuaStack();
    if (NULL == pStack) {
        return 0;
    }

    lua_State *tolua_s = pStack->getLuaState();
    if (NULL == tolua_s) {
        return 0;
    }
    
    int nRet = 0;
    LuaValueArray array;
    for (int i = 0 ; i < nLength; i++) {
        LuaValue value = LuaValue::intValue(pTable[i]);
        array.push_back(value);
    }
    
    pStack->pushLuaValueArray(array);
    nRet = pStack->executeFunctionByHandler(nHandler, 1);
    pStack->clean();
    return nRet;
}
    LuaValue proucts2LuaValue(const std::vector<sdkbox::Product>& products) {
        std::vector<sdkbox::Product>::const_iterator it;
        LuaValueArray arrLua;
        for (it = products.begin(); it != products.end(); it++) {
            arrLua.push_back(prouct2LuaValue(*it));
        }

        return LuaValue::arrayValue(arrLua);
    }
static LuaValue FBUserListToLua(const sdkbox::FBInvitableFriendsInfo& l) {
    LuaValueArray array;
    
    for (sdkbox::FBInvitableFriendsInfo::const_iterator it = l.begin(); it != l.end(); it++) {
        LuaValue v = FBGraphUserToLua(*it);
        array.push_back(v);
    }
    
    return LuaValue::arrayValue(array);
}
Example #4
0
void LuaStack::pushLuaValueArray(const LuaValueArray& array)
{
    lua_newtable(_state);                                              /* L: table */
    int index = 1;
    for (LuaValueArrayIterator it = array.begin(); it != array.end(); ++it)
    {
        pushLuaValue(*it);                                            /* L: table value */
        lua_rawseti(_state, -2, index);          /* table[index] = value, L: table */
        ++index;
    }
}
int lua_PluginFacebookLua_PluginFacebook_getFriends(lua_State* tolua_S)
{
    int argc = 0;
    bool ok  = true;

#if COCOS2D_DEBUG >= 1
    tolua_Error tolua_err;
#endif

#if COCOS2D_DEBUG >= 1
    if (!tolua_isusertable(tolua_S,1,"sdkbox.PluginFacebook",0,&tolua_err)) goto tolua_lerror;
#endif

    argc = lua_gettop(tolua_S) - 1;

    if (argc == 0)
    {
        if(!ok)
        {
            tolua_error(tolua_S,"invalid arguments in function 'lua_PluginFacebookLua_PluginFacebook_getFriends'", nullptr);
            return 0;
        }
        std::vector<sdkbox::FBGraphUser> ret = sdkbox::PluginFacebook::getFriends();
        LuaStack* stack = LUAENGINE->getLuaStack();
        LuaValueArray array;
        for (std::vector<sdkbox::FBGraphUser>::iterator it = ret.begin(); it != ret.end(); it++)
        {
            LuaValueDict dict;
            dict[FBGraphUser_ID]         = LuaValue::stringValue(it->uid);
            dict[FBGraphUser_NAME]       = LuaValue::stringValue(it->name);
            dict[FBGraphUser_FIRST_NAME] = LuaValue::stringValue(it->firstName);
            dict[FBGraphUser_LAST_NAME]  = LuaValue::stringValue(it->lastName);
            dict[FBGraphUser_INSTALLED]  = LuaValue::booleanValue(it->isInstalled);

            array.push_back(LuaValue::dictValue(dict));
        }

        stack->pushLuaValueArray(array);

        return 1;
    }
    luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "sdkbox.PluginFacebook:getFriends",argc, 0);
    return 0;
#if COCOS2D_DEBUG >= 1
    tolua_lerror:
    tolua_error(tolua_S,"#ferror in function 'lua_PluginFacebookLua_PluginFacebook_getFriends'.",&tolua_err);
#endif
    return 0;
}
Example #6
0
int Viewport::pushValueToLua(CXLUAFUNC handler,const Vec2 &point)
{
    int ret = -1;
    if (0 == handler) {
        return ret;
    }
    auto stack = LuaEngine::getInstance()->getLuaStack();
    LuaValueArray array;
    LuaValue value1 = LuaValue::intValue(point.x);
    LuaValue value2 = LuaValue::intValue(point.y);
    array.push_back(value1);
    array.push_back(value2);
    stack->pushLuaValueArray(array);
    ret = stack->executeFunctionByHandler(handler, 1);
    stack->clean();
    return ret;
}
    void onRequestRewards(const char *placement, std::vector<sdkbox::ValuePotionReward> rewards) {
        LuaStack* stack = LUAENGINE->getLuaStack();
        LuaValueArray array;

        for (int i = 0; i < rewards.size(); i++) {
            LuaValueDict rewardDict;
            rewardDict.insert(std::make_pair("name", LuaValue::stringValue(rewards[i].name)));
            rewardDict.insert(std::make_pair("quantity", LuaValue::intValue(rewards[i].quantity)));
            array.push_back(LuaValue::dictValue(rewardDict));
        }

        LuaValueDict dict;

        dict.insert(std::make_pair("event", LuaValue::stringValue("onRequestRewards")));
        dict.insert(std::make_pair("placement", LuaValue::stringValue(placement)));
        dict.insert(std::make_pair("rewards", LuaValue::arrayValue(array)));

        stack->pushLuaValueDict(dict);
        stack->executeFunctionByHandler(mLuaHandler, 1);
    }
static int lua_get_XMLHttpRequest_response(lua_State* L)
{
    LuaMinXmlHttpRequest* self = nullptr;
    
#if COCOS2D_DEBUG >= 1
    tolua_Error tolua_err;
    if (!tolua_isusertype(L,1,"cc.XMLHttpRequest",0,&tolua_err)) goto tolua_lerror;
#endif
    
    self = (LuaMinXmlHttpRequest*)  tolua_tousertype(L,1,0);
#if COCOS2D_DEBUG >= 1
    if (nullptr == self)
    {
        tolua_error(L,"invalid 'self' in function 'lua_get_XMLHttpRequest_response'\n", nullptr);
		return 0;
    }
#endif
    
    if (self->getResponseType() == LuaMinXmlHttpRequest::ResponseType::JSON)
    {
        if (self->getReadyState() != LuaMinXmlHttpRequest::DONE || self->getErrorFlag())
            return 0;
        
        lua_pushstring(L, self->getDataStr().c_str());
        return 1;
    }
    else if(self->getResponseType() == LuaMinXmlHttpRequest::ResponseType::ARRAY_BUFFER)
    {
        if (self->getReadyState() != LuaMinXmlHttpRequest::DONE || self->getErrorFlag())
            return 0;
        
        LuaStack *pStack = LuaEngine::getInstance()->getLuaStack();
        if (NULL == pStack) {
            return 0;
        }
        
        lua_State *tolua_s = pStack->getLuaState();
        if (NULL == tolua_s) {
            return 0;
        }
        
        LuaValueArray array;
        
        uint8_t* tmpData = new uint8_t[self->getDataSize()];
        if (nullptr == tmpData)
        {
            return 0;
        }
        
        self->getByteData(tmpData);
        
        for (int i = 0 ; i < self->getDataSize(); i++)
        {
            LuaValue value = LuaValue::intValue(tmpData[i]);
            array.push_back(value);
        }
        
        pStack->pushLuaValueArray(array);
        
        CC_SAFE_DELETE_ARRAY(tmpData);
        return 1;
    }
    else
    {
        lua_pushstring(L, self->getDataStr().c_str());
        return 1;
    }
    
#if COCOS2D_DEBUG >= 1
tolua_lerror:
    tolua_error(L,"#ferror in function 'lua_get_XMLHttpRequest_response'.",&tolua_err);
    return 0;
#endif
}