Exemple #1
0
void update_ticket_state(struct ticket_config *tk, struct booth_site *sender)
{
	if (tk->state == ST_CANDIDATE) {
		tk_log_info("learned from %s about "
				"newer ticket, stopping elections",
				site_string(sender));
		/* there could be rejects coming from others; don't log
		 * warnings unnecessarily */
		tk->expect_more_rejects = 1;
	}

	if (tk->leader == local || tk->is_granted) {
		/* message from a live leader with valid ticket? */
		if (sender == tk->leader && term_time_left(tk)) {
			if (tk->is_granted) {
				tk_log_warn("ticket was granted here, "
						"but it's live at %s (revoking here)",
						site_string(sender));
			} else {
				tk_log_info("ticket live at %s",
						site_string(sender));
			}
			disown_ticket(tk);
			ticket_write(tk);
			set_state(tk, ST_FOLLOWER);
			set_next_state(tk, ST_FOLLOWER);
		} else {
			if (tk->state == ST_CANDIDATE) {
				set_state(tk, ST_FOLLOWER);
			}
			set_next_state(tk, ST_LEADER);
		}
	} else {
		if (!tk->leader || tk->leader == no_leader) {
			if (sender)
				tk_log_info("ticket is not granted");
			else
				tk_log_info("ticket is not granted (from CIB)");
			set_state(tk, ST_INIT);
		} else {
			if (sender)
				tk_log_info("ticket granted to %s (says %s)",
					site_string(tk->leader),
					tk->leader == sender ? "they" : site_string(sender));
			else
				tk_log_info("ticket granted to %s (from CIB)",
					site_string(tk->leader));
			set_state(tk, ST_FOLLOWER);
			/* just make sure that we check the ticket soon */
			set_next_state(tk, ST_FOLLOWER);
		}
	}
}
//handles collision between zombie killer and the zombies
void ZombieKiller::collision_manegment()
{
	Zombie *runner = head2;
	while(runner != NULL)
	{
		++runner->hitRate;
		if (runner->x <= collisionBox.x + collisionBox.w && runner->y <= collisionBox.y + collisionBox.h 
			&& runner->x >= collisionBox.x && runner->y >= collisionBox.y)
		{
			if(runner->hitRate >= 50)
			{
				--life;
				if(life == 0)
				{
					//Quit the program
					set_next_state(STATE_GAME_OVER);

					zombieKilled = deadZombieCount;
				}
				runner->hitRate = 0;
			}
		}
		runner = runner->next;
	}
}
Exemple #3
0
int main(void)
{
  /* setup controller */
  sys_init();
	
  /* setup u8g and m2 libraries */
  setup();

  /* application main loop */
  for(;;)
  {  
    m2_CheckKey();
    if ( m2_HandleKey() ) 
    {
      /* picture loop */
      u8g_FirstPage(&u8g);
      do
      {
	draw();
        m2_CheckKey();
      } while( u8g_NextPage(&u8g) );
    }
    set_next_state();
  }  
}
Exemple #4
0
/* we were a leader and somebody says that they have a more up
 * to date ticket
 * there was probably connectivity loss
 * tricky
 */
static int leader_handle_newer_ticket(
		struct ticket_config *tk,
		struct booth_site *sender,
		struct booth_site *leader,
		struct boothc_ticket_msg *msg
	       )
{
	update_term_from_msg(tk, msg);
	if (leader != no_leader && leader && leader != local) {
		/* eek, two leaders, split brain */
		/* normally shouldn't happen; run election */
		tk_log_error("from %s: ticket granted to %s! (revoking locally)",
				site_string(sender),
				site_string(leader)
				);
	} else if (term_time_left(tk)) {
		/* eek, two leaders, split brain */
		/* normally shouldn't happen; run election */
		tk_log_error("from %s: ticket granted to %s! (revoking locally)",
				site_string(sender),
				site_string(leader)
				);
	}
	set_next_state(tk, ST_LEADER);
	return 0;
}
//checks if zombie killer finished the game
void ZombieKiller::is_finished()
{
	if(head3 == NULL && head2 == NULL)
	{
		zombieKilled = deadZombieCount;
		set_next_state(STATE_GAME_OVER);
	}
}
Exemple #6
0
// Update (goto menu!)
void intro::update(){
  // Intro screen
  //fade_in( img_intro, 16);
  al_rest( 1.0);
  //fade_out( 16);

  // Go to menu
  set_next_state( STATE_MENU);
}
Exemple #7
0
void reset_ticket(struct ticket_config *tk)
{
	ignore_ext_test(tk);
	disown_ticket(tk);
	no_resends(tk);
	set_state(tk, ST_INIT);
	set_next_state(tk, 0);
	tk->voted_for = NULL;
}
Exemple #8
0
/** Ticket revoke.
 * Only to be started from the leader. */
