Exemplo n.º 1
0
void
read_map_data (SaveFile *f)
{
  int i;

  map.w = save_file_read_int (f);
  map.h = save_file_read_int (f);
  map.totalRooms = total_rooms = save_file_read_int (f);
  place_of_power = save_file_read_int (f);

  for (i = 0; i < map.w * map.h; i++)
    {
      map.m[i] = save_file_read_char (f);
      map.r[i] = save_file_read_int (f);

      if ((i % 7447) == 7446)
        LoadingScreen(0, (float)i / (float)(map.w * map.h));
    }

  for (i = 0; i < map.totalRooms; i++)
    {
      read_room_data (f, &(map.rooms)[i]);

      if ((i % 85) == 84)
        LoadingScreen (1, (float)i / (float) map.totalRooms);
    }
}
Exemplo n.º 2
0
void RecurseSetDist()
{
  struct RoomConnection *rc;
  int queue[10000];
  int q_top = 1;
  int q_bot = 0;
  int rooms_left = NUM_ROOMS;
  int c_room;
  queue[0] = 0;
	
  /* Update the loading screen every 100 rooms. */
  if (rooms_left % 100 == 0) {
    LoadingScreen(1, 1.0 - ((float)rooms_left / (float)NUM_ROOMS));
  }
	
  map.rooms[0].s_dist = 0;
	
  while ((rooms_left > 0)) {	
    c_room = queue[q_bot];
    q_bot++;
    rooms_left--;
		
    rc = map.rooms[c_room].con;
		
    while (rc != NULL) {
      /* assert(qp < NUM_ROOMS); */
      if (map.rooms[rc->c].s_dist == -1) {
        queue[q_top] = rc->c;
        q_top++;
        map.rooms[rc->c].s_dist = map.rooms[c_room].s_dist+1;
      }
      rc = rc->n;
    }
  }
}
Exemplo n.º 3
0
void GameEngine::toggle_colorblind()
{
	// Getting globals
	Preferences* p_pref = pref_get_instance();
	CommonResources* p_common_resources = common_resources_get_instance();
	
	// Changing preferences
	p_pref -> colorblind = !p_pref -> colorblind;

	// Loading new elements (with a loading screen)
	_p_loading_screen = my_new LoadingScreen(_window);
	_p_loading_screen -> init();
	_p_loading_screen -> set_progression(0.0f);
	if(_running)
	{
		p_common_resources->player1.load_gfx(_window.get_gc(), p_pref -> skin);
		_p_loading_screen -> set_progression(1.0f / 2.0f);
	}
	if(_running)
	{
		_title_state.load_gfx(_window.get_gc(), p_pref -> skin);
		_p_loading_screen -> set_progression(2.0f / 2.0f);
	}

	// Delete loading screen
	my_delete(_p_loading_screen);
	_p_loading_screen = NULL;

	// Save preferences
	p_pref->write();
}
Exemplo n.º 4
0
void RecurseSetDist()
{
	struct RoomConnection *rc;
	int queue[10000];
	int q_top = 1;
	int q_bot = 0;
	int rooms_left = 3000;
	int c_room;
	queue[0] = 0;
	
	if (rooms_left % 100 == 0) {
		LoadingScreen(1, 1.0 - ((float)rooms_left / 3000.0));
	}
	
	rooms[0].s_dist = 0;
	
	while ((rooms_left > 0)) {	
		c_room = queue[q_bot];
		q_bot++;
		rooms_left--;
		
		rc = rooms[c_room].con;
		
		while (rc != NULL) {
			//assert(qp < 3000);
			if (rooms[rc->c].s_dist == -1) {
				queue[q_top] = rc->c;
				q_top++;
				rooms[rc->c].s_dist = rooms[c_room].s_dist+1;
			}
			rc = rc->n;
		}
	}
}
Exemplo n.º 5
0
int Generate()
{
  int attempts = 0;
  int i;
  int correct_dist = 0;
  int maxdist = 0;
  rdir = rand()%4;
  NewRoom(map.w / 2 - 20 / 2, map.h / 2 - 15 / 2, 20, 15, -1);
	
  for (attempts = 0; attempts < 100000; attempts++) {
    assert(map.w == 512);
    AddChild(rndval(rndval(0, total_rooms-1), total_rooms-1));
    if (total_rooms % 100 == 99) {
      LoadingScreen(0, (float)total_rooms / (float) NUM_ROOMS);
    }
    if (total_rooms == NUM_ROOMS) break;
  }
	
  if ((total_rooms < NUM_ROOMS)||(DoRepeat == 1)) {
    DoRepeat = 0;
    ResetLevel();
    return 0;
  }
	
  RecurseSetDist();
	
  for (i = 0; i < NUM_ROOMS; i++) {
    if (map.rooms[i].s_dist > maxdist) {
      maxdist = map.rooms[i].s_dist;
    }
		
    if (map.rooms[i].s_dist >= 50) {
      correct_dist = 1;
    }
  }
	
  if (correct_dist == 0) {
    /*printf("Dist fail (only %d)\n", maxdist);*/
    DoRepeat = 0;
    ResetLevel();
    return 0;
  }
	
  /*printf("Rooms: %d\n", total_rooms);*/
	
  MakeSpecialRooms();
	
  map.totalRooms = total_rooms;
  return 1;
}
Exemplo n.º 6
0
void ReadMapData()
{
	int i;

	map.w = FRInt();
	map.h = FRInt();
	map.totalRooms = total_rooms = FRInt();
	place_of_power = FRInt();
	for (i = 0; i < map.w*map.h; i++) {
		if ((i % 7447) == 7446) {
			LoadingScreen(0, (float)i / (float)(map.w*map.h));
		}
		map.m[i] = FRChar();
		map.r[i] = FRInt();
	}
	LoadingScreen(0, 1);
	for (i = 0; i < map.totalRooms; i++) {
		ReadRoomData(&rooms[i]);
		if ((i % 85)==84) {
			LoadingScreen(1, (float)i / (float)map.totalRooms);
		}
	}
	LoadingScreen(1, 1);
}
Exemplo n.º 7
0
void GameEngine::set_skin(std::string skin)
{
	CommonResources* p_resources = common_resources_get_instance();

	_p_loading_screen = my_new LoadingScreen(_window);
	_p_loading_screen -> init();
	_p_loading_screen -> set_progression(0.0f);

	Preferences* p_pref = pref_get_instance();

	std::string old_skin = p_pref -> skin;

	CL_GraphicContext& gc = _window.get_gc();
	try
	{
		p_pref -> skin = skin;

		if (!_running) 
			return;
		{
			p_resources -> load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(1.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_title_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(2.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_common_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(3.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_ingame_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(4.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_gameover_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(5.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_pausemenu_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(6.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_skinsmenu_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(7.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_optionsmenu_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(8.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_title_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(9.0f / 10.0f);
		}

		if (!_running) 
			return;
		{
			_quitmenu_state.load_gfx(gc, p_pref -> skin);
			_p_loading_screen -> set_progression(10.0f / 10.0f);
		}

		p_pref -> write();

	}
	catch (CL_Exception& err)
	{
		CL_ConsoleWindow console("OpenAlchemist Console", 80, 300);
			
		CL_Console::write_line("Skin error : " + err.message);
		CL_Console::write_line("Error in : " + skin);
		if (old_skin.compare(skin))
		{
			CL_Console::write_line("");
			CL_Console::write_line("Now loading default skin.");
			skin = get_skins_path() + get_path_separator() + "aqua.zip";
			CL_Console::write_line(skin);
			console.display_close_message();
			set_skin(skin);
		}
		else
		{
			throw err;
		}
	}

	my_delete(_p_loading_screen);
	_p_loading_screen = NULL;
}