bool LevelMenuScene::init() {

	if (!Layer::init()) {
		return false;
	}

	page_ = 0;

	buttonArrowLeft_ = new PButton(new PPoint(1, 1), EArrow_left, 65, 50);
	buttonArrowRight_ = new PButton(new PPoint(23, 1), EArrow_right, 65, 50);

	rectangle_ = new PRectangle(0, 0, 2, 2);

	int offset = 0;
	for (int i = 0; i <= LAST_PAGE; i++) {
		offset += 2;
		for (int j=0; j < 4; j++) {
			int levelUp = (i * 8) + j;
			int levelDown = (i * 8) + j + 4;
			
			if(levelUp < MAX_LEVEL){
				levels_.push_back(createLevel(offset, 11, levelUp));
			}
			
			if(levelDown < MAX_LEVEL) {
				levels_.push_back(createLevel(offset, 5, levelDown));
			}
			
			offset +=6;
		}
	}

	touchListener_ = EventListenerTouchOneByOne::create();
	touchListener_->onTouchBegan = CC_CALLBACK_2(LevelMenuScene::TouchBegan,this);
	getEventDispatcher()->addEventListenerWithFixedPriority(touchListener_, 100);

	keyboardListener_ = EventListenerKeyboard::create();
	keyboardListener_->onKeyReleased = CC_CALLBACK_2(LevelMenuScene::onKeyReleased, this);
	getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboardListener_, this);

	for (auto level: levels_) {
		this->addChild(level->getTexture(), 1);
		level->getTexture()->setScale(SCALE);
		if(!level->getLock()){
			this->addChild(level->getLabel(), 2);
		}

	}
	buttonArrowLeft_->getTexture()->setVisible(false);
	this->addChild(buttonArrowRight_->getTexture(), 1);
	this->addChild(buttonArrowLeft_->getTexture(), 1);

	scene_ = Scene::create();
	scene_->addChild(this);

	return true;
}
Esempio n. 2
0
void KJezzball::newGame()
{
    // Check for running game
    closeGame();
    if ( m_state==Idle )
    {
        // untoggles the pause button in case it was toggled
        m_pauseButton->setChecked(false);

        // update displays
        m_game.level = 1;
        m_game.score = 0;

        m_levelLCD->display( m_game.level );
        m_scoreLCD->display( m_game.score );

        statusBar()->clear();

        // start new game
        m_state = Running;

        createLevel( m_game.level );
        startLevel();
    }
}
Esempio n. 3
0
void KrecikApp::init()
{
    win.draw(Text(L"Loading...", r.f, 30));
    win.display();

    loadTextures();
    createCar();
    createLevel();

    Sprite loadwheel(whTex);
    loadwheel.setPosition(20.0f, 20.0f);
    //loadwheel.setScale(2.0f, 2.0f);
    loadwheel.setOrigin(getCenter(loadwheel.getGlobalBounds()));
    Clock tmp;

    while(!Keyboard::isKeyPressed(Keyboard::Return))
    {
        Time elapsed = tmp.restart();
        win.clear();
        win.draw(Text("    Press <Enter> to start...",r.f, 30));
        loadwheel.rotate(elapsed.asSeconds() * 400.0f);
        win.draw(loadwheel);
        win.display();
    }
}
//GAME OVER RESTART THE WHOLE GAME
void restart(void){
	
	gameState = PLAY;
	createPlayer();
	createLevel();

}
bool EnvironmentHandler::loadContent( )
{
	if( !m_bitmap.loadFromFile( "../../Resources/levelOne.png" ) )
	{
		return EXIT_FAILURE;
	}

	m_iHorizontalBitmapSize = m_bitmap.getSize().x;
	m_iVerticalBitmapSize = m_bitmap.getSize().y;

	if(!m_tiles.loadFromFile( "../../Resources/tiles.png" ) )
	{
		return EXIT_FAILURE;
	}

	m_floorArray.reserve( m_iHorizontalBitmapSize * m_iVerticalBitmapSize );
	bitmapToArray( );
	m_sprites.reserve( m_floorArray.size( ) );
	createLevel( );
	checkWalls( );

	if(!m_objectBitmap.loadFromFile( "../../Resources/levelOneObjects.png" ) )
	{
		return EXIT_FAILURE;
	}

	m_objects.reserve( m_floorArray.size( ) );
	findObjects();

	return EXIT_SUCCESS;
}
LevelManager::LevelManager(Camera* _camera) {
	currentState = state::CHILD_START;
	// activeState = globalState::GLOBAL_LEVEL;
  // CONTINUE means no level activity yet
  // IDLE will mean what global::CONTINUE means, its currently in that state and working
  //activeLevel = levelState::LEVEL_START;
	defaultCamera = _camera;

	createLevel("testlevel.tmx", &Window::getHandle(), defaultCamera);
}
Esempio n. 7
0
void MainScene::onLoad()
{
    createLevel();
    ps.init();
    for(int i=0; i<enemy.size(); i++)
        enemy[i]->init();
    time = 0;
    dt = 1.0/FPS;

}
Level* LevelManager::forwardLevel() {
  prevLevel = currentLevel;
	currentLevel = 0;
	Level* tempLevel = createLevel("testlevelbig.tmx", &Window::getHandle(), defaultCamera);

	currentLevel = tempLevel;

	activeLevelState = currentLevel->getState();

	tempLevel = 0; delete tempLevel;
	return currentLevel;
}
Esempio n. 9
0
void loadLevel(char *fName){	

	//int iSect[5][5];
	int i = 0;
	int j = 0;
	int c = 25;
	int scItem;
	int ch;
	char line[256];
	FILE *fFile;

	fFile = fopen(fName, "r");
	if (fFile != NULL){
		while (fgets(line, 256, fFile)){
			sscanf(line, "%i", &ch);
			if ((i < 5 || j < 4) && c > 0){
				c--;
				switch (ch){
					case 0:
						lvlSect[j][i] = 0;
						break;
					case 1:
						lvlSect[j][i] = 1;
						break;
					case 2:
						lvlSect[j][i] = 2;
						break;
					case 3:
						lvlSect[j][i] = 3;
						break;
				}
				if (i < 4){
					i++;
				}
				else if(j < 4){
					j++;
					i = 0;
				}
			}
			else{
				sscanf(line, "%i", &scItem);
			}
		}
		createLevel(scItem);
		fclose(fFile);
	}
	//memcpy(*lvlSect, *iSect, sizeof(iSect));

}
Esempio n. 10
0
void KJezzball::switchLevel()
{
    m_game.score += m_level.score;

    // make sure the LCD provides enough digits for the score
    // (fixes #96841)
    int numDigits=0;
    int temp_score = m_game.score;
    for ( ; temp_score > 0; ++numDigits ) temp_score /= 10;
    if ( numDigits < 5 ) numDigits = 5; // set numDigits to at least 5, otherwise it does not look well

    m_scoreLCD->setNumDigits( numDigits );
    m_scoreLCD->display( m_game.score );

    QString score;
    score.setNum( m_level.score );

    QString level;
    level.setNum( m_game.level );

QString foo = QString(
i18n("You have successfully cleared more than 75% of the board.\n") +
i18n("%1 points: 15 points per remaining life\n").arg(m_level.lifes*15) +
i18n("%1 points: Bonus\n").arg((m_gameWidget->percent()-75)*2*(m_game.level+5)) +
i18n("%1 points: Total score for this level\n").arg(score) +
i18n("On to level %1. Remember you get %2 lives this time!")).arg(m_game.level+1).arg(m_game.level+2);

   KMessageBox::information( this,foo );


   // KMessageBox::information( this, i18n("You've completed level %1 with "
   //     "a score of %2.\nGet ready for the next one!").arg(level).arg(score));

    m_game.level++;
    m_levelLCD->display( m_game.level );

    createLevel( m_game.level );
    startLevel();
}
Esempio n. 11
0
bool Game::init(int w, int h){
	if (SDL_Init(SDL_INIT_EVERYTHING) != 0){
		cout << "SDL_Init Error: " << SDL_GetError() << endl;
		return 1;
	}

	if ((window = SDL_CreateWindow("Sumo Game", 50, 50, w, h, SDL_WINDOW_OPENGL)) == nullptr){
		cout << "Window Error: " << SDL_GetError() << endl;
		return 1;
	}

	if ((context = SDL_GL_CreateContext(window)) == nullptr){
		cout << "GL Context Error: " << SDL_GetError() << endl;
		return 1;
	}

	running = true;
	gStates = START;
	glewExperimental = GL_TRUE;
	glewInit();

	p1win = shared_ptr<MenuCube>(new MenuCube(5, 4.5, -6, 1));
	p2win = shared_ptr<MenuCube>(new MenuCube(5, 4.5, -6, 2));
	menu = shared_ptr<MenuCube>(new MenuCube(5, 4.5, -6, 0));

	player = shared_ptr<Player>(new Player(2, 3, 2, 1)); //x offset, height, y/z offset, player number
	objects.push_back(player);
	player2 = shared_ptr<Player>(new Player(8, 3, 2, 2));
	objects.push_back(player2);

	createLevel();

	camera = Camera::getInstance().getCameraM();
	Camera::getInstance().lookAt(Point3(45.0, 0.0, 0.0), Point3(5.0, 5.0, 5.0), Vector3(0.0, 1.0, 0.0));
	Camera::getInstance().setCamera(camera * Matrix4::translation(Vector3(-5.0, -4.5, 7.3)));
	display();
	return 0;
}
Esempio n. 12
0
void Scene::createScene()
{
    rootNode = moduleRegistry->getRootNode();

    moduleRegistry->registerDynamicsWorld(dynamicsWorld);

    lastCheckpoint = new btVector3();
    moduleRegistry->registerLastCheckpoint(lastCheckpoint);
    
    moduleRegistry->registerAllowMovement(&allowMovement);
    moduleRegistry->registerCameraAngle(&cameraAngle);
    
    createLights();
    // SKYBOX !
    Skybox* skybox = new Skybox(rootNode,"skybox1");

    // 2D TEXT FOR DEBUGGING PURPOSE !
    text2d = new Text2D(rootNode);
    moduleRegistry->registerText2D(text2d);

    // 3D TEXT FOR FUN PURPOSE !
    text3d = new Text3D(rootNode);
    moduleRegistry->registerText3D(text3d);

    // THE MIGHTY BALL
    ball = new Ball(osg::Vec3f(0, 0, 50), 7., moduleRegistry);
    moduleRegistry->getInputManager()->setBall(ball);
    moduleRegistry->registerBall(ball);
    ball->setModuleRegistry(moduleRegistry);
    ballBody = ball->getBody();

    createLevel(currentLevel);

#ifndef VRJUGGLER
    moduleRegistry->getSceneView()->setSceneData(rootNode);
#endif
}
/*
 *Initializes all data structures required for level
 */
