static int SendBinaryMessageToLua(int nHandler,const unsigned char* pTable,int nLength)
{
    if (NULL == pTable || nHandler <= 0) {
        return 0;
    }
    
    if (NULL == CCScriptEngineManager::sharedManager()->getScriptEngine()) {
        return 0;
    }
    
    CCLuaStack *pStack = CCLuaEngine::defaultEngine()->getLuaStack();
    if (NULL == pStack) {
        return 0;
    }

    lua_State *tolua_s = pStack->getLuaState();
    if (NULL == tolua_s) {
        return 0;
    }
    
    int nRet = 0;
    CCLuaValueArray array;
    for (int i = 0 ; i < nLength; i++) {
        CCLuaValue value = CCLuaValue::intValue(pTable[i]);
        array.push_back(value);
    }
    
    pStack->pushCCLuaValueArray(array);
    nRet = pStack->executeFunctionByHandler(nHandler, 1);
    pStack->clean();
    return nRet;
}
예제 #2
0
void CCLuaStack::pushCCLuaValueArray(const CCLuaValueArray& array)
{
    lua_newtable(m_state);                                              /* L: table */
    int index = 1;
    for (CCLuaValueArrayIterator it = array.begin(); it != array.end(); ++it)
    {
        pushCCLuaValue(*it);                                            /* L: table value */
        lua_rawseti(m_state, -2, index);          /* table[index] = value, L: table */
        ++index;
    }
}
예제 #3
0
파일: CCLuaEngine.cpp 프로젝트: JoeHu/ccgui
int CCLuaEngine::pushCCLuaValueArray(const CCLuaValueArray& array)
{
    lua_newtable(m_state);                                      /* stack: table */
    int index = 1;
    for (CCLuaValueArrayIterator it = array.begin(); it != array.end(); ++it)
    {
        pushCCLuaValue(*it);                                    /* stack: table value */
        lua_rawseti(m_state, -2, index);  /* table[index] = value, stack: table */
        ++index;
    }
    
    return lua_gettop(m_state);
}
예제 #4
0
void CCZipFile::getFileList()
{
	if(!m_hasGenFlist)
	{
		genFileList();
	}
    CCLuaValueArray array;
	for(auto a:m_fileList)
	{
        CCLuaValue value = CCLuaValue::stringValue(a.first);
        array.push_back(value);
    }    
    CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack();
    stack->clean();
    stack->pushCCLuaValueArray(array);
	return;
}
예제 #5
0
int main(int argc, char *argv[])
{
    //
    // save the argv first
    // crash sometimes on OSX
    //
    std::vector<std::string> args;
    for (int i = 1; i < argc; i++)
    {
        args.push_back(argv[i]);
    }

    trackerStart();
    AppDelegate app(argc, argv);
    MsgHandlerWapper::instance();
    Player *player = Player::instance();
    player->initConsole();


    // mac: ~/Library/Preferences/com.com-cocoachina-quick.quick-cocos2d-x player.plist
    // win: regedit
    qApp->setOrganizationDomain("com.cocoachina.quick");
    qApp->setApplicationName("quick-cocos2d-x player");

    // set quick root path from env
    QString quickCocos2dxRoot = player->getQuickRootPathFromSystem();
    if (!quickCocos2dxRoot.isEmpty())
    {
        SimulatorConfig::sharedDefaults()->setQuickCocos2dxRootPath(quickCocos2dxRoot.toLocal8Bit().constData());
    }

    // recent files
    CCLuaValueArray recentArray;
    QSettings settings;
    QVariantList recents = settings.value(kOpenRecentFiles).toList();
    Q_FOREACH(QVariant recentItem, recents)
    {
        QVariantMap item = recentItem.toMap();
        QString title = item.value(kRecentItemTitle).toString();
        recentArray.push_back(CCLuaValue::stringValue(title.toUtf8().constData()));
    }