int do_revoke_ticket(struct ticket_config *tk)
{
	if (tk->acks_expected) {
		tk_log_info("delay ticket revoke until the current operation finishes");
		set_next_state(tk, ST_INIT);
		return RLT_MORE;
	} else {
		start_revoke_ticket(tk);
		return RLT_SUCCESS;
	}
}
/**
 * Updates this object.
 *
 * @param window a reference to an sf::RenderWindow.
 */
void Score::update(sf::RenderWindow &window) {
    std::string sTemp;
    
    ss << this->nScore;
    ss >> sTemp;
    ss.str(std::string());
    ss.clear();
    
    this->getText().setString(this->sPretext + sTemp);

    if (this->nScore == 10) {
        if (this->getLabel().compare("player-score") == 0) {
            set_next_state(STATE_WIN);
        } else {
            set_next_state(STATE_LOSE);
        }
    }
    
    GameObject::update(window);
}
Exemple #10
0
void Game::update()
{
  poll_joystick();

  // Character movements (runs only every 2nd loop)
  if(frames_done % 2 == 0){
    character.update(tile_map);

    for(int i = 0; i < badGuy.size(); i++){
      badGuy.at(i) -> update(newTileMap, &character);
    }
  }

  // Tile map positions
  newTileMap -> x = tile_map -> x;
  newTileMap -> y = tile_map -> y;

  if(key[KEY_R]){
    enemy* newBadGuy = new enemy( character.getX(), character.getY(), enemy_mutant);
    newBadGuy -> load_images();
    newBadGuy -> load_sounds();
    badGuy.push_back(newBadGuy);
    rest(10);
  }
  if(key[KEY_T]){
    enemy* newBadGuy = new enemy( character.getX(), character.getY(), enemy_sentry);
    newBadGuy -> load_images();
    newBadGuy -> load_sounds();
    badGuy.push_back(newBadGuy);
    rest(100);
  }

  // Back to menu
  if( key[KEY_M] || joy[0].button[6].b){
    set_next_state( STATE_MENU);
  }

  // Die
  if(character.getDead() || character.getFinishLevel()){
    init();
    character.setFinishLevel( false);
  }

  // Respawn
  if(key[KEY_Y]){
    character.spawncommand(tile_map);
  }
}
Exemple #11
0
/**
 * Starts game engine, creates window and renderer
 */
