void LevelPlaySelect::checkMouse(ImageManager &imageManager, SDL_Renderer &renderer){
	int x,y;
	
	//Get the current mouse location.
	SDL_GetMouseState(&x,&y);
	
	//Check if we should replay the record.
	if(selectedNumber!=NULL){
		SDL_Rect mouse={x,y,0,0};
		if(!bestTimeFilePath.empty()){
			SDL_Rect box={SCREEN_WIDTH-420,SCREEN_HEIGHT-130,372,32};
			if(checkCollision(box,mouse)){
				Game::recordFile=bestTimeFilePath;
				levels->setCurrentLevel(selectedNumber->getNumber());
				setNextState(STATE_GAME);
				return;
			}
		}
		if(!bestRecordingFilePath.empty()){
			SDL_Rect box={SCREEN_WIDTH-420,SCREEN_HEIGHT-98,372,32};
			if(checkCollision(box,mouse)){
				Game::recordFile=bestRecordingFilePath;
				levels->setCurrentLevel(selectedNumber->getNumber());
				setNextState(STATE_GAME);
				return;
			}
		}
	}
	
	//Call the base method from the super class.
    LevelSelect::checkMouse(imageManager, renderer);
}
void StateDistractedMath::update()
{
        // Hier alle actieve shit
        if (mathstate == 5)
        {
            number = rand()%10;
            number2 = (rand()%9 + 1);
            number2 = rand()%40;

            if (teller.getScaledTicks() == 3)
            {
                input->resetKeys();
                teller.start();
                mathstate = 0;
                number = rand()%10;
                if (oper == 0)
                {
                    number2 = rand()%((5 + variables[2].getInt())*2);

                    number3 = (number2 - number);
                }
                if (oper == 1)
                {
                    number2 = (rand()%(int)((3 + variables[2].getInt())*0.5f)) + 1;
                            //

                    number3 = number2 * number;
                }
            }
        }


        if(teller.getScaledTicks() > (8 - round))
        {
            if (mathstate == 0 )
            {
                mathstate = 3;
                teller.start();
                round = 4;
            }
            else
            {
                variables[0].setInt(0);
                //SDL_EnableUNICODE(tv);
                setNextState(STATE_MAIN);
            }
        }
        if(hasWon)
        {

            variables[0].setInt(1);
            //SDL_EnableUNICODE(tv);
            setNextState(STATE_MAIN);
        }
}
Example #3
0
void StateHeader::unlimitedUpdate()
{
    // Are we in the end game?
	if ( fail && done) {
		variables[0].setInt(0);
		setNextState( STATE_MAIN);
	}

	// Done it!
	if ( count == 0) {
		variables[0].setInt(1);
		setNextState( STATE_MAIN);
	}
}
void LevelFinishedMenu::logic()
{
	//sprawdzam czy okno nie zosta�o zamkni�te
	if (!window->isOpen())
	{
		setNextState(GAME_STATE_EXIT);
	}

	//aktualizuj� tekstury przycisk�w
	for (unsigned int i = 0; i < interactiveElements.size(); i++)
	{
		if (i == currentOption)
		{
			//to jest aktywny przycisk
			interactiveElements[i].setColor(sf::Color(255, 255, 255));
		}
		else
		{
			//to nie jest aktywny przycisk
			interactiveElements[i].setColor(sf::Color(96, 96, 96));
		}
	}

	//przesuwam map� w d��
	if (secondBackgroundPosition.y == 0)
		firstBackgroundPosition.y = -1600.0;

	if (firstBackgroundPosition.y == 0)
		secondBackgroundPosition.y = -1600.0;

	firstBackground.setPosition(firstBackgroundPosition);
	firstBackgroundPosition.y = firstBackgroundPosition.y + 1.0f;
	secondBackground.setPosition(secondBackgroundPosition);
	secondBackgroundPosition.y = secondBackgroundPosition.y + 1.0f;
}
Example #5
0
void CMapQMAPExport::slotStart()
{
    if(!states.isEmpty() || !state.isNull()) return;
    pushExport->setEnabled(false);
    pushCancel->setText(tr("Cancel"));
    textBrowser->clear();

    tainted = false;

    if(mapsel.subtype == IMapSelection::eGDAL)
    {
        startExportGDAL();
    }
    else if(mapsel.subtype == IMapSelection::eTMS || mapsel.subtype == IMapSelection::eWMS)
    {
        startExportStreaming();
    }
    else
    {
        stdErr(tr("Unknown map format."), true);
    }

    totalNumberOfStates = states.count();
    // start the statemachine
    setNextState();
}
void LevelFinishedMenu::handleEvents()
{
	sf::Event event;

	while (window->pollEvent(event))
	{
		if (event.type == sf::Event::Closed)
		{
			window->close();
		}
		else if (event.type == sf::Event::KeyPressed)
		{
			if (event.key.code == sf::Keyboard::Down)
			{
				if (currentOption < 2)
				{
					currentOption++;
				}
			}
			else if (event.key.code == sf::Keyboard::Up)
			{
				if (currentOption > 0)
				{
					currentOption--;
				}
			}
			else if (event.key.code == sf::Keyboard::Return)
			{
				switch (currentOption)
				{
				case 0:		//NEXT
					nextLevel++;
					setNextState(GAME_STATE_GAME);
					break;

				case 1:		//MAIN MENU
					setNextState(GAME_STATE_MAIN_MENU);
					break;

				case 2:		//EXIT
					setNextState(GAME_STATE_EXIT);
					break;
				}
			}
		}
	}
}
Example #7
0
CCMWSConnection::CCMWSConnection()
{
	registerState(CCMWSConnection::csHello, new CStateCreator<CCMWCHelloState, CCMWSConnection>(this));
	registerState(CCMWSConnection::csMain, new CStateCreator<CCMWCMainState, CCMWSConnection>(this));
	
	setNextState(CCMWSConnection::csHello);
	switchStates();
};
void LevelPlaySelect::selectNumber(ImageManager& imageManager, SDL_Renderer& renderer, unsigned int number,bool selected){
	if(selected){
		levels->setCurrentLevel(number);
		setNextState(STATE_GAME);
	}else{
        displayLevelInfo(imageManager, renderer,number);
	}
}
void Options::handleEvents()
{
	if (event.type == SDL_QUIT || event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE)
		setNextState(STATE_EXIT);

	back->handleEvents();
	exit->handleEvents();
}
Example #10
0
void StateTitle::update()
{
    EFFECTSYSTEM->update();

    if(m_IsEnd && m_ThunderAlpha != 255)
    {
        m_ThunderAlpha += 75;
        if(m_mscAmbient.getVolume() != 0) m_mscAmbient.setVolume(m_mscAmbient.getVolume() - 75);

        if(m_ThunderAlpha > 255) m_ThunderAlpha = 255;
        m_rctThunder.setAlpha(m_ThunderAlpha);
    }

    if(EFFECTSYSTEM->getFadeAlpha() == 255 && m_IsEnd) setNextState(STATE_STORY);

    if(m_CurrentScreen != 2)
    {
        if(EFFECTSYSTEM->getFadeAlpha() == 0) m_Counter +=1;

        if(m_Counter >= 64)
        {
            if(m_Counter == 64) EFFECTSYSTEM->fadeOut(8);

            if(EFFECTSYSTEM->getFadeAlpha() == 255)
            {
                m_CurrentScreen += 1;

                //SOUNDSYSTEM->playSound(THUNDER2);

                EFFECTSYSTEM->fadeIn(8);
            }

            m_Counter +=1;

            if(EFFECTSYSTEM->getFadeAlpha() == 0 && EFFECTSYSTEM->getFadeDirection() == -1) m_Counter = 0;
        }

        if(m_Counter == 0 && m_CurrentScreen == 0)
        {
            //SOUNDSYSTEM->playSound(THUNDER1);
        }
    }

    if(m_CurrentScreen == 2)
    {
        if(!EFFECTSYSTEM->isRaining())
        {
            m_mscTitle.play();
            EFFECTSYSTEM->setRain(true);
        }

        m_bmpPressStart.setAlpha(m_bmpPressStart.getAlpha() + m_FadeDir);
        if(m_bmpPressStart.getAlpha() == 0 || m_bmpPressStart.getAlpha() == 255) m_FadeDir *= -1;
    }

    if(m_mscAmbient.getVolume() != 100 && !m_IsEnd) m_mscAmbient.setVolume(m_mscAmbient.getVolume() + 2);
}
Example #11
0
void StateStory::update()
{
    EFFECTSYSTEM->update();

    if(m_Counter == 0) EFFECTSYSTEM->fadeIn(8);
    if(m_Counter != -1) m_Counter -= 1;

    if(EFFECTSYSTEM->getFadeAlpha() == 255 && m_IsEnd) setNextState(STATE_LEVEL);
}
void JM_GameOverState::activateButton(JM_GUIElementTypes type)
{
    if(type != ELEMENTTYPE_NULL){
        switch(type){
        case BUTTONELEMENTTYPE_QUIT: setNextState(STATE_MAINMENU); break;
        default: break;
        }
    }
}
Example #13
0
MainMenu::MainMenu( World * worldObject )
{
	cout << "Main Menu instansiated . . .\n\n";
	setNextState (Screen_GAME);
	setDone(true);

	
	//object setup
	this->worldObject = worldObject; // world object
}
//metody wirtualne dziedziczone od GameState
//czyli MainLoop
void LevelFinishedMenu::handleEvents()
{
    sf::Event event;
    while (window->pollEvent(event))
    {
        if (event.type == sf::Event::Closed)
        {
            window->close();
        }
        if (event.type == sf::Event::KeyPressed)
        {
            if (event.key.code == sf::Keyboard::Return)
            {
                switch (actualOption)
                {
                case 0:	//nastêpny poziom
                    nextLevel++;
                    setNextState(GAME_STATE_GAME);
                    break;

                case 1:	//powtórzenie poziomu
                    setNextState(GAME_STATE_GAME);
                    break;

                case 2:	//do menu
                    setNextState(GAME_STATE_MAIN_MENU);
                    break;
                }
            }
            else if (event.key.code == sf::Keyboard::Down)	//naciœniêto klawisz w dó³
            {
                if (actualOption < 2)
                    actualOption++;
            }
            else if (event.key.code == sf::Keyboard::Up)	//naciœniêto klawisz do góry
            {
                if (actualOption > 0)
                    actualOption--;
            }
        }
    }
}
void LevelFinishedMenu::logic()
{
    //sprawdzam czy okno nie zosta³o zamkniête
    if (!window->isOpen())
    {
        setNextState(GAME_STATE_EXIT);
    }

    //uaktualniam pozycjê celownika
    viewFinder.setPosition(sf::Vector2f(interactiveElements[actualOption].getPosition().x - 5, interactiveElements[actualOption].getPosition().y - 5));
}
Example #16
0
void StateMachine::update(float dt)
{
	if (m_nextState)
	{
		setNextState();
	}

	if (m_currentState)
	{
		m_currentState->onExcute(dt);
	}
}
void LevelPlaySelect::GUIEventCallback_OnEvent(ImageManager& imageManager, SDL_Renderer& renderer, std::string name,GUIObject* obj,int eventType){
	//Let the level select handle his GUI events.
    LevelSelect::GUIEventCallback_OnEvent(imageManager,renderer,name,obj,eventType);
	
	//Check for the play button.
	if(name=="cmdPlay"){
		if(selectedNumber!=NULL){
			levels->setCurrentLevel(selectedNumber->getNumber());
			setNextState(STATE_GAME);
		}
	}
}
Example #18
0
bool Options::clickHandler() {
	enum MenuValues {
		GFX,
		CONTROLS,
		AUDIO,
		BACK,
	};
	if(InputManager::pressedWithoutRepeat(KEY_SPACE) || InputManager::pressedWithoutRepeat(KEY_ENTER)) {
		if(!(*current_selected)) return true;
		
		switch((current_selected - menu_texts.begin())) {
			case GFX:
				setNextState("GFXState");
			break;
			case CONTROLS:
				setNextState("OptionControls");
				break;
			case AUDIO:
				setNextState("OptionAudio");
				break;
			case BACK:
				setNextState("Menu");
				break;
		}
		return false;
	}

	if(InputManager::mousePressedOnce(MOUSE_LEFT)) {
		for(auto it = menu_texts.begin(); it != menu_texts.end(); ++it) {
			if((*it)->inside(InputManager::mouseX, InputManager::mouseY)) {
				switch((it - menu_texts.begin())) {
					case GFX:
						setNextState("GFXState");
					break;
					case CONTROLS:
						setNextState("OptionControls");
						break;
					case AUDIO:
						setNextState("OptionAudio");
						break;
					case BACK:
						setNextState("Menu");
						break;
				}
				return false;
			}
		}
	}
	return true;
}
Example #19
0
bool PausState::Update(float deltatime)
{


	for(int i=0; i<m_buttons.size();i++)
	{
		if(m_buttons.at(i)->Update()== "Clicked" && m_buttons.at(i)->GetType2() == "Resume")
		{
			m_engine->m_soundmanager->PlaySound("M4A1.wav");
			printf("Next State set to GameState\n");
			setNextState("Game");
			return false;
		}
		if(m_buttons.at(i)->Update()== "Clicked" && m_buttons.at(i)->GetType2() == "Customization")
		{
			m_engine->m_soundmanager->PlaySound("M4A1.wav");
			printf("Next State set to Customize\n");
			setNextState("Customize");
			return false;
		}
		if(m_buttons.at(i)->Update()== "Clicked" && m_buttons.at(i)->GetType2() == "MainMenu")
		{
			m_engine->m_soundmanager->PlaySound("M4A1.wav");
			m_engine->m_soundmanager->PlayMusic("Campfire.wav");
			printf("Next State set to MainMenu\n");
			m_engine->m_gom->ClearGameObjects();
			setNextState("MainMenu");
			m_engine->m_paused = 1;
			return false;
		}


	}

	return  true;
}
Example #20
0
void BaseCar::initFSM()
{
    FSMState line;
    line.setName(CarState::Line);
    line.enterCallback = CC_CALLBACK_0(BaseCar::enterLineCallBack, this);
    line.updateCallback = CC_CALLBACK_1(BaseCar::lineUpdate, this);
    addState(line);

    FSMState circle;
    circle.setName(CarState::Circle);
    circle.enterCallback = CC_CALLBACK_0(BaseCar::enterCircleCallBack, this);
    circle.updateCallback = CC_CALLBACK_1(BaseCar::circleUpdate, this);
    addState(circle);

    setNextState(CarState::Line);
}
Example #21
0
void StateBadVista::userInput()
{
  if (inputDelay.getTicks() < INPUT_DELAY)
    return;
  inputDelay.start();

  input->update();
  #ifdef PLATFORM_PC
    if(input->isQuit())
      nullifyState();
  #endif

  if(input->isB() && bvState < BV_PITCHED) {
    bvState = BV_WINDUP;
    armAngle += armIncrement;
    if (armAngle >= ARM_ANGLE_MAX || armAngle <= 1) {
      armIncrement = -armIncrement;
      ++pwned_count;
      pwned =  PWNED_STOPPED <= pwned_count && pwned_count <= PWNED_PWNED + 1;

    }

    logo.setPosition((int)ARM_INIT_X, (int)ARM_INIT_Y + armAngle);
  }

  if (bvState == BV_WINDUP && !input->isB()) {
    bvState = BV_PITCHED;

    logoX = LOGO_INIT_X;
    logoY = LOGO_INIT_Y;
    float initVelocity = (float) armAngle * ANGLE_TO_VELOCITY_MULTIPLIER;
    logoVelocityX = -initVelocity;
    logoVelocityY = initVelocity;
    armAngle = 1;
  }

  if(bvState > BV_PITCHED) {
    if(input->isB())
      setNextState(STATE_MAIN);
  }

  if(input->isStart())//I wasnt sure what exit key was...
    {
        pauseToggle();
        input->resetKeys();
    }
}
void JM_GameOverState::handleInput()
{
    while(SDL_PollEvent(&m_event))
    {        
        if(m_event.type ==  SDL_MOUSEBUTTONDOWN){
            if(m_event.button.button == SDL_BUTTON_LEFT){
                activateButton(getGUI().handleClick(m_event.button.x, m_event.button.y));
            }
        }

        else if(m_event.type == SDL_KEYDOWN){
            if(m_event.key.keysym.sym == SDLK_p){
                setNextState(STATE_PLAYING);
            }
        }
    }
}
Example #23
0
void StateCredits::userInput()
{
	//	Refresh inputs
	input->update();
    #ifdef PLATFORM_PC
        if(input->isQuit())
            nullifyState();
    #endif
	//	Skip current Credits item
	if((input->isB() || input->isX()) && currentLine < NumberUtility::getSize(CREDITS)-1)
	{
		++currentLine;
		input->resetKeys();
	}
	//	skip credits
	if(input->isStart())
	{
		setNextState(STATE_TITLE);
		input->resetKeys();
	}
}
Example #24
0
void StateBarrelRoll::userInput()
{

    input->update();
    #ifdef PLATFORM_PC
        if(input->isQuit())
            nullifyState();
    #endif

    if(input->isLeft())
    {
        ang += 0.3;
        //Input.resetKeys();
    }
    if(input->isRight())
    {
        ang -= 0.3;
        //Input.resetKeys();
    }

    if(input->isUp())
    {
       zoom += 0.001;
    }

    if(input->isDown())
    {
        if(zoom > 0.3)
        {
            zoom -= 0.001;
        }
    }

    if(input->isSelect())//I wasnt sure what exit key was...
    {
        setNextState(STATE_MAIN);
        //nullifyState();
        input->resetKeys();
    }
}
Example #25
0
int StateMachine::processEventsInWaitForTopicState(int ev,
        broker::message msg)
{
    int statusCode = 0;
    switch(ev)
    {
        case TOPIC_RECEIVED_EVENT:
        {
            statusCode = doActionsForGroupTopicEvent(msg);
            setNextState(statusCode);
            break;
        }
        case SIG_KILL_EVENT:
        {
            statusCode = doActionsForKillSignalEvent();
            return statusCode;
        }
        case TIMER_EVENT:
        {
            //stop the timer.In this state timer is not allowed.
            StateMachine::isTimerEvent = false;
            break;
        }
        case CONNECTION_BROKEN_EVENT:
        {
            doActionsForConnectionBrokenEvent();
            break;
        }
        default:
        {
            std::ostringstream stringStream;
            stringStream << eventToString(ev) << " is not allowed in " <<
                    "WAIT_FOR_TOPIC" << "expecting group topic events";
            LOG(WARNING) << stringStream;
            ptBCM->getQueryManagerPointer()->
                sendErrortoBro(stringStream.str());
        }
    };
}
Example #26
0
void Commander::initFSM(){
    FSMState g3;
    g3.setName(GroupState::g3);
    g3.enterCallback = CC_CALLBACK_0(Commander::g3enter, this);
    g3.updateCallback = CC_CALLBACK_1(Commander::g3update, this);
    
    FSMState g12;
    g12.setName(GroupState::g12);
    g12.enterCallback = CC_CALLBACK_0(Commander::g12enter, this);
    g12.updateCallback = CC_CALLBACK_1(Commander::g12update, this);
    
    FSMState g111;
    g111.setName(GroupState::g111);
    g111.enterCallback = CC_CALLBACK_0(Commander::g111enter, this);
    g111.updateCallback = CC_CALLBACK_1(Commander::g111update, this);
    
    addState(g3);
    addState(g12);
    addState(g111);
    
    setNextState(GroupState::g3);
    
}
Example #27
0
void StateBadVista::update()
{

  const int LOGO_SIDE = logo.getWidth()  / 2;
  const int LOGO_TOP  = logo.getHeight() / 2;

  arm.setScaleX(1);
  arm.setScaleY(1);
  arm.setRotation(-armAngle);

  logo.setScaleX(1);
  logo.setScaleY(1);
  logo.setRotation(-armAngle * 0.5f);


  if(bvState == BV_WINDUP) {
    float radians = armAngle * 3.14159f / 180.0f;
    logo.setPosition(
        (int) LOGO_INIT_X + (armAngle * 0.25f) - (50 * sin(radians)),
        (int) LOGO_INIT_Y - 100 + (100 * cos(radians)));
    return;
  }


  if(bvState == BV_PITCHED) {
    // Calculate motion region
    #ifdef PENJIN_FIXED
        SimpleRegion tempRegion(logoX, logoY, fixedpoint::fix2int(logoX + logoVelocityX), fixedpoint::fix2int(logoY + logoVelocityY));
    #else
        SimpleRegion tempRegion(logoX, logoY, logoX + logoVelocityX, logoY + logoVelocityY);
    #endif
    SimpleRegion motion(
      tempRegion.x1() - LOGO_SIDE,
      tempRegion.y1() - LOGO_TOP,
      tempRegion.x2() + LOGO_SIDE,
      tempRegion.y2() + LOGO_TOP);

    if (hitObstacle(horizontalObstacles, motion)) {
      if (bounce.isPlaying()) bounce.stop();
      bounce.play();
      logoVelocityX *= BOUNCE_DECAY;
      logoVelocityY *= BOUNCE_DECAY;
      logoVelocityY *= -1;
      numBounces++;
    }

    if (hitObstacle(verticalObstacles, motion)) {
      if (bounce.isPlaying()) bounce.stop();
      bounce.play();
      logoVelocityX *= BOUNCE_DECAY;
      logoVelocityY *= BOUNCE_DECAY;
      logoVelocityX *= -1;
    }

    // Sometimes the ball gets caught inside the side of the litter can:
    // neither inside nor out. The following two paragraphs seek to prevent
    // that.
    if (hitObstacle(basketLeft, motion)) {
      bounce.play();
      logoVelocityX *= BOUNCE_DECAY;
      logoVelocityY *= BOUNCE_DECAY;
      if (logoX >= BASKET_LEFT_INSIDE && logoVelocityX < 0)
        logoVelocityX *= -1;
      if (logoX < BASKET_LEFT_INSIDE && logoVelocityX > 0)
        logoVelocityX *= -1;
    }

    if (hitObstacle(basketRight, motion)) {
      bounce.play();
      logoVelocityX *= BOUNCE_DECAY;
      logoVelocityY *= BOUNCE_DECAY;
      if (logoX >= BASKET_RIGHT_INSIDE && logoVelocityX < 0)
        logoVelocityX *= -1;
      if (logoX < BASKET_RIGHT_INSIDE && logoVelocityX > 0)
        logoVelocityX *= -1;
    }

    if (hitObstacle(playerObstacle, motion)) {
      init();
      return;
    }

    SimpleRegion logoPosition(logoX - LOGO_SIDE, logoY - LOGO_TOP, logoX + LOGO_SIDE, logoY + LOGO_TOP);

    // Check for end of game
    if (ballStopped()) {
      bool won = inBasket();
      variables[0].setValue(won ? 1 : 0);
      if (won)
        bvState = BV_WON;
      else
        bvState = BV_LOST;
      counter.start();
    }

    // Ensure gravity doesn't overcome the bounce decay
    if (inBasket()) {
        // Once the logo enters the basket, don't let it bounce out
        float newYPos = GRAVITY + logoVelocityY + logoY + LOGO_TOP;
        if (logoVelocityY < 1 && BASKET_BOT - logoY < LOGO_TOP + 5) {
            logoVelocityY = 0;
            logoVelocityX = 0;
            logoY = BASKET_BOT - LOGO_TOP;
        }
        else if (BASKET_TOP < newYPos && newYPos < BASKET_BOT)
            logoVelocityY += GRAVITY;
        else if (newYPos  > BASKET_BOT)
            logoVelocityY = BASKET_BOT - logoY - LOGO_TOP;
        else
            logoVelocityY = BASKET_TOP - logoY - LOGO_TOP;
    }
    else {
        if (GRAVITY + logoVelocityY + logoY + LOGO_TOP < FLOOR)
            logoVelocityY += GRAVITY;
        else
            logoVelocityY = FLOOR - logoY - LOGO_TOP;
    }


    #ifdef PENJIN_FIXED
        logoY += fixedpoint::fix2int(logoVelocityY);
        logoX += fixedpoint::fix2int(logoVelocityX);
    #else
        logoY += logoVelocityY;
        logoX += logoVelocityX;
    #endif

    logo.setPosition(logoX - LOGO_SIDE, logoY - LOGO_TOP);
    return;
  }


  if(bvState == BV_LOST) {
    if(pwned) {
        bounce.loadSound("music/BadVista/chimes.ogg");
        bounce.play();

        backsound.stop();
        backsound.loadMusic("music/BadVista/pp.bv.windows.e.egg.ogg");
        backsound.setLooping(false);
        backsound.play();

        if (pwned_count < PWNED_PWNED)
            loserBackground.loadSprite("images/BadVista/stopped.jpg");
        else
            loserBackground.loadSprite("images/BadVista/lost.png");

        bvState = BV_PWNED;
    }
    else
        if(counter.getScaledTicks() > END_DELAY)
            setNextState(STATE_MAIN);
  }

  if(bvState == BV_WON) {
    if(counter.getScaledTicks() > END_DELAY)
        setNextState(STATE_MAIN);
  }

  if(bvState == BV_PWNED) {
    if(counter.getScaledTicks() > LOSER_DELAY && !backsound.isPlaying())
      setNextState(STATE_MAIN);
  }
}
void StateOneButtonBandit::unlimitedUpdate() {
        switch (currentState) {
            // Standing still
            case 0:
                if (gameTimer.getScaledTicks() >= 10) {
                    currentState = 1;
                    gameTimer.start();

                    // Next step is to go backwards
                    currentGlobalRate = -0.2f;
                }
                break;

            // Small climb backwards
            case 1:
                if (gameTimer.getScaledTicks() >= 3) {
                    click.play();
                    currentState = 2;
                    gameTimer.start();

                    // Next step is start spinning
                    currentGlobalRate = 0.0f;
                }
                break;

            // Beginning to spin
            case 2:
                if (gameTimer.getScaledTicks() >= 15) {
                    tumbler.play();
                    currentState = 3;
                    gameTimer.stop();
                    leftColumn.active = true;

                    // Next step is spin at full speed
                    currentGlobalRate = startGlobalRate;
                }
                break;

            // Playable
            case 3:
                break;

            // Start the end timer
            case 4:
                if (rightColumn.isStopped()) {
                    tumbler.stop();
                }
                if ((win && rightColumn.isStopped()) || !win) {
                    gameTimer.start();
                    currentState = 5;
                    if (win) {
                        // Play victory music
                        chime.play();
                    }
                    else {
                        // Play defeat music
                        error.play();
                    }
                }
                break;

            // End the game
            case 5:
                if (gameTimer.getScaledTicks() >= 15) {
                    variables[0].setInt(win);
                    setNextState(STATE_MAIN);
                }

        }
}
Example #29
0
/**
 * Enable the FileContent command and wait for a configuration file.
 * Set the next expected state when the file is correctly decoded and applied.
 * @param expectedState next expected state after successfully applying the configuration
 */
