void HexagonGame::newGame(const string& mId, bool mFirstPlay, float mDifficultyMult) { initFlashEffect(); firstPlay = mFirstPlay; setLevelData(assets.getLevelData(mId), mFirstPlay); difficultyMult = mDifficultyMult; // Audio cleanup assets.stopSounds(); stopLevelMusic(); assets.playSound("go.ogg"); playLevelMusic(); if(Config::getMusicSpeedDMSync()) { auto current(assets.getMusicPlayer().getCurrent()); if(current != nullptr) current->setPitch(pow(difficultyMult, 0.12f)); } // Events cleanup messageText.setString(""); eventTimeline.clear(); eventTimeline.reset(); messageTimeline.clear(); messageTimeline.reset(); // Manager cleanup manager.clear(); factory.createPlayer(); // Timeline cleanup timeline.clear(); timeline.reset(); effectTimelineManager.clear(); mustChangeSides = false; // FPSWatcher reset fpsWatcher.reset(); if(Config::getOfficial()) fpsWatcher.enable(); // LUA context and game status cleanup status = HexagonGameStatus{}; if(!mFirstPlay) runLuaFunction<void>("onUnload"); lua = Lua::LuaContext{}; initLua(); runLuaFile(levelData->luaScriptPath); runLuaFunction<void>("onInit"); runLuaFunction<void>("onLoad"); restartId = mId; restartFirstTime = false; setSides(levelStatus.sides); // Reset zoom overlayCamera.setView({{Config::getWidth() / 2.f, Config::getHeight() / 2.f}, Vec2f(Config::getWidth(), Config::getHeight())}); backgroundCamera.setView({ssvs::zeroVec2f, {Config::getWidth() * Config::getZoomFactor(), Config::getHeight() * Config::getZoomFactor()}}); backgroundCamera.setRotation(0); // 3D Cameras cleanup depthCameras.clear(); auto depth(styleData._3dDepth); if(depth > Config::get3DMaxDepth()) depth = Config::get3DMaxDepth(); for(auto i(0u); i < depth; ++i) depthCameras.push_back({window, {}}); }
/** * Used to copy the 'level' and 'ojects' arrays to the library at the time of * Panel instantiation. Also copy width and height of the two arrays. * * @param env required by all java jni * @param obj required by all java jni * @param level 1D array of level data * @param objects 1D array of objects data * @param width value representing the arrays' 2D width * @param height value representing the arrays' 2D height */ JNIEXPORT void JNICALL Java_org_davidliebman_android_awesomeguy_Panel_setLevelData(JNIEnv * env, jobject obj, jintArray level, jintArray objects, jint width, jint height) { jint *a = (*env)->GetIntArrayElements(env, level, 0); // zero?? jint *b = (*env)->GetIntArrayElements(env, objects, 0); level_h = height; level_w = width; sprite_num = 0; setLevelData(a,b); //LOGE("level data",0); }
void HexagonGame::newGame(string mId, bool mFirstPlay) { clearMessages(); setLevelData(getLevelData(mId), mFirstPlay); stopAllSounds(); playSound("play"); pm->resetAdj(); stopLevelMusic(); playLevelMusic(); rotationDirection = getRnd(0, 100) > 50 ? true : false; scripts.clear(); timeStop = 0; randomSideChangesEnabled = true; incrementEnabled = true; maxPulse = 85; minPulse = 75; pulseSpeedBackwards = 1; pulseSpeed = 1; hasDied = false; mustRestart = false; currentTime = 0; incrementTime = 0; setSides(levelData.getSides()); radius = minPulse; manager.clear(); createPlayer(manager, this, centerPos); scriptsTimeline = Timeline{}; messagesTimeline = Timeline{}; timeline = Timeline{}; }
void HexagonGame::newGame(const string& mId, bool mFirstPlay, float mDifficultyMult) { firstPlay = mFirstPlay; setLevelData(getLevelData(mId), mFirstPlay); difficultyMult = mDifficultyMult; // Audio cleanup stopAllSounds(); playSound("go.ogg"); stopLevelMusic(); playLevelMusic(); // Events cleanup clearMessage(); for(auto eventPtr : eventPtrs) delete eventPtr; eventPtrs.clear(); while(!eventPtrQueue.empty()) { delete eventPtrQueue.front(); eventPtrQueue.pop(); } eventPtrQueue = queue<EventData*>{}; // Game status cleanup status = HexagonGameStatus{}; restartId = mId; restartFirstTime = false; setSides(levelData.getSides()); // Manager cleanup manager.clear(); factory.createPlayer(); // Timeline cleanup timeline.clear(); timeline.reset(); messageTimeline.clear(); messageTimeline.reset(); effectTimelineManager.clear(); // FPSWatcher reset fpsWatcher.reset(); if(getOfficial()) fpsWatcher.enable(); // LUA context cleanup if(!mFirstPlay) runLuaFunction<void>("onUnload"); lua = Lua::LuaContext{}; initLua(); runLuaFile(levelData.getValueString("lua_file")); runLuaFunction<void>("onLoad"); // Random rotation direction if(getRnd(0, 100) > 50) setRotationSpeed(getRotationSpeed() * -1); // Reset zoom overlayCamera.setView({{getWidth() / 2.f, getHeight() / 2.f}, sf::Vector2f(getWidth(), getHeight())}); backgroundCamera.setView({{0, 0}, {getWidth() * getZoomFactor(), getHeight() * getZoomFactor()}}); backgroundCamera.setRotation(0); // 3D Cameras cleanup depthCameras.clear(); unsigned int depth{styleData.get3DDepth()}; if(depth > get3DMaxDepth()) depth = get3DMaxDepth(); for(unsigned int i{0}; i < depth; ++i) depthCameras.push_back({window, {}}); }