int GameEngine::init() 
{
	window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, Mario::SCREEN_WIDTH, Mario::SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
	if( window == NULL )
	{
		printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
		return Mario::STATUS_FATAL;
	}
	renderer = SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED );
	if (renderer == NULL) 
	{
		printf( "Could not create renderer. SDL_Error: %s\n", SDL_GetError() );
		return Mario::STATUS_FATAL;
	}
	// Set render draw color to WHITE
	SDL_SetRenderDrawColor( renderer, 0xFF, 0xFF, 0xFF, 0xFF );

	set_next_state(STATE_INIT);
	changeState();

	return Mario::STATUS_OK;
}
Exemple #12
0
void Editor::update(){
  // Back to menu
  if( key[KEY_M] && !saving && !opening){
    set_next_state( STATE_MENU);
  }

  // Close menu
  if(key[KEY_TILDE]){
    clear_keybuf();
    opening = false;
    saving = false;
  }

  if( saving){
    save();
  }
  else if( opening){
    open();
  }
  else{
    // Scroll Map
    if(mouse_y < 10 && tile_map -> y > 0){
       tile_map -> y -= 16;
    }
    if(mouse_y > (SCREEN_H-10) && tile_map -> y < tile_map -> height * 64 -  SCREEN_H){
       tile_map -> y += 16;
    }
    if(mouse_x  < 10 && tile_map -> x > 0){
       tile_map -> x -= 8;
    }
    if(mouse_x   > (SCREEN_W-10) && tile_map -> x < tile_map -> width * 64 - SCREEN_W){
       tile_map -> x += 8;
    }

    // Change selected
    if(key[KEY_UP]){
      exampleTile -> setX(0);
      exampleTile -> setY(0);
      exampleTile -> changeType( 1);
      rest( 100);
    }
    if(key[KEY_DOWN]){
      exampleTile -> setX(0);
      exampleTile -> setY(0);
      exampleTile -> changeType( -1);
      rest( 100);
    }

    // Change Layer
    if(key[KEY_TAB]){
      if(layer == 0){
        layer = 1;
      }
      else{
        layer = 0;
      }
      while(key[KEY_TAB]){}
    }

    // Place tile
    if( mouse_b & 1){
      //Check for collision
      if( layer == 1){
        for(int i = 0; i < tile_map -> mapTiles.size(); i++){
          if(collisionAny(mouse_x  + tile_map -> x, mouse_x  + tile_map -> x, tile_map -> mapTiles.at(i).getX(), tile_map -> mapTiles.at(i).getX() + 64, mouse_y + tile_map -> y, mouse_y + tile_map -> y, tile_map -> mapTiles.at(i).getY(), tile_map -> mapTiles.at(i).getY() + 64)){
            tile_map -> mapTiles.at(i).setType(selectedTileType);
          }
        }
      }
      else{
        for(int i = 0; i < tile_map -> mapTilesBack.size(); i++){
          if(collisionAny(mouse_x  + tile_map -> x, mouse_x  + tile_map -> x, tile_map -> mapTilesBack.at(i).getX(), tile_map -> mapTilesBack.at(i).getX() + 64, mouse_y + tile_map -> y, mouse_y + tile_map -> y, tile_map -> mapTilesBack.at(i).getY(), tile_map -> mapTilesBack.at(i).getY() + 64)){
            tile_map -> mapTilesBack.at(i).setType(selectedTileType);
          }
        }
      }
    }

    // Get tile type tile
    if( key[KEY_K]){
      //Check for collision
      if( layer == 1){
        for(int i = 0; i < tile_map -> mapTiles.size(); i++){
          if(collisionAny(mouse_x  + tile_map -> x, mouse_x  + tile_map -> x, tile_map -> mapTiles.at(i).getX(), tile_map -> mapTiles.at(i).getX() + 64, mouse_y + tile_map -> y, mouse_y + tile_map -> y, tile_map -> mapTiles.at(i).getY(), tile_map -> mapTiles.at(i).getY() + 64)){
            exampleTile -> setX(0);
            exampleTile -> setY(0);
            selectedTileType = tile_map -> mapTiles.at(i).getType();
            exampleTile -> setType(selectedTileType);
          }
        }
      }
      else{
        for(int i = 0; i < tile_map -> mapTilesBack.size(); i++){
          if(collisionAny(mouse_x  + tile_map -> x, mouse_x  + tile_map -> x, tile_map -> mapTilesBack.at(i).getX(), tile_map -> mapTilesBack.at(i).getX() + 64, mouse_y + tile_map -> y, mouse_y + tile_map -> y, tile_map -> mapTilesBack.at(i).getY(), tile_map -> mapTilesBack.at(i).getY() + 64)){
            exampleTile -> setX(0);
            exampleTile -> setY(0);
            selectedTileType = tile_map -> mapTilesBack.at(i).getType();
            exampleTile -> setType(selectedTileType);
          }
        }
      }
    }

    // Erase tile
    if( mouse_b & 2){
      //Check for collision
      if( layer == 1){
        for(int i = 0; i < tile_map -> mapTiles.size(); i++){
          if(collisionAny(mouse_x  + tile_map -> x, mouse_x  + tile_map -> x, tile_map -> mapTiles.at(i).getX(), tile_map -> mapTiles.at(i).getX() + 64, mouse_y + tile_map -> y, mouse_y + tile_map -> y, tile_map -> mapTiles.at(i).getY(), tile_map -> mapTiles.at(i).getY() + 64)){
            tile_map -> mapTiles.at(i).setType(0);
          }
        }
      }
      else{
        for(int i = 0; i < tile_map -> mapTilesBack.size(); i++){
          if(collisionAny(mouse_x + tile_map -> x, mouse_x  + tile_map -> x, tile_map -> mapTilesBack.at(i).getX(), tile_map -> mapTilesBack.at(i).getX() + 64, mouse_y + tile_map -> y, mouse_y + tile_map -> y, tile_map -> mapTilesBack.at(i).getY(), tile_map -> mapTilesBack.at(i).getY() + 64)){
            tile_map -> mapTilesBack.at(i).setType(0);
          }
        }
      }
    }

    // Save map
    if(key[KEY_S]){
      clear_keybuf();
      saving = true;
    }

    // Open map
    if(key[KEY_O]){
      clear_keybuf();
      opening = true;
    }

    //Fill map
    if(key[KEY_F]){
      for(int i = 0; i < tile_map -> mapTilesBack.size(); i++){
        tile_map -> mapTilesBack.at(i).setType(selectedTileType);
      }
    }
    if(key[KEY_G]){
      for(int i = 0; i < tile_map -> mapTiles.size(); i++){
        tile_map -> mapTiles.at(i).setType(selectedTileType);
      }
    }
  }
}
Exemple #13
0
// Update loop
void menu::update(){
  //Menu animations
  if( animation_pos < 100 && !startClicked)
    animation_pos += 4;
  if( animation_pos > 0 && startClicked)
    animation_pos -= 4;

  // Start the game
  if( startClicked && animation_pos <= 0)
    set_next_state( STATE_GAME);

  // Open submenu or start game
  if( mini_screen == MINISTATE_MENU){
    // Start game with controller
    if( joystickListener::buttonPressed[JOY_XBOX_START] || joystickListener::buttonPressed[JOY_XBOX_A]){
      startClicked = true;
    }
    // Buttons
    if( mouseListener::mouse_pressed & 1){
      // Start game
      if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 40, 40 + al_get_bitmap_width(start), mouseListener::mouse_y, mouseListener::mouse_y, 410, 410 + al_get_bitmap_height(start))){
        startClicked = true;
      }
      // Scores
      else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 660, 660 + al_get_bitmap_width(highscores_button), mouseListener::mouse_y, mouseListener::mouse_y, 30, 30 + al_get_bitmap_height(highscores_button))){
        updateScores( scores);
        mini_screen = MINISTATE_SCORES;
      }
      // Credits menu
      else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 542, 644, mouseListener::mouse_y, mouseListener::mouse_y, 548, 600)){
        mini_screen = MINISTATE_CREDITS;
      }
      // Controls menu
      else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 644, 696, mouseListener::mouse_y, mouseListener::mouse_y, 548 ,600)){
        mini_screen = MINISTATE_CONTROLS;
      }
      // Help screen
      else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 696, 749, mouseListener::mouse_y, mouseListener::mouse_y, 548, 600)){
        mini_screen = MINISTATE_TUTORIAL;
      }
      // Options menu
      else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 749, 800, mouseListener::mouse_y, mouseListener::mouse_y, 548, 600)){
        mini_screen = MINISTATE_OPTIONS;
      }
    }
  }
  // Exit menus
  else if( mini_screen == MINISTATE_TUTORIAL || mini_screen == MINISTATE_CREDITS || mini_screen == MINISTATE_CONTROLS || mini_screen == MINISTATE_SCORES ){
    if( keyListener::lastKeyPressed != -1  || mouseListener::mouse_pressed & 1 || joystickListener::lastButtonPressed != -1){
			mini_screen = MINISTATE_MENU;
			draw();
    }
  }
  // Options
  else if( mini_screen == MINISTATE_OPTIONS && mouseListener::mouse_pressed & 1){
    // Particles toggle
    if( collision( 280, 360, mouseListener::mouse_x, mouseListener::mouse_x, 400, 480, mouseListener::mouse_y, mouseListener::mouse_y)){
      settings[SETTING_PARTICLE_TYPE] = (settings[SETTING_PARTICLE_TYPE] + 1) % 4;
    }
    // Sound button toggle
    else if( collision( 120, 200, mouseListener::mouse_x, mouseListener::mouse_x, 180, 260, mouseListener::mouse_y, mouseListener::mouse_y)){
      settings[SETTING_SOUND] = (settings[SETTING_SOUND] + 1) % 2;
    }
    // Music button toggle
    else if( collision( 280, 360, mouseListener::mouse_x, mouseListener::mouse_x, 180, 260, mouseListener::mouse_y, mouseListener::mouse_y)){
      settings[SETTING_MUSIC] = (settings[SETTING_MUSIC] + 1) % 2;
      if( settings[SETTING_MUSIC] == 0)
        al_stop_sample( &currentMusic);
      else
        al_play_sample( music_mainmenu, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, &currentMusic);

    }
    // Fullscreen toggle
    else if( collision( 120, 200, mouseListener::mouse_x, mouseListener::mouse_x, 400, 480, mouseListener::mouse_y, mouseListener::mouse_y)){
      settings[SETTING_FULLSCREEN] = (settings[SETTING_FULLSCREEN] + 1) % 2;

      if( settings[SETTING_FULLSCREEN]){
        // Fullscreen stuff
        al_destroy_display( display);
        al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW);
        display = al_create_display( SCREEN_W, SCREEN_H);

        ALLEGRO_DISPLAY_MODE disp_data;
        al_get_display_mode(al_get_num_display_modes() - 1, &disp_data);
        float sx = disp_data.width / (float)SCREEN_W;
        float sy = disp_data.height / (float)SCREEN_H;

        ALLEGRO_TRANSFORM trans;
        al_identity_transform(&trans);
        al_scale_transform(&trans, sx, sy);
        al_use_transform(&trans);
        al_hide_mouse_cursor( display);
      }
      else{
        al_destroy_display( display);
        al_set_new_display_flags(ALLEGRO_WINDOWED);
        display = al_create_display( SCREEN_W, SCREEN_H);
        al_hide_mouse_cursor( display);
      }
    }
    //Screen shake
    else if( collision( 280, 360, mouseListener::mouse_x, mouseListener::mouse_x, 290, 370, mouseListener::mouse_y, mouseListener::mouse_y)){
      settings[SETTING_SCREENSHAKE] = (settings[SETTING_SCREENSHAKE] + 1) % 4;
    }
    // Control Toggle
    else if( collision( 120, 200, mouseListener::mouse_x, mouseListener::mouse_x, 290, 370, mouseListener::mouse_y, mouseListener::mouse_y)){
      settings[SETTING_CONTROLMODE] = ((settings[SETTING_CONTROLMODE] + 1) % 3);
    }
    // Power off
    else if( collision( 540, 620, mouseListener::mouse_x, mouseListener::mouse_x, 180, 260, mouseListener::mouse_y, mouseListener::mouse_y)){
      write_settings();
      set_next_state( STATE_EXIT);
    }
    // Exit menu
    else if( collision( 540, 620, mouseListener::mouse_x, mouseListener::mouse_x, 407, 487, mouseListener::mouse_y, mouseListener::mouse_y)){
      mini_screen = MINISTATE_MENU;
      write_settings();
    }
  }

  // Update mouse particles
  if( settings[SETTING_PARTICLE_TYPE] != 3 && mouse_rocket_up){
    for( int i = 0; i < 500; i++){
      if( random( 1, 10) == 1){
        ALLEGRO_COLOR part_color = al_map_rgb( 255, random(0,255), 0);
        if( settings[SETTING_CHRISTMAS]){
          int red_or_green = random( 0, 1) * 255;
          part_color = al_map_rgb( red_or_green, 255 - red_or_green, 0);
        }
        particle newParticle( mouseListener::mouse_x, mouseListener::mouse_y + 16, part_color, random( -2, 2), random( 8, 20), 1, settings[SETTING_PARTICLE_TYPE]);
        mousePart.push_back( newParticle);
      }
    }
  }
  for( unsigned int i = 0; i < mousePart.size(); i++){
    mousePart.at(i).logic();
    if( random( 0, 10) == 0)
      mousePart.erase( mousePart.begin() + i);
  }

  // Close game
  if( keyListener::key[ALLEGRO_KEY_ESCAPE])
    set_next_state( STATE_EXIT);

  // Check if mouse is going up
  mouse_rocket_up = ( mouseListener::mouse_y < mouseMove);
  mouseMove = mouseListener::mouse_y;
}
			void state_in_object_name_t::on_string( daw::string_view ) {
				// json_value_t name{ value };

				// Set current object name json_value_t
				set_next_state( current_state_t::in_object_value );
			}
			void state_in_object_value_t::on_array_begin( ) {
				// push_and_set_next_value( json_value_t{ } );
				set_next_state( current_state_t::in_object_name );
				push_and_set_next_state( current_state_t::in_array );
			}
