コード例 #1
0
ファイル: PlayState.cpp プロジェクト: KarelCasier/Tetris
void PlayState::processEvents(sf::Event event)
{
	switch (event.type)
	{
	case sf::Event::KeyPressed:
		handlePlayerInput(event.key.code, true);
		break;

	case sf::Event::KeyReleased:
		handlePlayerInput(event.key.code, false);
		break;
	}

	sf::Vector2i mousePos(event.mouseButton.x, event.mouseButton.y);
	if (exitButton.getGlobalBounds().contains((float)mousePos.x, (float)mousePos.y))
	{
		GameStateManager::Instance()->clean();
	}
	else if (menuButton.getGlobalBounds().contains((float)mousePos.x, (float)mousePos.y))
	{
		GameStateManager::Instance()->changeGameState(new MainMenuState);
	}

	/*if ((mousePos.x > menuButton.getPosition().x - menuButton.getLocalBounds().width / 2) &&
		(mousePos.x < menuButton.getPosition().x + menuButton.getLocalBounds().width / 2) &&
		(mousePos.y > menuButton.getPosition().y - menuButton.getLocalBounds().height / 2) &&
		(mousePos.y < menuButton.getPosition().y + menuButton.getLocalBounds().height / 2))
		{
		}*/
}
コード例 #2
0
ファイル: GameEngine.cpp プロジェクト: Ismuur/NomDeCode
void		GameEngine::processEvents(void)
{
  sf::Event	event;

  while (_mWindow.pollEvent(event))
    {
      switch (event.type)
	{
	case sf::Event::KeyPressed:
	  handlePlayerInput(event.key.code, true);
	  break;

	case sf::Event::KeyReleased:
	  handlePlayerInput(event.key.code, false);
	  break;

	case sf::Event::Closed:
	  _mWindow.close();
	  break;

	default:
	  break;
	}
    }
}
コード例 #3
0
ファイル: Game.cpp プロジェクト: Tom3112/SFML
	void Game::processEvents()
	{
		sf::Clock clock;
		sf::Event event;
		while (mWindow.pollEvent(event))
		{
			source.x++;
			if (source.x * 32 >= pTexture.getSize().x)
				source.x = 0;
			if (event.type == sf::Event::Closed)
				mWindow.close();
			switch (event.type)
			{
				case sf::Event::KeyPressed:
					handlePlayerInput(event.key.code, true);
					break;
				case sf::Event::KeyReleased:
					handlePlayerInput(event.key.code, false);
					break;
				case sf::Event::MouseButtonPressed:
					handlePlayerInput(event.mouseButton.button, true);
					break;
				case sf::Event::MouseButtonReleased:
					handlePlayerInput(event.mouseButton.button, false);
					break;
				case sf::Event::Closed:
					mWindow.close();
					break;
			}
		}
	}
