1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-27 14:37:16 +00:00

fake:: new config options, changed option name, seen in menu when available, prevent cheat

This commit is contained in:
Zeno Rogue 2020-05-31 16:44:44 +02:00
parent 8f0f224605
commit bac89fb9f9
2 changed files with 39 additions and 11 deletions

View File

@ -10,6 +10,9 @@ EX namespace fake {
EX bool multiple; EX bool multiple;
EX bool multiple_special_draw = true;
EX bool recursive_draw = false;
EX eGeometry underlying; EX eGeometry underlying;
EX geometry_information *underlying_cgip; EX geometry_information *underlying_cgip;
EX hrmap *pmap; EX hrmap *pmap;
@ -20,6 +23,8 @@ EX namespace fake {
EX bool available() { EX bool available() {
if(in()) return true; if(in()) return true;
if(GDIM == 2 && standard_tiling() && (PURE || BITRUNCATED)) return true;
if(arcm::in() && PURE) return true;
if(GDIM == 2) return false; if(GDIM == 2) return false;
if(among(geometry, gRhombic3, gBitrunc3)) return false; if(among(geometry, gRhombic3, gBitrunc3)) return false;
return euc::in() || reg3::in(); return euc::in() || reg3::in();
@ -170,14 +175,14 @@ EX namespace fake {
// for(int i=0; i<S6; i++) queuepoly(ggmatrix(cwt.at), shWall3D[i], 0xFF0000FF); // for(int i=0; i<S6; i++) queuepoly(ggmatrix(cwt.at), shWall3D[i], 0xFF0000FF);
if(pmodel == mdDisk && WDIM == 2 && false) { if(pmodel == mdDisk && WDIM == 2 && recursive_draw) {
draw_recursive(centerover, cview(), -1, -1, nullptr, 0); draw_recursive(centerover, cview(), -1, -1, nullptr, 0);
return; return;
} }
dq::visited_c.clear(); dq::visited_c.clear();
dq::visited_by_matrix.clear(); dq::visited_by_matrix.clear();
auto enqueue = (multiple ? dq::enqueue_by_matrix_c : dq::enqueue_c); auto enqueue = (multiple && multiple_special_draw ? dq::enqueue_by_matrix_c : dq::enqueue_c);
enqueue(centerover, cview()); enqueue(centerover, cview());
int id = 0; int id = 0;
@ -452,14 +457,13 @@ EX void change_around() {
EX void configure() { EX void configure() {
if(!in()) { if(!in()) {
underlying_cgip = cgip; underlying_cgip = cgip;
around = cgi.loop; around = around_orig();
} }
dialog::editNumber(around, 2.01, 10, 1, around, "change curvature", dialog::editNumber(around, 2.01, 10, 1, around, "fake curvature",
"This feature lets you construct the same regular honeycomb, but " "This feature lets you construct the same tiling, but "
"from regular polyhedra of different curvature.\n\n" "from shapes of different curvature.\n\n"
"The number you give here is the number of cells around an edge.\n\n" "The number you give here is (2D) vertex degree or (3D) "
"This geometry is drawn correctly, except if the value entered is " "the number of cells around an edge.\n\n"
"the multiple of the actual one, or when using the raycaster."
); );
if(fake::in()) if(fake::in())
dialog::reaction = change_around; dialog::reaction = change_around;
@ -473,6 +477,24 @@ EX void configure() {
popScreen(); popScreen();
change_around(); change_around();
}); });
dialog::addSelItem("original", fts(around_orig()), 'O');
dialog::add_action([e] {
around = around_orig();
popScreen();
change_around();
});
dialog::addSelItem("double original", fts(2 * around_orig()), 'D');
dialog::add_action([e] {
around = 2 * around_orig();
popScreen();
change_around();
});
dialog::addBoolItem_action("draw all if multiple of original", multiple_special_draw, 'M');
dialog::addBoolItem_action("draw copies (2D only)", recursive_draw, 'C');
}; };
} }

View File

@ -759,8 +759,14 @@ EX void showEuclideanMenu() {
} }
if(fake::available()) { if(fake::available()) {
dialog::addItem(XLAT("change curvature"), '4'); dialog::addItem(XLAT("fake curvature"), '4');
dialog::add_action(fake::configure);
dialog::add_action([] {
if(fake::in()) fake::configure();
else dialog::cheat_if_confirmed(
fake::configure
);
});
} }
#if CAP_IRR #if CAP_IRR