1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-06-18 11:19:59 +00:00

duplicate keys in dialogs are now fixed correctly

This commit is contained in:
Zeno Rogue 2019-08-14 09:14:52 +02:00
parent 3d813e83b9
commit d8d32d19b0
2 changed files with 10 additions and 11 deletions

View File

@ -22,7 +22,6 @@ EX namespace dialog {
tDialogItem type;
string body;
string value;
string keycaption;
int key;
color_t color, colorv, colork, colors, colorc;
int scale;
@ -122,12 +121,16 @@ EX namespace dialog {
EX map<int, reaction_t> key_actions;
EX void add_key_action(int key, const reaction_t& action) {
while(key_actions.count(key)) key++;
key_actions[key] = action;
}
EX void add_key_action_adjust(int& key, const reaction_t& action) {
while(key_actions.count(key)) key++;
add_key_action(key, action);
}
EX void add_action(const reaction_t& action) {
add_key_action(lastItem().key, action);
add_key_action_adjust(lastItem().key, action);
}
EX void add_action_push(const reaction_t& action) { add_action([action] { pushScreen(action); }); }
@ -184,7 +187,6 @@ EX namespace dialog {
it.type = diItem;
it.body = body;
it.value = value;
it.keycaption = keyname(key);
it.key = key;
it.color = dialogcolor;
it.colork = 0x808080;
@ -222,7 +224,6 @@ EX namespace dialog {
it.type = diItem;
it.body = body;
it.value = COLORBAR;
it.keycaption = keyname(key);
it.key = key;
it.color = it.colorv = displaycolor(value);
it.colors = it.color ^ 0x404040;
@ -256,7 +257,6 @@ EX namespace dialog {
item it;
it.type = diItem;
it.body = body;
it.keycaption = keyname(key);
it.key = key;
it.color = dialogcolor;
it.colork = 0x808080;
@ -270,7 +270,6 @@ EX namespace dialog {
item it;
it.type = diBigItem;
it.body = body;
it.keycaption = keyname(key);
it.key = key;
it.color = 0xC06000;
it.colors = 0xFFD500;
@ -440,7 +439,7 @@ EX namespace dialog {
}
else {
if(!mousing)
displayfr(keyx, mid, 2, dfsize * I.scale/100, I.keycaption, I.colork, 16);
displayfr(keyx, mid, 2, dfsize * I.scale/100, keyname(I.key), I.colork, 16);
displayfr(itemx, mid, 2, dfsize * I.scale/100, I.body, I.color, 0);
displayfr(valuex, mid, 2, dfsize * I.scale/100, I.value, I.colorv, 0);
}

View File

@ -225,7 +225,7 @@ EX void showMainMenu() {
if(cheater)
dialog::addItem(XLAT("cheats"), 'c');
else dialog::addBreak(100);
dialog::addItem(XLAT("restart game"), 'r'); dialog::lastItem().keycaption += " / F5";
dialog::addItem(XLAT("restart game"), 'r');
dialog::addItem(XLAT(inSpecialMode() ? "reset special modes" : "back to the start menu"), 'R');
@ -235,7 +235,7 @@ EX void showMainMenu() {
#else
q = quitsaves() ? "save" : "quit";
q = q + " the game";
dialog::addItem(XLAT(q), 'q'); dialog::lastItem().keycaption += " / F10";
dialog::addItem(XLAT(q), 'q');
#endif
if(canmove)