#include "cocos2d.h" #include "CCEGLView.h" #include "AppDelegate.h" [! if CC_USE_LUA] #include "CCLuaEngine.h" [! else] #include "HelloWorldScene.h" [! endif] [! if CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE] #include "SimpleAudioEngine.h" using namespace CocosDenshion; [! endif] USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { [! if CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE] SimpleAudioEngine::end(); [! endif] } bool AppDelegate::initInstance() { bool bRet = false; do { #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) // Initialize OpenGLView instance, that release by CCDirector when application terminate. // The HelloWorld is designed as HVGA. CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd || ! pMainWnd->Create(TEXT("cocos2d: Hello World"), 480, 320)); // set the design resolution screen size, if you want to use Design Resoulution scaled to current screen, please uncomment next line. //pMainWnd->setDesignResolutionSize(480, 320); #endif // CC_PLATFORM_WIN32 #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) // OpenGLView initialized in testsAppDelegate.mm on ios platform, nothing need to do here. #endif // CC_PLATFORM_IOS #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) // OpenGLView initialized in HelloWorld/android/jni/helloworld/main.cpp // the default setting is to create a fullscreen view // if you want to use auto-scale, please enable view->create(320,480) in main.cpp // if the resources under '/sdcard" or other writeable path, set it. // warning: the audio source should in assets/ // cocos2d::CCFileUtils::setResourcePath("/sdcard"); #endif // CC_PLATFORM_ANDROID #if (CC_TARGET_PLATFORM == CC_PLATFORM_MARMALADE) // MaxAksenov said it's NOT a very elegant solution. I agree, haha CCDirector::sharedDirector()->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft); #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) // Initialize OpenGLView instance, that release by CCDirector when application terminate. // The HelloWorld is designed as HVGA. CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd || ! pMainWnd->Create("cocos2d: Hello World", 800, 480,480, 320)); CCFileUtils::setResourcePath("../Resource/"); #endif // CC_PLATFORM_LINUX #if (CC_TARGET_PLATFORM == CC_PLATFORM_BADA) CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd|| ! pMainWnd->Create(this, 480, 320)); pMainWnd->setDeviceOrientation(Osp::Ui::ORIENTATION_LANDSCAPE); CCFileUtils::setResourcePath("/Res/"); #endif // CC_PLATFORM_BADA #if (CC_TARGET_PLATFORM == CC_PLATFORM_QNX) CCEGLView * pMainWnd = new CCEGLView(); CC_BREAK_IF(! pMainWnd|| ! pMainWnd->Create(480, 320)); CCFileUtils::setResourcePath("./app/native/Resource"); #endif // CC_PLATFORM_QNX bRet = true; } while (0); return bRet; } 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); [! if CC_USE_LUA] // register lua engine CCScriptEngineProtocol* pEngine = CCLuaEngine::engine(); CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) unsigned long size; char *pFileContent = (char*)CCFileUtils::getFileData("hello.lua", "r", &size); 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) std::string path = CCFileUtils::fullPathFromRelativePath("hello.lua"); pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str()); pEngine->executeScriptFile(path.c_str()); #endif [! else] // create a scene. it's an autorelease object CCScene *pScene = HelloWorld::scene(); // run pDirector->runWithScene(pScene); [! endif] return true; } // This function will be called when the app is inactive. When comes a phone call,it's be invoked too void AppDelegate::applicationDidEnterBackground() { CCDirector::sharedDirector()->pause(); [! if CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE] SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); [! endif] } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->resume(); [! if CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE] SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); [! endif] }