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; }
void LuaArmatureWrapper::addArmatureFileInfoAsyncCallback(float percent) { if (0 != m_lHandler) { CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); CCLuaStack* pStack = pEngine->getLuaStack(); pStack->pushFloat(percent); pStack->executeFunctionByHandler(m_lHandler, 1); pStack->clean(); } }
void HStoreImplWin32::handleScriptStoreRestored(CCStorePaymentTransaction* transaction) { #ifdef COCOS2D_LUA if (!m_storeScriptHandler) { return; } CCLuaEngine *luaEngine = (CCLuaEngine*)CCScriptEngineManager::sharedManager()->getScriptEngine(); CCLuaStack *stack = luaEngine->getLuaStack(); stack->pushString("restored"); stack->pushCCObject(transaction, "CCStorePaymentTransaction"); stack->executeFunctionByHandler(m_storeScriptHandler, 2); #endif // COCOS2D_LUA }
void LuaCocoStudioEventListener::eventCallbackFunc(CCObject* sender,int eventType) { if (0 != m_lHandler) { CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); CCLuaStack* pStack = pEngine->getLuaStack(); pStack->pushCCObject(sender, "CCObject"); pStack->pushInt(eventType); pStack->executeFunctionByHandler(m_lHandler, 2); pStack->clean(); } }
void LuaArmatureWrapper::movementEventCallback(CCArmature* armature, MovementEventType type,const char* movementID) { if (0 != m_lHandler) { CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); CCLuaStack* pStack = pEngine->getLuaStack(); pStack->pushCCObject(armature, "CCArmature"); pStack->pushInt(type); pStack->pushString(movementID); pStack->executeFunctionByHandler(m_lHandler, 3); pStack->clean(); } }
void LuaArmatureWrapper::frameEventCallback(CCBone* bone, const char* frameEventName, int orginFrameIndex, int currentFrameIndex) { if (0 != m_lHandler) { CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); CCLuaStack* pStack = pEngine->getLuaStack(); pStack->pushCCObject(bone, "CCBone"); pStack->pushString(frameEventName); pStack->pushInt(orginFrameIndex); pStack->pushInt(currentFrameIndex); pStack->executeFunctionByHandler(m_lHandler, 4); pStack->clean(); } }
void CCNativeWin32::showAlertViewWithLuaListener(LUA_FUNCTION listener) { /* wstring title(m_alertViewTitle.begin(), m_alertViewTitle.end()); wstring message(m_alertViewMessage.begin(), m_alertViewMessage.end()); int button = MessageBox(NULL, message.c_str(), title.c_str(), MB_OKCANCEL); */ WCHAR *wszTitleBuf; WCHAR *wszMessageBuf; int titleBufLen = MultiByteToWideChar(CP_UTF8, 0, m_alertViewTitle.c_str(), -1, NULL, 0); int messageBufLen = MultiByteToWideChar(CP_UTF8, 0, m_alertViewMessage.c_str(), -1, NULL, 0); wszTitleBuf = new WCHAR[titleBufLen+1]; wszMessageBuf = new WCHAR[messageBufLen+1]; memset(wszTitleBuf, 0, sizeof(WCHAR)*(titleBufLen + 1) ); memset(wszMessageBuf, 0, sizeof(WCHAR)*(messageBufLen + 1) ); MultiByteToWideChar(CP_UTF8, 0, m_alertViewTitle.c_str(), -1, wszTitleBuf, titleBufLen); MultiByteToWideChar(CP_UTF8, 0, m_alertViewMessage.c_str(),-1, wszMessageBuf, messageBufLen); int button = MessageBox(NULL,wszMessageBuf, wszTitleBuf, MB_OKCANCEL); delete [] wszTitleBuf; delete [] wszMessageBuf; CCLuaValueDict event; event["action"] = CCLuaValue::stringValue("clicked"); if (button == IDOK || button == IDYES) { event["buttonIndex"] = CCLuaValue::intValue(1); } else { event["buttonIndex"] = CCLuaValue::intValue(2); } CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->pushCCLuaValueDict(event); stack->executeFunctionByHandler(listener, 1); }
void CCNativeWin32::showAlertViewWithLuaListener(LUA_FUNCTION listener) { wstring title(m_alertViewTitle.begin(), m_alertViewTitle.end()); wstring message(m_alertViewMessage.begin(), m_alertViewMessage.end()); int button = MessageBox(NULL, message.c_str(), title.c_str(), MB_OKCANCEL); CCLuaValueDict event; event["action"] = CCLuaValue::stringValue("clicked"); if (button == IDOK || button == IDYES) { event["buttonIndex"] = CCLuaValue::intValue(1); } else { event["buttonIndex"] = CCLuaValue::intValue(2); } CCLuaStack* stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->pushCCLuaValueDict(event); stack->executeFunctionByHandler(listener, 1); }
void CWidgetLayout::executeTouchCancelledAfterLongClickHandler(CCObject* pSender, CCTouch *pTouch, float fDuration) { if( m_pTouchCancelledAfterLongClickListener && m_pTouchCancelledAfterLongClickHandler ) { (m_pTouchCancelledAfterLongClickListener->*m_pTouchCancelledAfterLongClickHandler)(pSender, pTouch, fDuration); } #if USING_LUA else if( m_pTouchCancelledAfterLongClickScriptHandler != 0 ) { CCLuaEngine* pEngine = CCLuaEngine::defaultEngine(); CCLuaStack* pStack = pEngine->getLuaStack(); pStack->pushCCObject(pSender, "CCObject"); pStack->pushCCObject(pTouch, "CCTouch"); pStack->pushFloat(fDuration); int nRet = pStack->executeFunctionByHandler(m_pTouchCancelledAfterLongClickScriptHandler, 3); pStack->clean(); } #endif }
void CCHTTPRequest::update(float dt) { if (m_state == kCCHTTPRequestStateInProgress) { #if CC_LUA_ENGINE_ENABLED > 0 if (m_listener) { CCLuaValueDict dict; dict["name"] = CCLuaValue::stringValue("inprogress"); dict["dltotal"] = CCLuaValue::floatValue((float)m_dltotal); dict["dlnow"] = CCLuaValue::floatValue((float)m_dlnow); dict["ultotal"] = CCLuaValue::floatValue((float)m_ultotal); dict["ulnow"] = CCLuaValue::floatValue((float)m_ulnow); dict["request"] = CCLuaValue::ccobjectValue(this, "CCHTTPRequest"); CCLuaStack *stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->clean(); stack->pushCCLuaValueDict(dict); stack->executeFunctionByHandler(m_listener, 1); } #endif return; } CCDirector::sharedDirector()->getScheduler()->unscheduleAllForTarget(this); if (m_curlState != kCCHTTPRequestCURLStateIdle) { CCDirector::sharedDirector()->getScheduler()->scheduleSelector(schedule_selector(CCHTTPRequest::checkCURLState), this, 0, false); } if (m_state == kCCHTTPRequestStateCompleted) { CCLOG("CCHTTPRequest[0x%04x] - request completed", m_id); if (m_delegate) m_delegate->requestFinished(this); } else { CCLOG("CCHTTPRequest[0x%04x] - request failed", m_id); if (m_delegate) m_delegate->requestFailed(this); } #if CC_LUA_ENGINE_ENABLED > 0 if (m_listener) { CCLuaValueDict dict; switch (m_state) { case kCCHTTPRequestStateCompleted: dict["name"] = CCLuaValue::stringValue("completed"); break; case kCCHTTPRequestStateCancelled: dict["name"] = CCLuaValue::stringValue("cancelled"); break; case kCCHTTPRequestStateFailed: dict["name"] = CCLuaValue::stringValue("failed"); break; default: dict["name"] = CCLuaValue::stringValue("unknown"); } dict["request"] = CCLuaValue::ccobjectValue(this, "CCHTTPRequest"); CCLuaStack *stack = CCLuaEngine::defaultEngine()->getLuaStack(); stack->clean(); stack->pushCCLuaValueDict(dict); stack->executeFunctionByHandler(m_listener, 1); } #endif }