コード例 #4
0
ファイル: Game.cpp プロジェクト: XaTToN/ITProject
void Game::processGamepad()
{
	for (unsigned int itr = 0; itr < GamepadButtons::BTN_COUNT; ++itr)
	{
		if (sf::Joystick::isButtonPressed(0, itr))
			handlePlayerInput(itr, true);
		else
			handlePlayerInput(itr, false);
	}

	if (sf::Joystick::getAxisPosition(0, sf::Joystick::X) > 90)
	{
		handlePlayerInput(sf::Keyboard::Left, false);
		handlePlayerInput(sf::Keyboard::Right, true);
	}
	else if (sf::Joystick::getAxisPosition(0, sf::Joystick::X) < -90)
	{
		handlePlayerInput(sf::Keyboard::Left, true);
		handlePlayerInput(sf::Keyboard::Right, false);
	}
	else
	{
		handlePlayerInput(sf::Keyboard::Left, false);
		handlePlayerInput(sf::Keyboard::Right, false);
	}
}
コード例 #5
0
// Event handler der die ganzen Events verwaltet.
void Game::processEvents()
{
	sf::Event event;
	while (Window.pollEvent(event))
	{
		switch (event.type)
		{
			case sf::Event::KeyPressed:
				{
					if(XMLDoc.loadSteuerung() == "Tastatur")
					{
						handlePlayerInput(event.key.code, true);
						break;
					}
					break;
				}
			case sf::Event::KeyReleased:
				{
					if(XMLDoc.loadSteuerung() == "Tastatur")
					{
						handlePlayerInput(event.key.code, false);
						break;
					}
					break;
				}
			case sf::Event::MouseButtonPressed:
				{
					if(XMLDoc.loadSteuerung() == "Maus")
					{
						MausSteuerung();
						break;
					}
					break;
				}
			case sf::Event::MouseButtonReleased:
				{
					if(XMLDoc.loadSteuerung() == "Maus")
					{
						MausSteuerung();
						break;
					}
					break;
				}
			case sf::Event::Closed:
				Window.close();
				break;
		}
	}
}
コード例 #6
0
bool GameState::handleEvent(const sf::Event& event)
{
    switch (event.type)
    {
        case sf::Event::KeyPressed:
            handlePlayerInput(event.key.code, true);
            break;
        case sf::Event::KeyReleased:
            handlePlayerInput(event.key.code, false);
            break;
        default:
            break;
    }
    return true;
}
コード例 #7
0
ファイル: ingamestate.cpp プロジェクト: aap/openrw
void IngameState::handleEvent(const SDL_Event& event)
{
	auto player = game->getPlayer();

	switch(event.type) {
	case SDL_KEYDOWN:
		switch(event.key.keysym.sym) {
		case SDLK_ESCAPE:
			StateManager::get().enter(new PauseState(game));
			break;
		case SDLK_m:
			StateManager::get().enter(new DebugState(game, _look.position, _look.rotation));
			break;
		case SDLK_SPACE:
			if( getWorld()->state->currentCutscene )
			{
				getWorld()->state->skipCutscene = true;
			}
			break;
		case SDLK_c:
			camMode = CameraMode((camMode+(CameraMode)1)%CAMERA_MAX);
			break;
		case SDLK_w:
			_movement.x = 1.f;
			break;
		case SDLK_s:
			_movement.x =-1.f;
			break;
		case SDLK_a:
			_movement.y = 1.f;
			break;
		case SDLK_d:
			_movement.y =-1.f;
			break;
		default: break;
		}
		break;

	case SDL_KEYUP:
		switch(event.key.keysym.sym) {
		case SDLK_w:
		case SDLK_s:
			_movement.x = 0.f;
			break;
		case SDLK_a:
		case SDLK_d:
			_movement.y = 0.f;
			break;
		default: break;
		}
		break;
	default: break;
	}
	
	if( player && player->isInputEnabled() )
	{
		handlePlayerInput(event);
	}
	State::handleEvent(event);
}
コード例 #8
0
bool Asteroids::Update()
{
	if (!m_Paused)
	{
		pCore->doSleep();

		Number frameelapsed = pCore->getElapsed();

		if (p_Player->m_Active)
		{
			p_Player->Update(&frameelapsed);
			handlePlayerInput();
		}
		else
		{
			p_Player->UpdateGameOver();
		}

		p_Player->UpdateShots(&frameelapsed);
		p_Rocks->Update(&frameelapsed);
		p_UFOs->Update(&frameelapsed);
		p_Enemy->Update(&frameelapsed);
	}

	if (m_Exit)
	{
		return false;
	}

	return pCore->updateAndRender();
}
コード例 #9
0
ファイル: ingamestate.cpp プロジェクト: x0b1t/openrw
void IngameState::handleEvent(const sf::Event &event)
{
	auto player = game->getPlayer();

	switch(event.type) {
	case sf::Event::KeyPressed:
		switch(event.key.code) {
		case sf::Keyboard::Escape:
			StateManager::get().enter(new PauseState(game));
			break;
		case sf::Keyboard::M:
			StateManager::get().enter(new DebugState(game, _look.position, _look.rotation));
			break;
		case sf::Keyboard::Space:
			if( getWorld()->state->currentCutscene )
			{
				getWorld()->state->skipCutscene = true;
			}
			break;
		case sf::Keyboard::C:
			camMode = CameraMode((camMode+(CameraMode)1)%CAMERA_MAX);
			break;
		case sf::Keyboard::W:
			_movement.x = 1.f;
			break;
		case sf::Keyboard::S:
			_movement.x =-1.f;
			break;
		case sf::Keyboard::A:
			_movement.y = 1.f;
			break;
		case sf::Keyboard::D:
			_movement.y =-1.f;
			break;
		default: break;
		}
		break;
	case sf::Event::KeyReleased:
		switch(event.key.code) {
		case sf::Keyboard::W:
		case sf::Keyboard::S:
			_movement.x = 0.f;
			break;
		case sf::Keyboard::A:
		case sf::Keyboard::D:
			_movement.y = 0.f;
			break;
		default: break;
		}
		break;
	default: break;
	}
	
	if( player && player->isInputEnabled() )
	{
		handlePlayerInput(event);
	}
	State::handleEvent(event);
}
コード例 #10
0
ファイル: Game.cpp プロジェクト: fvimua/prueba_interpolacion
void Game::processEvents()   //Captura y procesa eventos
{
	sf::Event event;
	while (window.pollEvent(event))
	{
		switch (event.type)
		{
			case sf::Event::KeyPressed:
				handlePlayerInput(event.key.code, true);
				break;
                
			case sf::Event::KeyReleased:
				handlePlayerInput(event.key.code, false);
				break;
                
			case sf::Event::Closed:
				window.close();
				break;
		}
	}
}
コード例 #11
0
ファイル: testGameLoop.c プロジェクト: andrsoze/gPng
void testBallMoves() {
    int startStateIndex, numStartStates;
    GravPngScoreChange scoreChange;

    #define NUM_START_STATES 10
    StartState startStates[NUM_START_STATES] = { straightLeftPaddleNonTopCollision, noStartState, straightRightNonTopCollision, straightLeftPaddleRearCollision, straightRightPaddleRearCollision, straightRightPaddleBottomCollision, straightRightPaddleTopCollision, straightLeftPaddleTopCollision, straightLeftPaddleBottomCollision}; 
    numStartStates = NUM_START_STATES;   
    startStateIndex = 0;
    setupSpriteMemPtrs();
    fillSpriteMem();
    
    initGameObjects(startStates[startStateIndex]);
    drawBall(&ball);
    drawPaddleSprites(&paddleOne, &paddleTwo);
    printPaddle(&paddleTwo);
    printBall(&ball); 
    printCourt(&court);

    while(1) {
	scoreChange = updatePongGame(&gPngGame);
	if(scoreChange == PLAYER_ONE_GOAL || scoreChange == PLAYER_TWO_GOAL) {
	    flashScreen();
	    startStateIndex++;
	    if(startStateIndex < numStartStates) {
		if(startStates[startStateIndex] == noStartState) {
		    resetPongGame(&gPngGame);
		    gPngGame.isPlayerOneHuman = true;
		} else {
		    initGameObjects(startStates[startStateIndex]);
		}
	    } else {
		return;
	    }
	    
	}
	
	if(startStates[startStateIndex] == noStartState) {
	    handlePlayerInput(&gPngGame, true);
	    //playerOneInput(&gPngGame);
	    playerTwoInput(&gPngGame);
	}
	
	drawBall(&ball);
	drawPaddleSprites(&paddleOne, &paddleTwo);
   } 
}
コード例 #12
0
ファイル: client.cpp プロジェクト: EmmetCooper/ore-infinium
void Client::handleInputEvents()
{
    SDL_Event event;

    while (SDL_PollEvent(&event)) {

        m_gui->handleEvent(event);

        if (m_mainPlayer && m_peer && m_connected && m_gui->inputDemanded() == false) {
            handlePlayerInput(event);
            m_quickBarMenu->handleEvent(event);
        }

        switch (event.type) {
        case SDL_KEYDOWN:
            if (event.key.keysym.sym == SDLK_ESCAPE) {
                //only if we are connected, do we allow hiding and showing (escape menu)
                if (m_peer) {
                    if (!m_mainMenu->escapeMenuVisible()) {
                        m_mainMenu->showEscapeMenu();
                    } else {
                        m_mainMenu->hideEscapeMenu();
                    }
                }
            } else if (event.key.keysym.sym == SDLK_F1) {
                m_debugMenu->setCollapsed(!m_debugMenu->collapsed());
            } else if (event.key.keysym.sym == SDLK_F8) {
                std::stringstream ss;
                ss << "Player";
                std::random_device device;
                std::mt19937 rand(device());
                std::uniform_int_distribution<> distribution(0, INT_MAX);

                ss << distribution(rand);

                startMultiplayerHost(ss.str());
            } else if (event.key.keysym.sym == SDLK_F10) {
                m_renderGUI = !m_renderGUI;
            } else if (event.key.keysym.sym == SDLK_F11) {
                if (m_debugSettings == nullptr) {
                    m_debugSettings = new DebugSettings(this);
                    m_debugSettings->show();
                } else {
                    if (m_debugSettings->visible()) {
                        m_debugSettings->hide();
                    } else {
                        m_debugSettings->show();
                    }
                }
            }
            break;


        case SDL_WINDOWEVENT_CLOSE:
            //FIXME: f*****g useless. doesn't get called for..gee, what would this event be called for? oh yeah, window closing. No, instead that's f*****g SDL_QUIT, which is
            // also for some f*****g reason, also ctrl-C/break. That shit don't make sense brah

            // if (m_peer) {
            //     m_mainMenu->toggleShown();
            // } else {
            //     shutdown();
            // }
            break;

        case SDL_QUIT:
//            if (m_peer) {
//                m_mainMenu->showEscapeMenu();
//            } else {
            //NOTE: so far this seems to be ctrl-C as well as window close button. Who the f**k knows why the above one does nothing
            shutdown();
            //}
            break;

        default:
            break;
        }
    }
}
コード例 #13
0
void OJ_SceneScoreAttack::update(Step* _step) {
	playerOne->health = 9999999999999;
	playerTwo->health = 9999999999999;
	if(arena->startIndicatorTimer.active){
		waveText->parents.at(0)->scale(Easing::easeOutQuint(arena->startIndicatorTimer.elapsedSeconds, 1.5f, -0.5f, arena->startIndicatorTimer.targetSeconds), false);
		waveText->setMarginTop(vox::NumberUtils::randomFloat(0.0025f, 0.005f) + Easing::easeOutBounce(arena->startIndicatorTimer.elapsedSeconds, 0.75f, -0.75f, arena->startIndicatorTimer.targetSeconds));
	}else{
		waveText->parents.at(0)->scale(vox::NumberUtils::randomFloat(0.98f, 1.02f), false);
		waveText->setMarginTop(vox::NumberUtils::randomFloat(0.0025f, 0.005f));
	}

	std::wstringstream ws;
	ws << "TIME: " << (int)(gameOver.targetSeconds - gameOver.elapsedSeconds - 2) << "\nSCORE: " << arena->score;
	scoreText->setText(ws.str());

	specialTimer.update(_step);
	snapTime += _step->deltaTime;
	if(snapped){
		glm::vec3 v = snapPos - playerOne->rootComponent->getWorldPos();
		v = glm::normalize(v);
		float s = playerOne->rootComponent->body->GetMass() * 10 * std::min(snapTime, 10.f);
		playerOne->rootComponent->applyLinearImpulseToCenter(v.x*s, v.y*s);

		v = snapPos - playerTwo->rootComponent->getWorldPos();
		v = glm::normalize(v);
		s = playerTwo->rootComponent->body->GetMass() * 10 * std::min(snapTime, 10.f);
		playerTwo->rootComponent->applyLinearImpulseToCenter(v.x*s, v.y*s);
	}

	if(beamActive){
		OJ_Bullet * beamPart = arena->getBullet(OJ_ResourceManager::playthrough->getTexture("BULLET")->texture);
		beamPart->setTranslationPhysical(snapPos.x + teamworkAngle.x + vox::NumberUtils::randomFloat(-3, 3), snapPos.y + teamworkAngle.y + vox::NumberUtils::randomFloat(-3, 3), 0, false);
		beamPart->applyLinearImpulseToCenter(teamworkAngle.x*25, teamworkAngle.y*25);
	}

	if(guideActive){
		guidedBullet->applyLinearImpulseToCenter(teamworkAngle.x*std::min(maxCharge, snapTime)*10, teamworkAngle.y*std::min(maxCharge, snapTime)*10);
	}

	joy->update(_step);

	if(joy->joysticks[0] == nullptr){
		joy->joysticks[0] = new JoystickVirtual(0);
	}
	if(joy->joysticks[1] == nullptr){
		joy->joysticks[1] = new JoystickVirtual(1);
	}

	unsigned int joyCnt = 2;
	switch(joyCnt){
		case 2:
			if(playerTwo != nullptr){
				handlePlayerInput(playerTwo, joy->joysticks[1]);
			}
		case 1:
			if(playerOne != nullptr){
				handlePlayerInput(playerOne, joy->joysticks[0]);
			}
			break;
		default:
			exit;
	}
	
	if(playerOne != nullptr && playerTwo != nullptr){
		glm::vec2 av = (playerOne->aim + playerTwo->aim) * 0.5f;
		float angle = glm::atan(av.y, av.x);
		teamworkAngle = glm::vec2(cos(angle), sin(angle));
	}


	handleStancing();

	
	// camera controls
	if (keyboard->keyJustUp(GLFW_KEY_1)){
		if(activeCamera == cameras.back()){
			activeCamera = cameras.at(0);
		}else{
			for(unsigned long int i = 0; i < cameras.size()-1; ++i){
				if(activeCamera == cameras.at(i)){
					activeCamera = cameras.at(i+1);
					break;
				}
			}
		}
	}

	box2DWorld->update(_step);

	OJ_Scene::update(_step);

	glm::uvec2 sd = vox::getScreenDimensions();
	uiLayer->resize(0, sd.x, 0, sd.y);
	uiLayer->update(_step);
	
	gameOver.update(_step);
	if(gameOver.targetSeconds - gameOver.elapsedSeconds < 2){
		if(gameOverMessage == nullptr){
			gameOverMessage = new TextArea(bulletWorld, this, font, textShader, 1.f);
			gameOverMessage->setRationalHeight(1.f);
			gameOverMessage->horizontalAlignment = kCENTER;
			gameOverMessage->verticalAlignment = kMIDDLE;
			gameOverMessage->setText(L"TIME'S UP!");
			uiLayer->addChild(gameOverMessage);
			playerOne->disable(2);
			playerTwo->disable(2);
		}
		ShaderComponentHsv * s = dynamic_cast<ShaderComponentHsv *>(dynamic_cast<ComponentShaderBase *>(mainShader)->getComponentAt(1));
		s->setValue(Easing::easeInOutCubic(gameOver.elapsedSeconds - (gameOver.targetSeconds-2), 1, -1, 2.f));
	}
}