Пример #1
0
void gamestate(GAMESTATE state) {
	DARNIT_KEYS k;
	switch(_gamestate) {
		case GAMESTATE_GAME:
			if(state!=GAMESTATE_PAUSE)
				map_cleanup();
		case GAMESTATE_MENU:
			d_keymapping_set(game_keymap);
			break;
		default:
			break;
	}
	switch(state) {
		case GAMESTATE_MENU:
			if(platform.platform&DARNIT_PLATFORM_HANDHELD)
				d_keymapping_set(menu_keymap_handheld);
			else
				d_keymapping_set(menu_keymap_desktop);
			break;
		case GAMESTATE_GAME:
			memset(&k, 0xFF, sizeof(DARNIT_KEYS));
			d_keys_set(k);
			if(_gamestate==GAMESTATE_PAUSE)
				break;
			_gamestate=state;
			map_load(0);
			score = 0;
			break;
		case GAMESTATE_HIGHSCORE:
		case GAMESTATE_INSTRUCTIONS:
		case GAMESTATE_GAMEOVER:
		case GAMESTATE_PAUSE:
			memset(&k, 0xFF, sizeof(DARNIT_KEYS));
			d_keys_set(k);
			break;
		default:
			break;
	}
	_gamestate=state;
}
Пример #2
0
void downStairUseCallback(struct item_use_t* data){
  if(data == NULL || data->item == NULL){
    quit("Error: Cannot access NULL Stair");
  }
  //If there's no map to go down to, make a new one.
  if(data->item->go_to_map == NULL){
    data->item->go_to_map = map_new();
    //map initialization
    map_init(data->item->go_to_map, 
	     map_get_width(cur_map), 
	     map_get_height(cur_map),
	     map_get_max_item_height(cur_map),
	     map_get_dlevel(cur_map) + 1);
    //Map draw
    int px, py;
    creature_get_coord(player, &px, &py);
    map_draw_random_rooms(data->item->go_to_map, px, py);
    map_cleanup(data->item->go_to_map);
    map_draw_borders(data->item->go_to_map);
    //Move player
    map_remove_creature(cur_map, player);
    map_add_creature(data->item->go_to_map, player);
    //Place stairs
    map_place_up_stair(data->item->go_to_map, px, py, cur_map);
    map_place_down_stair_randomly(data->item->go_to_map);
    
    //Spawners
    map_place_spawners(data->item->go_to_map);
  }
  else{  //Just move player if the map exists
    map_remove_creature(cur_map, player);
    map_add_creature(data->item->go_to_map, player);
  }
  //Make the actual change of map
  cur_map = data->item->go_to_map;
}