1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-07-03 10:33:26 +00:00
hyperrogue/rogueviz/ads/menu.cpp
2022-09-18 13:45:45 +02:00

121 lines
2.9 KiB
C++

namespace hr {
namespace ads_game {
void adjust_for_scale() {
if(scale < 0.3) max_gen_per_frame = 1, draw_per_frame = 30, missile_rapidity = 1;
else if(scale < 0.8) max_gen_per_frame = 2, draw_per_frame = 100, missile_rapidity = 1;
else max_gen_per_frame = 3, draw_per_frame = 1000, missile_rapidity = 3;
}
void edit_difficulty() {
cmode = sm::SIDE | sm::MAYDARK;
gamescreen();
dialog::init(XLAT("AdS game parameters"), 0xC0C0FFFF, 150, 100);
add_edit(simspeed);
add_edit(accel);
add_edit(how_much_invincibility);
add_edit(rock_max_rapidity);
add_edit(rock_density);
add_edit(scale);
dialog::addBreak(100);
add_edit(max_gen_per_frame);
add_edit(draw_per_frame);
dialog::addBreak(100);
edit_rsrc();
dialog::addBreak(100);
dialog::addItem(XLAT("scale everything :2"), '!');
dialog::add_action([] {
change_scale(1/2.);
adjust_for_scale();
restart();
});
dialog::addItem(XLAT("scale everything *2"), '@');
dialog::add_action([] {
change_scale(2.);
adjust_for_scale();
restart();
});
dialog::addBack();
dialog::display();
}
void edit_particles() {
cmode = sm::SIDE | sm::MAYDARK;
gamescreen();
dialog::init(XLAT("AdS particle settings"), 0xC0C0FFFF, 150, 100);
add_edit(crash_particle_rapidity);
add_edit(crash_particle_qty);
add_edit(crash_particle_life);
add_edit(fuel_particle_rapidity);
add_edit(fuel_particle_qty);
add_edit(fuel_particle_life);
dialog::addBreak(100);
dialog::addBack();
dialog::display();
}
void game_menu() {
cmode = sm::SIDE | sm::MAYDARK;
gamescreen();
dialog::init(XLAT("AdS game settings"), 0xC0C0FFFF, 150, 100);
dialog::addItem(XLAT("set game parameters"), 'm');
dialog::add_action_push(edit_difficulty);
add_edit(pause_speed);
add_edit(view_proper_times);
add_edit(time_unit);
add_edit(auto_rotate);
add_edit(auto_angle);
dialog::addItem(XLAT("particle settings"), 'p');
dialog::add_action_push(edit_particles);
dialog::addItem(XLAT("restart game"), 'r');
dialog::add_action([] { ads_game::restart(); popScreen(); });
dialog::addItem(XLAT("refill cheat"), 'R');
dialog::add_action([] { init_rsrc(); popScreen(); });
dialog::addItem("configure keys", 'k');
dialog::add_action_push(multi::get_key_configurer(1, move_names, "Nilrider keys"));
#if CAP_AUDIO
add_edit(effvolume);
add_edit(musicvolume);
#endif
dialog::addItem("RogueViz settings", 'v');
dialog::add_action([] {
pushScreen(showSettings);
});
#if CAP_FILES && !ISWEB
dialog::addItem("save the current config", 's');
dialog::add_action([] {
dynamicval<eGeometry> g(geometry, gNormal);
saveConfig();
});
#endif
dialog::addItem("quit the game", 'q');
dialog::add_action([] {
quitmainloop = true;
});
dialog::addBreak(100);
dialog::addBack();
dialog::display();
}
}}