Exemple #16
0
void Menu::update(){
  // Disable/Enable mouse control on input
  if(key[KEY_UP] || key[KEY_DOWN] || key[KEY_LEFT] || key[KEY_RIGHT] || key[KEY_W] || key[KEY_A] || key[KEY_S] || key[KEY_D] || joy[0].stick[0].axis[1].d2 || joy[0].stick[0].axis[1].d1 || joy[0].button[4].b || joy[0].button[5].b)
    mouse_control=false;
  else if (mouse_x!=old_mouse_x || mouse_y!=old_mouse_y)
    mouse_control=true;

  old_mouse_x = mouse_x;
  old_mouse_y = mouse_y;

  menuOpen = false;
  poll_joystick();

  // Move around live background
  if( scrollDirection == "right"){
    if( tile_map -> x + 1 < (tile_map -> width * 64 - SCREEN_W)){
      tile_map -> x += 1;
    }
    else{
      scrollDirection = "left";
    }
  }
  else if( scrollDirection == "left"){
    if( tile_map -> x - 1 > 0){
      tile_map -> x -= 1;
    }
    else{
      scrollDirection = "right";
    }
  }


  // Move selector
  if( selectorY != newSelectorY){
    int selectorVelocity;
    if( newSelectorY != selectorY){
      selectorVelocity = (newSelectorY - selectorY )/ 6;
      if( newSelectorY - selectorY < 0){
        selectorVelocity -= 1;
      }
      else if( newSelectorY - selectorY > 0){
        selectorVelocity += 1;
      }
    }
    selectorY += selectorVelocity;
  }
  if((key[KEY_W] || key[KEY_UP] || joy[0].stick[0].axis[1].d1) && step>10){
    if(selectorHovering!=0)
      selectorHovering--;
    else
      selectorHovering=3;
    step=0;
  }
  if((key[KEY_S] || key[KEY_DOWN] || joy[0].stick[0].axis[1].d2) && step>10){
    if(selectorHovering!=3)
      selectorHovering++;
    else
      selectorHovering=0;
    step=0;
  }

  // Hover play
  if((mouse_control && (collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y, SCREEN_H-323, SCREEN_H-278)) || !mouse_control && ( selectorHovering==0))){
    if(newSelectorY != SCREEN_H-323){
      newSelectorY = SCREEN_H-323;
      selectorX = 60;
      play_sample(click,255,125,1000,0);
    }

  }
  // Hover edit
  else if((mouse_control && (collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y, SCREEN_H-260, SCREEN_H-215)) || !mouse_control && ( selectorHovering==1))){
    if(newSelectorY != SCREEN_H-260){
      newSelectorY = SCREEN_H-260;
      selectorX = 60;
      play_sample(click,255,125,1000,0);
    }

  }
  // Hover help
  else if((mouse_control && (collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y, SCREEN_H-197, SCREEN_H-152)) || !mouse_control && ( selectorHovering==2))){
    if(newSelectorY != SCREEN_H-197){
      newSelectorY = SCREEN_H-197;
      selectorX = 60;
      play_sample(click,255,125,1000,0);
    }
    menuOpen = true;
  }
  //Hover exit
  else if((mouse_control && (collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y, SCREEN_H-132, SCREEN_H-87)) || !mouse_control && ( selectorHovering==3))){
    if(newSelectorY != SCREEN_H-132){
      newSelectorY = SCREEN_H-132;
      selectorX = 60;
      play_sample(click,255,125,1000,0);
    }
  }

  // Select button
  // level select left
  if(((collisionAny(mouse_x,mouse_x,SCREEN_W-180,SCREEN_W-140,mouse_y,mouse_y, 80, 120) && mouse_b & 1) || (key[KEY_A] || key[KEY_LEFT] || joy[0].button[4].b)) && step>10) {
    play_sample(click,255,125,1000,0);
    if( levelOn > 0){
      levelOn--;
    }
    else{
      levelOn = 3;
    }
    if( levelOn == 0){
      tile_map -> load( "data/levels/level_01");
    }
    else if( levelOn == 1){
      tile_map -> load( "data/levels/level_test");
    }
    else if( levelOn == 2){
      tile_map -> load( "data/saves/danny");
    }
    else if( levelOn == 3){
      tile_map -> load( "data/saves/dannyII");
    }
    tile_map -> y = random( 0, (tile_map -> height * 64) - SCREEN_H);
    tile_map -> x = 0;
    step=0;
  }
  if(((collisionAny(mouse_x,mouse_x,SCREEN_W-80,SCREEN_W-40,mouse_y,mouse_y, 80, 120) && mouse_b & 1) || (key[KEY_D] || key[KEY_RIGHT] || joy[0].button[5].b)) && step>10){
  // level select right
    play_sample(click,255,125,1000,0);
    if( levelOn < 3){
      levelOn++;
    }
    else{
      levelOn = 0;
    }
    if( levelOn == 0){
      tile_map -> load( "data/levels/level_01");
    }
    else if( levelOn == 1){
      tile_map -> load( "data/levels/level_test");
    }
    else if( levelOn == 2){
      tile_map -> load( "data/saves/danny");
    }
    else if( levelOn == 3){
      tile_map -> load( "data/saves/dannyII");
    }
    tile_map -> y = random( 0, (tile_map -> height * 64) - SCREEN_H);
    tile_map -> x = 0;
    step=0;
  }
  // Start
  if(((collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y,  SCREEN_H-323, SCREEN_H-278)&& mouse_b & 1)|| ((key[KEY_ENTER] || joy[0].button[0].b) && selectorHovering==0)) && step>10){
    set_next_state( STATE_GAME);
  }
  // Edit
  if(((collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y, SCREEN_H-260, SCREEN_H-215)&& mouse_b & 1)|| ((key[KEY_ENTER] || joy[0].button[0].b) && selectorHovering==1)) && step>10){
    set_next_state( STATE_EDIT);
  }
  // Quit
  if(((collisionAny(mouse_x,mouse_x,60,270,mouse_y,mouse_y,  SCREEN_H-132, SCREEN_H-87)&& mouse_b & 1)|| ((key[KEY_ENTER] || joy[0].button[0].b) && selectorHovering==3)) && step>10){
    set_next_state( STATE_EXIT);
  }
  step++;
}
			void state_in_object_value_t::on_null( ) {
				// Value is already null
				set_next_state( current_state_t::in_object_name );
			}
			void state_in_object_value_t::on_integer( daw::string_view ) {
				// Save data
				// current_value( ) = json_value_t{ to_integer( value ) };
				set_next_state( current_state_t::in_object_name );
			}
			void state_in_object_value_t::on_string( daw::string_view ) {
				// Save data
				// current_value( ) = json_value_t{ value.to_string( ) };
				set_next_state( current_state_t::in_object_name );
			}
			void state_in_object_value_t::on_boolean( bool ) {
				// Save data
				// current_value( ) = json_value_t{ value };
				set_next_state( current_state_t::in_object_name );
			}