void initLevel(int level)    {
    createKeywordQueue();
	switch(level)	{
		case 0:
			readLevelSettingsFile("../data/tutorial.txt");
			break;
		case 1:
			createLevel();
			break;
		default:
			break;
	}
    createLevelPaths();
    createTowerGroup();
    createActionQueue();
	createGame();
	createLevelClocks();
    createEnemyGroup();
	createTowerPos();
	initialQueueReader();
	createProjectileList();
	initialiseParser();
	init_abilities();
}
Esempio n. 14
0
KJezzball::KJezzball()
    : m_gameWidget( 0 )
{
    // setup variables
    m_game.level = 1;
    m_game.score = 0;
    m_state = Idle;

    KConfig *config = kapp->config();
    m_backgroundDir = config->readPathEntry( "BackgroundDir" );
    m_showBackground = config->readBoolEntry( "ShowBackground", false );

    statusBar();
    initXMLUI();

    m_soundAction -> setChecked((config->readBoolEntry( "PlaySounds", true )));

    // create widgets
    m_view = new QWidget( this, "m_view" );
    setCentralWidget( m_view );

    m_layout = new QGridLayout( m_view, 1, 3 );
    m_layout->setColStretch( 2, 1 );

    QVBoxLayout *infoLayout = new QVBoxLayout;
    m_layout->addLayout( infoLayout, 0, 1 );

    QLabel *label = new QLabel( i18n("Level:"), m_view );
    infoLayout->addWidget( label );
    m_levelLCD = new QLCDNumber( 5, m_view );
    infoLayout->addWidget( m_levelLCD );

    label = new QLabel( i18n("Score:"), m_view );
    infoLayout->addWidget( label );
    m_scoreLCD = new QLCDNumber( 5, m_view );
    infoLayout->addWidget( m_scoreLCD );

    infoLayout->addSpacing( 20 );

    label = new QLabel( i18n("Filled area:"), m_view );
    infoLayout->addWidget( label );
    m_percentLCD  = new QLCDNumber( 5, m_view );
    infoLayout->addWidget( m_percentLCD );

    label = new QLabel( i18n("Lives:"), m_view );
    infoLayout->addWidget( label );
    m_lifesLCD  = new QLCDNumber( 5, m_view );
    infoLayout->addWidget( m_lifesLCD );

    label = new QLabel( i18n("Time:"), m_view );
    infoLayout->addWidget( label );
    m_timeLCD  = new QLCDNumber( 5, m_view );
    infoLayout->addWidget( m_timeLCD );

    // create timers
    m_nextLevelTimer = new QTimer( this, "m_nextLevelTimer" );
    connect( m_nextLevelTimer, SIGNAL(timeout()), this, SLOT(switchLevel()) );

    m_gameOverTimer = new QTimer( this, "m_gameOverTimer" );
    connect( m_gameOverTimer, SIGNAL(timeout()), this, SLOT(gameOverNow()) );

    m_timer = new QTimer( this, "m_timer" );
    connect( m_timer, SIGNAL(timeout()), this, SLOT(second()) );

    // create demo game
    createLevel( 1 );
    statusBar()->message( i18n("Press %1 to start a game!")
                          .arg(m_newAction->shortcut().toString()) );
    //m_gameWidget->display( i18n("Press <Space> to start a game!") );

    setFocusPolicy(QWidget::StrongFocus);
    setFocus();
    setupGUI();
}
Esempio n. 15
0
void TutorialLevel::setup(){
    INFO("Generating Tutorial Level...");
    readFile();
    initalizeGrid();
    createRenders();
    createLevel();
    waterSurfaceManager = WaterSurfaceManagerPtr(new WaterSurfaceManager());
    addGameObject(waterSurfaceManager);
    INFO("Removal String so less of make");
    INFO("Setting up the cameras for the Test Level...");
    CameraPtr cam3(new Camera(glm::vec3(25, 30, 0), glm::vec3(10, 20, 6),
                             glm::vec3(0, 1, 0)));
    cam3->setProjectionMatrix(
        glm::perspective(glm::radians(90.0f),
                        (float) Global::ScreenWidth/Global::ScreenHeight,
                        0.1f, 100.f));

    addCamera("CinematicCamera", cam3);
    setMainCamera("CinematicCamera");
    setCullingCamera("CinematicCamera");

    CameraPtr cam1(new Camera(glm::vec3(4, 10, -5), glm::vec3(4, 4, -10),
                              glm::vec3(0, 1, 0)));
    cam1->setProjectionMatrix(
        glm::perspective(glm::radians(90.0f),
                         (float) Global::ScreenWidth/Global::ScreenHeight,
                         0.1f, 100.f));
    addCamera("Camera1", cam1);
 
    CameraPtr cam2(new Camera(glm::vec3(0, 1, 0), glm::vec3(-6, -3, 6),
                              glm::vec3(0, 1, 0)));
    cam2->setProjectionMatrix(
        glm::perspective(glm::radians(90.0f),
                         (float) Global::ScreenWidth/Global::ScreenHeight,
                         0.1f, 100.f));
    l1 = LightPtr(new Light(glm::vec3(1), 30.0f, glm::vec3(0, 30, 0)));
    l1->setPosition(l1->getDirection());

    Uniform3DGridPtr<int> typeGrid = getTypeGrid();
    gridCenter = glm::vec3((typeGrid->getMaxX() - typeGrid->getMinX())/2.0f,
                           (typeGrid->getMaxY() - typeGrid->getMinY())/2.0f,
                           (typeGrid->getMinZ() - typeGrid->getMaxZ())/2.0f);
    l1->setViewMatrix(glm::lookAt(

        l1->getPosition(),
        gridCenter, glm::vec3(0, 1, 0)));
    l1->setProjectionMatrix(glm::ortho<float>(-30,30,-30,30,-70,70));

    addLight("Sun", l1);
    INFO("Setting up the player for the Test Level...");
    cinematicPlayer = CinematicPlayerPtr(new CinematicPlayer(cam3));
    cinematicPlayer->setup();
    addGameObject("cinematicPlayer", cinematicPlayer);

    player = PlayerPtr(new Player(cam1, 2));
    player->setup();
    addGameObject("player" , player);
    CollisionManager::addCollisionObjectToList(player);
    debugPlayer = DebugPlayerPtr(new DebugPlayer(cam2));
    debugPlayer->setup();
    addGameObject("debugPlayer" , debugPlayer);
    //Text
    addCamera("DebugCamera", cam2);

    sky = ObjectPtr(new Object(
        LoadManager::getMesh("sphere.obj"),
        MaterialManager::getMaterial("None")));

    sky->applyTexture(LoadManager::getTexture("Sky"));
    sky->enableTexture();
    sky->scale(glm::vec3(-90.0f,-90.0f,-90.0f));
    sky->translate(Director::getScene()->getCamera()->getEye());
    RenderEngine::getRenderElement("textured")->addObject(sky);

    ExclamationPtr exclamation = ExclamationPtr(new Exclamation(glm::vec3(30, 26, -48)));
    exclamation->setup();
    addGameObject("exclamation", exclamation);
}
Esempio n. 16
0
void getIntensitySumFromOpenCLImage(OpenCLDevice::pointer device, cl::Image2D image, DataType type, float* sum) {
    // Get power of two size
    unsigned int powerOfTwoSize = getPowerOfTwoSize(std::max(image.getImageInfo<CL_IMAGE_WIDTH>(), image.getImageInfo<CL_IMAGE_HEIGHT>()));

    // Create image levels
    unsigned int size = powerOfTwoSize;
    size /= 2;
    std::vector<cl::Image2D> levels;
    while(size >= 4) {
        cl::Image2D level = cl::Image2D(device->getContext(), CL_MEM_READ_WRITE, getOpenCLImageFormat(device, CL_MEM_OBJECT_IMAGE2D, TYPE_FLOAT, 1), size, size);
        levels.push_back(level);
        size /= 2;
    }

    // Compile OpenCL code
    std::string buildOptions = "";
    switch(type) {
    case TYPE_FLOAT:
        buildOptions = "-DTYPE_FLOAT";
        break;
    case TYPE_UINT8:
        buildOptions = "-DTYPE_UINT8";
        break;
    case TYPE_INT8:
        buildOptions = "-DTYPE_INT8";
        break;
    case TYPE_UINT16:
        buildOptions = "-DTYPE_UINT16";
        break;
    case TYPE_INT16:
        buildOptions = "-DTYPE_INT16";
        break;
    }
    std::string sourceFilename = std::string(FAST_SOURCE_DIR) + "/ImageSum.cl";
    std::string programName = sourceFilename + buildOptions;
    // Only create program if it doesn't exist for this device from before
    if(!device->hasProgram(programName))
        device->createProgramFromSourceWithName(programName, sourceFilename, buildOptions);
    cl::Program program = device->getProgram(programName);
    cl::CommandQueue queue = device->getCommandQueue();

    // Fill first level
    size = powerOfTwoSize/2;
    cl::Kernel firstLevel(program, "createFirstSumImage2DLevel");
    firstLevel.setArg(0, image);
    firstLevel.setArg(1, levels[0]);

    queue.enqueueNDRangeKernel(
            firstLevel,
            cl::NullRange,
            cl::NDRange(size,size),
            cl::NullRange
    );

    // Fill all other levels
    cl::Kernel createLevel(program, "createSumImage2DLevel");
    int i = 0;
    size /= 2;
    while(size >= 4) {
        createLevel.setArg(0, levels[i]);
        createLevel.setArg(1, levels[i+1]);
        queue.enqueueNDRangeKernel(
                createLevel,
                cl::NullRange,
                cl::NDRange(size,size),
                cl::NullRange
        );
        i++;
        size /= 2;
    }

    // Get result from the last level
    unsigned int nrOfElements = 4*4;
    unsigned int nrOfComponents = getOpenCLImageFormat(device, CL_MEM_OBJECT_IMAGE2D, TYPE_FLOAT, 1).image_channel_order == CL_RGBA ? 4 : 1;
    float* result = (float*)allocateDataArray(nrOfElements,TYPE_FLOAT,nrOfComponents);
    queue.enqueueReadImage(levels[levels.size()-1],CL_TRUE,createOrigoRegion(),createRegion(4,4,1),0,0,result);
    *sum = getSumFromOpenCLImageResult<float>(result, nrOfElements, nrOfComponents);
    delete[] result;
}
Esempio n. 17
0
//Rebuild level, reset players position
void playerDied(void){
	createLevel();
	player.reset(startingPosition);

}
Esempio n. 18
0
void TunnelLevel::setup(){
    INFO("Generating Test Level...");
    readFile();
    initalizeGrid();
    createRenders();

    createLevel();
    INFO("Removal String so less of make");

    waterSurfaceManager = WaterSurfaceManagerPtr(new WaterSurfaceManager());
    addGameObject(waterSurfaceManager);

    CameraPtr cam3(new Camera(glm::vec3(30, 45, 0), glm::vec3(30, 15, 6),
                             glm::vec3(0, 1, 0)));
    cam3->setProjectionMatrix(
        glm::perspective(glm::radians(90.0f),
                        (float) Global::ScreenWidth/Global::ScreenHeight,
                        0.1f, 100.f));

    addCamera("CinematicCamera", cam3);
    setMainCamera("CinematicCamera");
    setCullingCamera("CinematicCamera");

    INFO("Setting up the cameras for the Test Level...");
    CameraPtr cam1(new Camera(glm::vec3(32.0f, 12.0f, -24.0f), glm::vec3(4, 4, -10),
                             glm::vec3(0, 1, 0)));
    cam1->setProjectionMatrix(
        glm::perspective(glm::radians(90.0f),
                        (float) Global::ScreenWidth/Global::ScreenHeight,
                        0.1f, 100.f));

    addCamera("Camera1", cam1);
    setMainCamera("Camera1");
    setCullingCamera("Camera1");

    CameraPtr cam2(new Camera(glm::vec3(0, 1, 0), glm::vec3(-6, -3, 6),
                             glm::vec3(0, 1, 0)));
    cam2->setProjectionMatrix(
        glm::perspective(glm::radians(90.0f),
                        (float) Global::ScreenWidth/Global::ScreenHeight,
                        0.1f, 100.f));

    l1 = LightPtr(new Light(glm::vec3(1), 30.0f, glm::vec3(32, 30, -20)));
    l1->setPosition(l1->getDirection());
    

    Uniform3DGridPtr<int> typeGrid = getTypeGrid();
    gridCenter = glm::vec3((typeGrid->getMaxX() - typeGrid->getMinX())/2.0f,
                         (typeGrid->getMaxY() - typeGrid->getMinY())/2.0f,
                         (typeGrid->getMinZ() - typeGrid->getMaxZ())/2.0f);

    l1->setViewMatrix(glm::lookAt(
        l1->getPosition(),
        gridCenter, glm::vec3(0, 1, 0)));
    l1->setProjectionMatrix(glm::ortho<float>(-30,30,-30,30,-70,70));

    addLight("Sun", l1);

    cinematicPlayer = CinematicPlayerPtr(new CinematicPlayer(cam3));
    cinematicPlayer->setup();
    addGameObject("cinematicPlayer", cinematicPlayer);

    INFO("Setting up the player for the Test Level...");
    player = PlayerPtr(new Player(cam1, 2));
    player->setup();
    addGameObject("player" , player);
    CollisionManager::addCollisionObjectToList(player);

    debugPlayer = DebugPlayerPtr(new DebugPlayer(cam2));
    debugPlayer->setup();
    addGameObject("debugPlayer" , debugPlayer);

    addCamera("DebugCamera", cam2);
    INFO("Creating Switch for the Test Level...");
    SwitchPtr s1(new Switch(glm::vec3(0.9f, 0.1f, 0.1f), glm::vec3(33.7f, 11.0f, -27.0f), 
                             glm::vec3(0,0,1), -20.0f, 1));
    s1->setup();
    addGameObject("s1", s1);
    CollisionManager::addCollisionObjectToGrid(s1);




    std::list<SolidCubePtr> solidCubes;
    // INFO("Creating Active Terrain for the Test Level...");
    for(int i = 11; i < 36; i+=2) {
        for(int j = -27; j < -20; j+=2) {
            SolidCubePtr at1(new SolidCube(glm::vec3(29, i, j)));
            at1->setup();
            RenderEngine::getRenderGrid()->removeObject(at1->getObject());

            solidCubes.push_back(at1);
        }
    }    

    ActiveTerrainPtr a1(new ActiveTerrain(s1, glm::vec3(), glm::vec3(), 50.0f));
    a1->setup();
    a1->setCubes(solidCubes);
    addGameObject("a1", a1);





    sky = ObjectPtr(new Object(
        LoadManager::getMesh("sphere.obj"),
        MaterialManager::getMaterial("None")));

    sky->applyTexture(LoadManager::getTexture("Sky"));
    sky->enableTexture();
    sky->scale(glm::vec3(-50.0f,-50.0f,-50.0f));
    sky->translate(Director::getScene()->getCamera()->getEye());
    RenderEngine::getRenderElement("textured")->addObject(sky);

    ExclamationPtr exclamation = ExclamationPtr(new Exclamation(glm::vec3(60, 5, -23)));
    exclamation->setup();
    addGameObject("exclamation", exclamation);
    


    
    PTR_CAST(SolidCube, (*grid)(7, 20, 11))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(7, 20, 12))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(7, 20, 11))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    PTR_CAST(SolidCube, (*grid)(7, 20, 12))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    shearRegion(8, 10, 21, 21, 11, 12, 1, 0, 0.0f);
    shearRegion(11, 13, 20, 20, 11, 12, 1, 0, 0.5f);

    PTR_CAST(SolidCube, (*grid)(16, 12, 0))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(17, 12, 0))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(16, 12, 0))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    PTR_CAST(SolidCube, (*grid)(17, 12, 0))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    shearRegion(16, 17, 13, 13, 1, 4, 0, 1, 0.0f);
    shearRegion(16, 17, 12, 12, 5, 8, 0, 1, 0.5f);

    PTR_CAST(SolidCube, (*grid)(16, 12, 23))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(17, 12, 23))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(16, 12, 23))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    PTR_CAST(SolidCube, (*grid)(17, 12, 23))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    shearRegion(16, 17, 13, 13, 19, 22, 0, -1, 0.0f);
    shearRegion(16, 17, 12, 12, 15, 18, 0, -1, 0.5f);

    PTR_CAST(SolidCube, (*grid)(26, 12, 15))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(26, 12, 8))->getObject()->applyTextureIndex(LoadManager::getTexture("DrainTexture"), 0);
    PTR_CAST(SolidCube, (*grid)(26, 12, 15))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
    PTR_CAST(SolidCube, (*grid)(26, 12, 8))->getObject()->applyNormalMapIndex(LoadManager::getTexture("RegularNormalMap"), 0);
}
Esempio n. 19
0
void Scene::run(double elapsed)
{
    ball->update(elapsed);
    text2d->update(elapsed);
    for(int i = 0;i<numPlatforms;i++)
    {
        platforms[i]->update(elapsed);
    }
    if(elapsed>10000000)
      elapsed = 0.016;
    dynamicsWorld->stepSimulation(elapsed,10,1./120.);
    btVector3 ballPos = ball->getBody()->getWorldTransform().getOrigin();
    std::stringstream out;
    out << "ball pos : " << ballPos.x();
    *(moduleRegistry->getText2D()->print()) = out.str();
    if(ballPos.z() < -100)
    {
        text3d->setColor(osg::Vec4(1, 0, 0, 1));
        text3d->setText("Perdu !");
        if(time_elapsed_lost < 2)
        {
            time_elapsed_lost += elapsed;
            text3d->setPosition(textOffset-osg::Vec3f(0., 0., time_elapsed_lost*20));
        }
        else
        {
            text3d->setText("");
            resetLevel();
            createLevel(currentLevel);
            setBallPos(*lastCheckpoint);
            time_elapsed_lost = 0;
            cameraAngle = 0;
        }
    }
    else
    {
        osg::Matrix cameraMatrix;
        //cameraMatrix.makeLookAt(Utils::asOsgVec3(ballPos) + osg::Vec3f(-15*cos(cameraAngle), 15*sin(cameraAngle), 10), Utils::asOsgVec3(ballPos), osg::Vec3f(0, 0, 1));
        cameraMatrix.makeLookAt(Utils::asOsgVec3(ballPos) + osg::Vec3f(-20*cos(cameraAngle), 20*sin(cameraAngle), 10), Utils::asOsgVec3(ballPos) + osg::Vec3f(0, 0, 10), osg::Vec3f(0, 0, 1));
        rootNode->setMatrix(cameraMatrix);
    }
    if(!allowMovement)
    {
        time_elapsed_begin += elapsed;
        text3d->setPosition(textOffset-osg::Vec3f(0, 0., time_elapsed_begin*20));
        if(time_elapsed_begin > 2)
        {
            allowMovement = true;
            time_elapsed_begin = 0;
            text3d->setText("");
        }
    }
    if(moduleRegistry->playerReachedEnd)
    {
        time_elapsed_end_level += elapsed;
        if(currentLevel == MAX_LEVEL)
        {
            time_elapsed_end_game += elapsed;
            if(!hasStartedEndText)
            {
                text3d->setText("THE END !");
                text3d->setColor(osg::Vec4d(0, 0, 1, 1));
                text3d->setPosition(textOffset);
                hasStartedEndText = true;
            }
            text3d->setPosition(textOffset-osg::Vec3f(0, 0., time_elapsed_end_game*20));
            if(time_elapsed_end_game > 2)
            {
                text3d->setText("");
                exit(0);
            }
        }
        else
        {
            if(!hasStartedEndText)
            {
                std::stringstream out;
                out << currentLevel;
                text3d->setText("You reached the end of level " + out.str() + " !");
                text3d->setColor(osg::Vec4d(0, 1, 1, 1));
                text3d->setPosition(textOffset);
                hasStartedEndText = true;
            }
            text3d->setPosition(textOffset-osg::Vec3f(0, 0., time_elapsed_end_level*20));
            if(time_elapsed_end_level > 2)
            {
                moduleRegistry->playerReachedEnd = false;
                setBallPos(btVector3(0, 0, 50));
                cameraAngle = 0;
                resetLevel();
                createLevel(++currentLevel);
            }
        }
    }
}
Esempio n. 20
0
Scene* Level::createSceneWithMap(std::string mapPath){
	auto scene = Level::createScene();
	auto level = (Level*)(scene->getChildByTag(levelTag));
	level->createLevel(mapPath);
	return scene;
}