#include "AppDelegate.h" #include "scripting/js-bindings/auto/jsb_cocos2dx_3d_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_3d_extension_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_builder_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_extension_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_network_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_navmesh_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_physics3d_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_spine_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_studio_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_ui_auto.hpp" #include "scripting/js-bindings/manual/3d/jsb_cocos2dx_3d_manual.h" #include "scripting/js-bindings/manual/chipmunk/js_bindings_chipmunk_registration.h" #include "scripting/js-bindings/manual/cocosbuilder/js_bindings_ccbreader.h" #include "scripting/js-bindings/manual/cocostudio/jsb_cocos2dx_studio_manual.h" #include "scripting/js-bindings/manual/extension/jsb_cocos2dx_extension_manual.h" #include "scripting/js-bindings/manual/jsb_opengl_registration.h" #include "scripting/js-bindings/manual/localstorage/js_bindings_system_registration.h" #include "scripting/js-bindings/manual/navmesh/jsb_cocos2dx_navmesh_manual.h" #include "scripting/js-bindings/manual/network/XMLHTTPRequest.h" #include "scripting/js-bindings/manual/network/jsb_socketio.h" #include "scripting/js-bindings/manual/network/jsb_websocket.h" #include "scripting/js-bindings/manual/physics3d/jsb_cocos2dx_physics3d_manual.h" #include "scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.h" #include "scripting/js-bindings/manual/ui/jsb_cocos2dx_ui_manual.h" #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "scripting/js-bindings/auto/jsb_cocos2dx_experimental_video_auto.hpp" #include "scripting/js-bindings/auto/jsb_cocos2dx_experimental_webView_auto.hpp" #include "scripting/js-bindings/manual/experimental/jsb_cocos2dx_experimental_video_manual.h" #include "scripting/js-bindings/manual/experimental/jsb_cocos2dx_experimental_webView_manual.h" #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #include "scripting/js-bindings/auto/jsb_cocos2dx_audioengine_auto.hpp" #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include "cocos/scripting/js-bindings/manual/platform/android/CCJavascriptJavaBridge.h" #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) #include "cocos/scripting/js-bindings/manual/platform/ios/JavaScriptObjCBridge.h" #endif // #define USE_AUDIO_ENGINE 1 // #define USE_SIMPLE_AUDIO_ENGINE 1 #if USE_AUDIO_ENGINE && USE_SIMPLE_AUDIO_ENGINE #error "Don't use AudioEngine and SimpleAudioEngine at the same time. Please just select one in your game!" #endif #if USE_AUDIO_ENGINE #include "audio/include/AudioEngine.h" using namespace cocos2d::experimental; #elif USE_SIMPLE_AUDIO_ENGINE #include "audio/include/SimpleAudioEngine.h" using namespace CocosDenshion; #endif USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { #if USE_AUDIO_ENGINE AudioEngine::end(); #elif USE_SIMPLE_AUDIO_ENGINE SimpleAudioEngine::end(); #endif ScriptEngineManager::destroyInstance(); } void AppDelegate::initGLContextAttrs() { GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8, 0}; GLView::setGLContextAttrs(glContextAttrs); } bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { #if(CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) glview = cocos2d::GLViewImpl::create("HelloJavascript"); #else glview = cocos2d::GLViewImpl::createWithRect("HelloJavascript", Rect(0,0,960,640)); #endif director->setOpenGLView(glview); } // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0f / 60); ScriptingCore* sc = ScriptingCore::getInstance(); sc->addRegisterCallback(register_all_cocos2dx); sc->addRegisterCallback(register_cocos2dx_js_core); sc->addRegisterCallback(jsb_register_system); // extension can be commented out to reduce the package sc->addRegisterCallback(register_all_cocos2dx_extension); sc->addRegisterCallback(register_all_cocos2dx_extension_manual); // chipmunk can be commented out to reduce the package sc->addRegisterCallback(jsb_register_chipmunk); // opengl can be commented out to reduce the package sc->addRegisterCallback(JSB_register_opengl); // builder can be commented out to reduce the package sc->addRegisterCallback(register_all_cocos2dx_builder); sc->addRegisterCallback(register_CCBuilderReader); // ui can be commented out to reduce the package, attention studio need ui module sc->addRegisterCallback(register_all_cocos2dx_ui); sc->addRegisterCallback(register_all_cocos2dx_ui_manual); // studio can be commented out to reduce the package, sc->addRegisterCallback(register_all_cocos2dx_studio); sc->addRegisterCallback(register_all_cocos2dx_studio_manual); // spine can be commented out to reduce the package sc->addRegisterCallback(register_all_cocos2dx_spine); sc->addRegisterCallback(register_all_cocos2dx_spine_manual); // XmlHttpRequest can be commented out to reduce the package sc->addRegisterCallback(MinXmlHttpRequest::_js_register); // websocket can be commented out to reduce the package sc->addRegisterCallback(register_jsb_websocket); // socket io can be commented out to reduce the package sc->addRegisterCallback(register_jsb_socketio); // Downloader sc->addRegisterCallback(register_all_cocos2dx_network); // 3d can be commented out to reduce the package sc->addRegisterCallback(register_all_cocos2dx_3d); sc->addRegisterCallback(register_all_cocos2dx_3d_manual); // 3d extension can be commented out to reduce the package sc->addRegisterCallback(register_all_cocos2dx_3d_extension); #if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION // Physics 3d can be commented out to reduce the package sc->addRegisterCallback(register_all_cocos2dx_physics3d); sc->addRegisterCallback(register_all_cocos2dx_physics3d_manual); #endif #if CC_USE_NAVMESH sc->addRegisterCallback(register_all_cocos2dx_navmesh); sc->addRegisterCallback(register_all_cocos2dx_navmesh_manual); #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) sc->addRegisterCallback(register_all_cocos2dx_experimental_video); sc->addRegisterCallback(register_all_cocos2dx_experimental_video_manual); sc->addRegisterCallback(register_all_cocos2dx_experimental_webView); sc->addRegisterCallback(register_all_cocos2dx_experimental_webView_manual); #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) sc->addRegisterCallback(register_all_cocos2dx_audioengine); #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) sc->addRegisterCallback(JavascriptJavaBridge::_js_register); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) sc->addRegisterCallback(JavaScriptObjCBridge::_js_register); #endif sc->start(); sc->runScript("script/jsb_boot.js"); #if defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0) sc->enableDebugger(); #endif ScriptEngineProtocol *engine = ScriptingCore::getInstance(); ScriptEngineManager::getInstance()->setScriptEngine(engine); ScriptingCore::getInstance()->runScript("main.js"); return true; } // This function will be called when the app is inactive. Note, when receiving a phone call it is invoked. void AppDelegate::applicationDidEnterBackground() { auto director = Director::getInstance(); director->stopAnimation(); director->getEventDispatcher()->dispatchCustomEvent("game_on_hide"); #if USE_AUDIO_ENGINE AudioEngine::pauseAll(); #elif USE_SIMPLE_AUDIO_ENGINE SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); SimpleAudioEngine::getInstance()->pauseAllEffects(); #endif } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { auto director = Director::getInstance(); director->startAnimation(); director->getEventDispatcher()->dispatchCustomEvent("game_on_show"); #if USE_AUDIO_ENGINE AudioEngine::resumeAll(); #elif USE_SIMPLE_AUDIO_ENGINE SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); SimpleAudioEngine::getInstance()->resumeAllEffects(); #endif }