bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(&CCEGLView::sharedOpenGLView()); // enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices. // pDirector->enableRetinaDisplay(true); // turn on display FPS pDirector->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); // register lua engine CCScriptEngineProtocol* pEngine = CCLuaEngine::engine(); CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) CCString* pstrFileContent = CCString::createWithContentsOfFile("hello.lua"); if (pstrFileContent) { pEngine->executeString(pstrFileContent->getCString()); } #else string path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("hello.lua"); pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str()); pEngine->executeScriptFile(path.c_str()); #endif return true; }
LUA_STRING CCCrypto::encodingBase64Lua(bool isDecoding, const char* input, int inputLength) { CCScriptEngineProtocol* engine = CCScriptEngineManager::sharedManager()->getScriptEngine(); engine->cleanLuaStack(); lua_State* L = engine->getLuaState(); int outputLength = inputLength * 2; char* output = static_cast<char*>(malloc(outputLength)); int dataUsed = -1; if (isDecoding) { dataUsed = decodeBase64(input, output, outputLength); } else { dataUsed = encodeBase64(input, inputLength, output, outputLength); } if (dataUsed > 0 && dataUsed < outputLength) { lua_pushlstring(L, output, dataUsed); } else { lua_pushnil(L); } free(output); return 1; }
CCObject::~CCObject(void) { // if the object is managed, we should remove it // from pool manager if (m_uAutoReleaseCount > 0) { CCPoolManager::sharedPoolManager()->removeObject(this); } // if the object is referenced by Lua engine, remove it CCScriptEngineManager* scriptManager = CCScriptEngineManager::sharedManager(); if ( scriptManager ) { if (m_nLuaID) { CCScriptEngineManager::sharedManager()->getScriptEngine()->removeScriptObjectByCCObject(this); } else { CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); if (pEngine != NULL && pEngine->getScriptType() == kScriptTypeJavascript) { pEngine->removeScriptObjectByCCObject(this); } } } }
LUA_STRING CCCrypto::MD5Lua(char* input, int inputLength, bool isRawOutput) { static const char* hextable = "0123456789abcdef"; unsigned char buffer[16]; MD5(static_cast<void*>(input), inputLength, buffer); CCScriptEngineProtocol* engine = CCScriptEngineManager::sharedManager()->getScriptEngine(); engine->cleanLuaStack(); lua_State* L = engine->getLuaState(); if (isRawOutput) { lua_pushlstring(L, (char*)buffer, 16); } else { char md5str[33]; md5str[32] = 0; int ci = 0; for (int i = 0; i < 16; ++i) { unsigned char c = buffer[i]; md5str[ci++] = hextable[(c >> 4) & 0x0f]; md5str[ci++] = hextable[c & 0x0f]; } lua_pushstring(L, md5str); } return 1; }
bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(&CCEGLView::sharedOpenGLView()); // enable High Resource Mode(2x, such as iphone4) and maintains low resource on other devices. // pDirector->enableRetinaDisplay(true); // turn on display FPS pDirector->setDisplayFPS(true); // pDirector->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); // register lua engine CCScriptEngineProtocol* pEngine = CCLuaEngine::engine(); CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) unsigned long size; #ifdef KILLA char *pFileContent = (char*)CCFileUtils::getFileData("boot.kia", "r", &size); #else char *pFileContent = (char*)CCFileUtils::getFileData("boot.lua", "r", &size); #endif if (pFileContent) { // copy the file contents and add '\0' at the end, or the lua parser can not parse it char *pCodes = new char[size + 1]; pCodes[size] = '\0'; memcpy(pCodes, pFileContent, size); delete[] pFileContent; pEngine->executeString(pCodes); delete []pCodes; } #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE) #ifdef KILLA string path = CCFileUtils::fullPathFromRelativePath("boot.kia"); #else string path = CCFileUtils::fullPathFromRelativePath("boot.lua"); #endif pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str()); pEngine->executeScriptFile(path.c_str()); #endif return true; }
CCNode::CCNode(void) : m_fRotationX(0.0f) , m_fRotationY(0.0f) , m_fScaleX(1.0f) , m_fScaleY(1.0f) , m_fVertexZ(0.0f) , m_obPosition(CCPointZero) , m_fSkewX(0.0f) , m_fSkewY(0.0f) , m_obAnchorPointInPoints(CCPointZero) , m_obAnchorPoint(CCPointZero) , m_obContentSize(CCSizeZero) , m_sAdditionalTransform(CCAffineTransformMakeIdentity()) , m_pCamera(NULL) // children (lazy allocs) // lazy alloc , m_pGrid(NULL) , m_nZOrder(0) , m_pChildren(NULL) , m_pParent(NULL) // "whole screen" objects. like Scenes and Layers, should set m_bIgnoreAnchorPointForPosition to true , m_nTag(kCCNodeTagInvalid) // userData is always inited as nil , m_pUserData(NULL) , m_pUserObject(NULL) , m_pUserObjectNR(NULL) , m_pShaderProgram(NULL) , m_eGLServerState(ccGLServerState(0)) , m_uOrderOfArrival(0) , m_bRunning(false) , m_bTransformDirty(true) , m_bInverseDirty(true) , m_bAdditionalTransformDirty(false) , m_bVisible(true) , m_bIgnoreAnchorPointForPosition(false) , m_bReorderChildDirty(false) , m_pComponentContainer(NULL) , m_bInformDetach(false) { // set default scheduler and actionManager CCDirector *director = CCDirector::sharedDirector(); m_pActionManager = director->getActionManager(); CC_SAFE_RETAIN(m_pActionManager); m_pScheduler = director->getScheduler(); CC_SAFE_RETAIN(m_pScheduler); CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); m_eScriptType = pEngine != NULL ? pEngine->getScriptType() : kScriptTypeNone; m_pComponentContainer = new CCComponentContainer(this); memset(&m_nUpdateScriptHandler, 0, sizeof(ccScriptFunction)); memset(&m_nScriptHandler, 0, sizeof(ccScriptFunction)); }
CCNode::CCNode(void) : m_nZOrder(0) , m_fVertexZ(0.0f) , m_fRotation(0.0f) , m_fScaleX(1.0f) , m_fScaleY(1.0f) , m_tPosition(CCPointZero) , m_fSkewX(0.0f) , m_fSkewY(0.0f) // children (lazy allocs) , m_pChildren(NULL) // lazy alloc , m_pCamera(NULL) , m_pGrid(NULL) , m_bIsVisible(true) , m_tAnchorPoint(CCPointZero) , m_tAnchorPointInPoints(CCPointZero) , m_tContentSize(CCSizeZero) , m_bIsRunning(false) , m_pParent(NULL) // "whole screen" objects. like Scenes and Layers, should set m_bIgnoreAnchorPointForPosition to false , m_bIgnoreAnchorPointForPosition(false) , m_nTag(kCCNodeTagInvalid) // userData is always inited as nil , m_pUserData(NULL) , m_pUserObject(NULL) , m_bIsTransformDirty(true) , m_bIsInverseDirty(true) , m_nScriptHandler(0) , m_pShaderProgram(NULL) , m_nOrderOfArrival(0) , m_glServerState(CC_GL_BLEND) , m_bReorderChildDirty(false) #if DEBUG , m_bpcTag("") #endif { // set default scheduler and actionManager CCDirector *director = CCDirector::sharedDirector(); m_pActionManager = director->getActionManager(); m_pActionManager->retain(); m_pScheduler = director->getScheduler(); m_pScheduler->retain(); CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); m_eScriptType = pEngine != NULL ? pEngine->getScriptType() : kScriptTypeNone; }
CAObject::~CAObject(void) { CAScheduler::unscheduleAllForTarget(this); CC_SAFE_RELEASE(m_pUserObject); if (m_uAutoReleaseCount > 0) { CAPoolManager::sharedPoolManager()->removeObject(this); } CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); if (pEngine != NULL && pEngine->getScriptType() == kScriptTypeJavascript) { pEngine->removeScriptObjectByCCObject(this); } }
void CCScriptEventDispatcher::removeScriptEventListenersByTag(int tag) { if (!m_scriptEventListeners) return; CCScriptEngineProtocol *engine = CCScriptEngineManager::sharedManager()->getScriptEngine(); unsigned int c = m_scriptEventListeners->count(); CCScriptHandlePair *p; for (unsigned int i = 0; i < c; ++i) { p = dynamic_cast<CCScriptHandlePair*>(m_scriptEventListeners->objectAtIndex(i)); if (!p->removed && p->tag == tag) { p->removed = true; engine->removeScriptHandler(p->listener); } } }
void CCMenuItem::activate() { if (m_bIsEnabled) { if (m_pListener && m_pfnSelector) { (m_pListener->*m_pfnSelector)(this); } if (m_nScriptHandler) { CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); // pEngine->executeFunctionWithCCObject(m_nScriptHandler, this, "CCMenuItem"); pEngine->executeFunctionWithIntegerData(m_nScriptHandler, this->getTag()); } } }
NS_CC_BEGIN CCNode::CCNode(void) : m_fRotation(0.0f) , m_fScaleX(1.0f) , m_fScaleY(1.0f) , m_fPositionZ(0.0f) , m_obPosition(CCPointZero) , m_fSkewX(0.0f) , m_fSkewY(0.0f) , m_obAnchorPointInPoints(CCPointZero) , m_obAnchorPoint(CCPointZero) , m_obContentSize(CCSizeZero) , m_pCamera(NULL) // children (lazy allocs) // lazy alloc , m_pGrid(NULL) , m_nZOrder(0) , m_pChildren(NULL) , m_pParent(NULL) // "whole screen" objects. like Scenes and Layers, should set m_bIgnoreAnchorPointForPosition to false , m_nTag(kCCNodeTagInvalid) , m_pUserObject(NULL) , m_pShaderProgram(NULL) , m_eGLServerState(ccGLServerState(0)) , m_bRunning(false) , m_bTransformDirty(true) , m_bInverseDirty(true) , m_bVisible(true) , m_bIgnoreAnchorPointForPosition(false) , m_bReorderChildDirty(false) , m_nScriptHandler(0) , m_nUpdateScriptHandler(0) { // set default scheduler and actionManager CCDirector *director = CCDirector::sharedDirector(); m_pActionManager = director->getActionManager(); m_pActionManager->retain(); m_pScheduler = director->getScheduler(); m_pScheduler->retain(); CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); m_eScriptType = pEngine != NULL ? pEngine->getScriptType() : kScriptTypeNone; }
CCNode::CCNode(void) : m_fRotationX(0.0f) , m_fRotationY(0.0f) , m_fScaleX(1.0f) , m_fScaleY(1.0f) , m_fVertexZ(0.0f) , m_obPosition(CCPointZero) , m_fSkewX(0.0f) , m_fSkewY(0.0f) , m_obAnchorPointInPoints(CCPointZero) , m_obAnchorPoint(CCPointZero) , m_obContentSize(CCSizeZero) , m_sAdditionalTransform(CCAffineTransformMakeIdentity()) , m_pCamera(NULL) // children (lazy allocs) // lazy alloc , m_pGrid(NULL) , m_nZOrder(0) , m_pChildren(NULL) , m_pParent(NULL) // "whole screen" objects. like Scenes and Layers, should set m_bIgnoreAnchorPointForPosition to true , m_nTag(kCCNodeTagInvalid) // userData is always inited as nil , m_pUserData(NULL) , m_pUserObject(NULL) , m_pShaderProgram(NULL) , m_eGLServerState(ccGLServerState(0)) , m_uOrderOfArrival(0) , m_bRunning(false) , m_bTransformDirty(true) , m_bInverseDirty(true) , m_bAdditionalTransformDirty(false) , m_bVisible(true) , m_bIgnoreAnchorPointForPosition(false) , m_bReorderChildDirty(false) , m_nScriptHandler(0) , m_nUpdateScriptHandler(0) , m_pComponentContainer(NULL) , m_bClipEnabled(false) , m_oClipRect(CCRectZero) , m_bTouchEnabled(false) , m_bTouchChildren(true) , m_drawOrder(0) , m_pScriptTouchHandlerEntry(NULL) ,_displayedOpacity(255) , _realOpacity(255) , _displayedColor(ccWHITE) , _realColor(ccWHITE) , _cascadeColorEnabled(true) , _cascadeOpacityEnabled(true) { // set default scheduler and actionManager CCDirector *director = CCDirector::sharedDirector(); m_pActionManager = director->getActionManager(); m_pActionManager->retain(); m_pScheduler = director->getScheduler(); m_pScheduler->retain(); CCScriptEngineProtocol* pEngine = CCScriptEngineManager::sharedManager()->getScriptEngine(); m_eScriptType = pEngine != NULL ? pEngine->getScriptType() : kScriptTypeNone; m_pComponentContainer = new CCComponentContainer(this); }