mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-11 18:00:34 +00:00
highlights in special modes
This commit is contained in:
parent
2b2bdbdb54
commit
c57566f9da
15
complex.cpp
15
complex.cpp
@ -3924,6 +3924,21 @@ EX namespace halloween {
|
|||||||
items[itOrbShell] += 5;
|
items[itOrbShell] += 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX void start_all() {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes('g');
|
||||||
|
stampbase = ticks;
|
||||||
|
if(!sphere) {
|
||||||
|
stop_game();
|
||||||
|
specialland = laHalloween;
|
||||||
|
set_geometry(gSphere);
|
||||||
|
start_game();
|
||||||
|
pconf.alpha = 999;
|
||||||
|
pconf.scale = 998;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EX }
|
EX }
|
||||||
|
|
||||||
// ... also includes the Ivory Tower
|
// ... also includes the Ivory Tower
|
||||||
|
23
crystal.cpp
23
crystal.cpp
@ -1439,6 +1439,29 @@ string make_help() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX void crystal_knight_help() {
|
||||||
|
gamescreen(1);
|
||||||
|
dialog::init();
|
||||||
|
|
||||||
|
dialog::addHelp(XLAT(
|
||||||
|
"This is a representation of four-dimensional geometry. Can you find the Holy Grail in the center of the Round Table?\n\n"
|
||||||
|
"In 'Knight of the 16-Cell Table', each cell has 8 adjacent cells, "
|
||||||
|
"which correspond to 8 adjacent points in the four-dimensional grid. The Round Table has the shape of a 16-cell.\n\n"
|
||||||
|
"In 'Knight of the 3-Spherical Table', it is the same map, but double bitruncated. The Round Table has the shape of a hypersphere.\n\n"
|
||||||
|
));
|
||||||
|
|
||||||
|
dialog::addItem(XLAT("let me understand how the coordinates work"), 'e');
|
||||||
|
dialog::add_action([] { cheater = true; view_coordinates = true; compass_probability = 1; restart_game(); popScreenAll(); });
|
||||||
|
|
||||||
|
dialog::addItem(XLAT("thanks, I need no hints (achievement)"), 't');
|
||||||
|
dialog::add_action([] { view_coordinates = false; compass_probability = 0; restart_game(); popScreenAll(); });
|
||||||
|
|
||||||
|
dialog::addItem(XLAT("more about this geometry..."), 'm');
|
||||||
|
dialog::add_action([] { popScreenAll(); pushScreen(show); });
|
||||||
|
|
||||||
|
dialog::display();
|
||||||
|
}
|
||||||
|
|
||||||
EX void show() {
|
EX void show() {
|
||||||
cmode = sm::SIDE | sm::MAYDARK;
|
cmode = sm::SIDE | sm::MAYDARK;
|
||||||
gamescreen(0);
|
gamescreen(0);
|
||||||
|
@ -136,6 +136,10 @@ EX namespace dialog {
|
|||||||
add_key_action(key, action);
|
add_key_action(key, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX void extend() {
|
||||||
|
items.back().key = items[isize(items)-2].key;
|
||||||
|
}
|
||||||
|
|
||||||
EX void add_action(const reaction_t& action) {
|
EX void add_action(const reaction_t& action) {
|
||||||
add_key_action_adjust(lastItem().key, action);
|
add_key_action_adjust(lastItem().key, action);
|
||||||
}
|
}
|
||||||
|
146
menus.cpp
146
menus.cpp
@ -518,6 +518,125 @@ EX void show_chaos() {
|
|||||||
dialog::addBack();
|
dialog::addBack();
|
||||||
dialog::display();
|
dialog::display();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX void mode_higlights() {
|
||||||
|
gamescreen(3);
|
||||||
|
dialog::init(XLAT("highlights & achievements"));
|
||||||
|
|
||||||
|
dialog::addBigItem(XLAT("Space Rocks"), 'r');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
stop_game();
|
||||||
|
resetModes();
|
||||||
|
specialland = laAsteroids;
|
||||||
|
set_geometry(gKleinQuartic);
|
||||||
|
set_variation(eVariation::bitruncated);
|
||||||
|
shmup::on = true;
|
||||||
|
start_game();
|
||||||
|
}));
|
||||||
|
dialog::addInfo(XLAT("classic game except hyperbolic"));
|
||||||
|
dialog::extend();
|
||||||
|
|
||||||
|
dialog::addBigItem(XLAT("Racing in Thurston geometries"), 't'-96);
|
||||||
|
dialog::add_action(dialog::add_confirmation(racing::start_thurston));
|
||||||
|
dialog::addInfo(XLAT("race through a maze in exotic 3D geometry!"));
|
||||||
|
dialog::extend();
|
||||||
|
|
||||||
|
dialog::addBigItem(XLAT1("Halloween"), 'Z');
|
||||||
|
dialog::add_action(dialog::add_confirmation(halloween::start_all));
|
||||||
|
dialog::addInfo(XLAT("Halloween mini-game"));
|
||||||
|
dialog::extend();
|
||||||
|
|
||||||
|
dialog::addBigItem(XLAT1("heptagonal mode"), 'H');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes('7');
|
||||||
|
start_game();
|
||||||
|
clearMessages();
|
||||||
|
welcomeMessage();
|
||||||
|
}));
|
||||||
|
dialog::addInfo(XLAT("can you find the Heptagonal Grail?"));
|
||||||
|
dialog::extend();
|
||||||
|
|
||||||
|
dialog::addBreak(100);
|
||||||
|
dialog::addBigItem(XLAT1("other achievements:"), 0);
|
||||||
|
dialog::addItem(XLAT("General Euclid"), 'e');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes();
|
||||||
|
set_geometry(gEuclid);
|
||||||
|
firstland = specialland = laMirrorOld;
|
||||||
|
start_game();
|
||||||
|
clearMessages();
|
||||||
|
welcomeMessage();
|
||||||
|
}));
|
||||||
|
|
||||||
|
dialog::addItem(XLAT("Worm of the World"), 'w');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes();
|
||||||
|
set_geometry(gZebraQuotient);
|
||||||
|
firstland = specialland = laDesert;
|
||||||
|
start_game();
|
||||||
|
clearMessages();
|
||||||
|
welcomeMessage();
|
||||||
|
}));
|
||||||
|
|
||||||
|
if(hiitemsMax(itHolyGrail) || cheater || autocheat) {
|
||||||
|
dialog::addItem(XLAT("Knight of the 16-Cell Table"), '1');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes();
|
||||||
|
crystal::set_crystal(8);
|
||||||
|
firstland = specialland = laCamelot;
|
||||||
|
start_game();
|
||||||
|
clearMessages();
|
||||||
|
welcomeMessage();
|
||||||
|
pushScreen(crystal::crystal_knight_help);
|
||||||
|
}));
|
||||||
|
|
||||||
|
dialog::addItem(XLAT("Knight of the 3-Spherical Table"), '3');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes();
|
||||||
|
crystal::set_crystal(8);
|
||||||
|
set_variation(eVariation::bitruncated);
|
||||||
|
set_variation(eVariation::bitruncated);
|
||||||
|
firstland = specialland = laCamelot;
|
||||||
|
start_game();
|
||||||
|
clearMessages();
|
||||||
|
welcomeMessage();
|
||||||
|
pushScreen(crystal::crystal_knight_help);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dialog::addItem("(locked until you find a Holy Grail)", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog::addBreak(100);
|
||||||
|
dialog::addBigItem(XLAT1("some cool visualizations"), 0);
|
||||||
|
dialog::addItem(XLAT("Emerald Mine in {5,3,4}"), '5');
|
||||||
|
dialog::add_action(dialog::add_confirmation([] {
|
||||||
|
popScreenAll();
|
||||||
|
resetModes();
|
||||||
|
specialland = laEmerald;
|
||||||
|
set_geometry(gSpace534);
|
||||||
|
check_cgi();
|
||||||
|
cgi.require_basics();
|
||||||
|
cgi.require_shapes();
|
||||||
|
fieldpattern::field_from_current();
|
||||||
|
set_geometry(gFieldQuotient);
|
||||||
|
int p = 2;
|
||||||
|
for(;; p++) { currfp.Prime = p; currfp.force_hash = 0x72414D0C; if(!currfp.solve()) break; }
|
||||||
|
start_game();
|
||||||
|
clearMessages();
|
||||||
|
welcomeMessage();
|
||||||
|
}));
|
||||||
|
|
||||||
|
dialog::addBreak(100);
|
||||||
|
dialog::addBack();
|
||||||
|
dialog::display();
|
||||||
|
}
|
||||||
|
|
||||||
EX void showChangeMode() {
|
EX void showChangeMode() {
|
||||||
gamescreen(3);
|
gamescreen(3);
|
||||||
@ -568,6 +687,9 @@ EX void showChangeMode() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
dialog::addBreak(50);
|
dialog::addBreak(50);
|
||||||
|
|
||||||
|
dialog::addItem(XLAT("highlights & achievements"), 'h');
|
||||||
|
dialog::add_action_push(mode_higlights);
|
||||||
|
|
||||||
dialog::addBack();
|
dialog::addBack();
|
||||||
dialog::display();
|
dialog::display();
|
||||||
@ -867,19 +989,8 @@ EX void showStartMenu() {
|
|||||||
if(uni == 's')
|
if(uni == 's')
|
||||||
multi::configure();
|
multi::configure();
|
||||||
}
|
}
|
||||||
else if(uni == 'Z') {
|
else if(uni == 'Z')
|
||||||
popScreenAll();
|
halloween::start_all();
|
||||||
resetModes('g');
|
|
||||||
stampbase = ticks;
|
|
||||||
if(!sphere) {
|
|
||||||
stop_game();
|
|
||||||
specialland = laHalloween;
|
|
||||||
set_geometry(gSphere);
|
|
||||||
start_game();
|
|
||||||
pconf.alpha = 999;
|
|
||||||
pconf.scale = 998;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#if CAP_RACING && MAXMDIM >= 4
|
#if CAP_RACING && MAXMDIM >= 4
|
||||||
else if(uni == 'r' - 96) {
|
else if(uni == 'r' - 96) {
|
||||||
popScreenAll();
|
popScreenAll();
|
||||||
@ -900,13 +1011,8 @@ EX void showStartMenu() {
|
|||||||
vid.use_smart_range = 1;
|
vid.use_smart_range = 1;
|
||||||
vid.smart_range_detail = 3;
|
vid.smart_range_detail = 3;
|
||||||
}
|
}
|
||||||
else if(uni == 't' - 96) {
|
else if(uni == 't' - 96)
|
||||||
stop_game();
|
racing::start_thurston();
|
||||||
resetModes();
|
|
||||||
start_game();
|
|
||||||
pushScreen(showStartMenu);
|
|
||||||
pushScreen(racing::thurston_racing);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#if CAP_TOUR
|
#if CAP_TOUR
|
||||||
else if(uni == 't') {
|
else if(uni == 't') {
|
||||||
|
@ -1488,6 +1488,14 @@ EX void add_debug(cell *c) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
EX void start_thurston() {
|
||||||
|
stop_game();
|
||||||
|
resetModes();
|
||||||
|
start_game();
|
||||||
|
pushScreen(showStartMenu);
|
||||||
|
pushScreen(racing::thurston_racing);
|
||||||
|
}
|
||||||
|
|
||||||
#if !CAP_RACING
|
#if !CAP_RACING
|
||||||
EX always_false on;
|
EX always_false on;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user