1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-05-09 18:54:07 +00:00

rogueviz::ads:: better handling of param changes

This commit is contained in:
Zeno Rogue 2025-04-06 09:45:55 +02:00
parent 8fe5b5bed2
commit aa6727c564
7 changed files with 17 additions and 8 deletions

View File

@ -85,6 +85,7 @@ void restart() {
paused = false;
ship_pt = 0;
no_param_change = all_params_default();
init_gamedata();
}

View File

@ -153,12 +153,13 @@ ld read_movement() {
bool ads_turn(int idelta) {
multi::handleInput(idelta, multi::scfg_default);
ld delta = idelta / 1000.;
if(!(cmode & sm::NORMAL)) return false;
hybrid::in_actual([&] {
handle_crashes();
if(no_param_change && !all_params_default()) no_param_change = false;
auto& act = multi::action_states[1];

View File

@ -345,6 +345,7 @@ bool ds_turn(int idelta) {
if(!(cmode & sm::NORMAL)) return false;
ds_handle_crashes();
if(no_param_change && !all_params_default()) no_param_change = false;
auto& act = multi::action_states[1];
@ -396,7 +397,7 @@ bool ds_turn(int idelta) {
if(mshift) {
#if RVCOL
constexpr ld win_time = 60;
if(current.shift < win_time && (current.shift + mshift) >= win_time && !game_over && all_params_default())
if(current.shift < win_time && (current.shift + mshift) >= win_time && !game_over && no_param_change)
rogueviz::rv_achievement("DSGAME");
#endif
current.shift += mshift;
@ -741,6 +742,7 @@ void ds_restart() {
}
ship_pt = 0;
no_param_change = all_params_default();
rocks.clear();
history.clear();

View File

@ -251,6 +251,8 @@ string get_main_help();
int generate_mouseovers();
bool all_params_default();
bool no_param_change;
bool params_changed();
void start_relhell_tour();

View File

@ -66,9 +66,9 @@ void game_over_with_message(const string& reason) {
if(pdata.ammo <= 0) cur.deathreason += " while out of ammo";
game_over = true;
#if RVCOL
if(main_rock && all_params_default())
if(main_rock && no_param_change)
rogueviz::rv_leaderboard("de Sitter", current.shift * 1000, 1, rvlc::ms);
if(!main_rock && all_params_default()) {
if(!main_rock && no_param_change) {
auto& s = pdata.score;
string data = lalign(0, s[0], " ", s[1], " ", s[2]);
rogueviz::rv_leaderboard("anti de Sitter: total score", s[0] + s[1] + s[2], 1, rvlc::num, data);

View File

@ -81,8 +81,11 @@ void edit_difficulty() {
});
}
dialog::addBoolItem(XLAT("all default"), all_params_default(), 'D');
dialog::add_action([] { all_params_reset(); restart(); });
bool pa = all_params_default();
dialog::addSelItem(XLAT("all default"),
(pa && !no_param_change) ? XLAT("PARTIAL") : ONOFF(pa), 'd');
if(pa)
dialog::add_action([] { all_params_reset(); restart(); });
dialog::addBack();
dialog::display();

View File

@ -201,7 +201,7 @@ void gain_resource(eResourceType rsrc) {
for(auto r: {rtGoldGate, rtGoldRocks, rtGoldTurret}) {
D(r, score[treasure_id(r)])
#ifdef RVCOL
if(pdata.score[0] + pdata.score[1] + pdata.score[2] == 30 && all_params_default()) rogueviz::rv_achievement("ADSGAME");
if(pdata.score[0] + pdata.score[1] + pdata.score[2] == 30 && no_param_change) rogueviz::rv_achievement("ADSGAME");
#endif
}
playSound(nullptr, rsrc_sound[rsrc]);