void NA62DimServer::waitConfigurationFile(int expectedState) {
	println("... Waiting for configuration file");
	fDimFileContent->enable();
	setNextState(expectedState);
}
Example #30
0
RWGame::RWGame(int argc, char* argv[])
	: config("openrw.ini")
	, state(nullptr), world(nullptr), renderer(nullptr), script(nullptr),
	debugScript(false), inFocus(true),
	showDebugStats(false), showDebugPaths(false), showDebugPhysics(false),
	accum(0.f), timescale(1.f)
{
	if (!config.isValid())
	{
		throw std::runtime_error("Invalid configuration file at: " + config.getConfigFile());
	}

	size_t w = GAME_WINDOW_WIDTH, h = GAME_WINDOW_HEIGHT;
	bool fullscreen = false;
	bool newgame = false;
	bool test = false;
    std::string startSave;
	std::string benchFile;

	for( int i = 1; i < argc; ++i )
	{
		if( strcasecmp( "-w", argv[i] ) == 0 && i+1 < argc )
		{
			w = std::atoi(argv[i+1]);
		}
		if( strcasecmp( "-h", argv[i] ) == 0 && i+1 < argc )
		{
			h = std::atoi(argv[i+1]);
		}
		if( strcasecmp( "-f", argv[i] ) == 0 )
		{
			fullscreen = true;
		}
		if( strcmp( "--newgame", argv[i] ) == 0 )
		{
			newgame = true;
		}
		if( strcmp( "--test", argv[i] ) == 0 )
		{
			test = true;
		}
		if( strcmp( "--debug", argv[i] ) == 0 )
		{
			debugScript = true;
		}
        if( strcmp( "--load", argv[i] ) == 0 && i+1 < argc )
        {
            startSave = argv[i+1];
        }
		if( strcmp( "--benchmark", argv[i]) == 0 && i+1 < argc )
		{
			benchFile = argv[i+1];
		}
	}
	
	
	sf::Uint32 style = sf::Style::Default;
	if( fullscreen )
	{
		style |= sf::Style::Fullscreen;
	}

	sf::ContextSettings cs;
	cs.depthBits = 32;
	cs.stencilBits = 8;
	window.create(sf::VideoMode(w, h), "",  style, cs);

	log.addReciever(&logPrinter);
	log.info("Game", "Game directory: " + config.getGameDataPath());
	
	if(! GameData::isValidGameDirectory(config.getGameDataPath()) )
	{
		throw std::runtime_error("Invalid game directory path: " + config.getGameDataPath());
	}

	data = new GameData(&log, &work, config.getGameDataPath());

	// Initalize all the archives.
	data->loadIMG("/models/gta3");
	//engine->data.loadIMG("/models/txd");
	data->loadIMG("/anim/cuts");
	data->loadTXD("/models/hud.txd");
	
	data->load();
	
	// Initialize renderer
	renderer = new GameRenderer(&log, data);
	
	// Set up text renderer
	renderer->text.setFontTexture(0, "pager");
	renderer->text.setFontTexture(1, "font1");
	renderer->text.setFontTexture(2, "font2");

	debug = new DebugDraw;
	debug->setDebugMode(btIDebugDraw::DBG_DrawWireframe | btIDebugDraw::DBG_DrawConstraints | btIDebugDraw::DBG_DrawConstraintLimits);
	debug->setShaderProgram(renderer->worldProg);

	data->loadDynamicObjects(config.getGameDataPath() + "/data/object.dat");

	/// @TODO language choices.
	data->loadGXT("english.gxt");
	
	getRenderer()->water.setWaterTable(data->waterHeights, 48, data->realWater, 128*128);
	
	for(int m = 0; m < MAP_BLOCK_SIZE; ++m)
	{
		std::string num = (m < 10 ? "0" : "");
		std::string name = "radar" + num +  std::to_string(m);
		data->loadTXD(name + ".txd");
	}

	auto loading = new LoadingState(this);
	if (! benchFile.empty())
	{
		loading->setNextState(new BenchmarkState(this, benchFile));
	}
	else if( newgame )
	{
		if( test )
		{
			loading->setNextState(new IngameState(this,true, "test"));
		}
		else
		{
			loading->setNextState(new IngameState(this,true));
		}
	}
    else if( ! startSave.empty() )
    {
        loading->setNextState(new IngameState(this,true, startSave));
    }
	else
	{
		loading->setNextState(new MenuState(this));
	}
	
	StateManager::get().enter(loading);

	log.info("Game", "Started");
}