Esempio n. 1
0
	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, {}});
	}
Esempio n. 2
0
/**
 *	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);
}
Esempio n. 3
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{};
}
Esempio n. 4
0
	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, {}});
	}