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); } }
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; } } }
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(); }
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; } } }
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; }
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); }
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; }