Exemple #21
0
void Init::update()
{
  // Change to splash screen
  set_next_state(STATE_MENU);
}
Exemple #22
0
void Intro::update()
{
  // Wait 2 seconds then go to the menu
  set_next_state(STATE_MENU);
}
Exemple #23
0
// Update
void init::update(){
  set_next_state( STATE_MENU);
}
Exemple #24
0
void Pause::handle_events(App *app)
{
    sf::Event event;
    while (app->window.pollEvent(event))
    {
        if((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape))
        {
            set_next_state(STATE_OVERWORLD);
            //std::cout << "unpausing" << std::endl;
        }
        else if((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Up))
        {
            // TODO this segfaults when UP is pressed first
            if(menu_option_index > 0) {
                menu_option_index--;
            }
            else {
                menu_option_index = menu_options.size() - 1;
                menu_options[menu_option_index-1].setColor(sf::Color(155,155,155));
            }
            update_option_text();
        }
        else if((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Down))
        {
            if(menu_option_index < menu_options.size() - 1)
            {
                menu_option_index++;
            }
            else
            {
                menu_option_index = 0;
                menu_options[menu_option_index+1].setColor(sf::Color(155,155,155));
            }
            update_option_text();
        }
        
        if((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Return))
        {
            if(menu_option_index == Play)
                set_next_state(STATE_OVERWORLD);
            else if(menu_option_index == Exit)
                set_next_state(STATE_TITLE);
                // TODO: clear the state(s) or stack?
        }

        
        if(event.type == sf::Event::Closed)
        {
            app->window.close();
        }
        
        if (event.type == sf::Event::Resized)
        {
            
            //app->window_width  = event.size.width;
            //app->window_height = event.size.height;
            
        }

    }

}
Exemple #25
0
/**
 * Shutdown and exit the logos handler.
 */
void logos_exit() {
    music_stop();
    unload_logos_dat();
    set_next_state(STATE_FLYING);
}