diff --git a/rogueviz/recursive-house.cpp b/rogueviz/recursive-house.cpp new file mode 100644 index 00000000..0bd3bb1f --- /dev/null +++ b/rogueviz/recursive-house.cpp @@ -0,0 +1,110 @@ +#include "rogueviz.h" + +namespace hr { + +namespace recursive_house { + +// log(2) / vid.plevel_factor == 1.78379 +// 0.38858115616745542 + +// commandline for Euclidean animation: +// rogueviz -canvas 0 -geo beti -recursive-house -noplayer + +// commandline for S2xE +// rogueviz -geo 2 -7 -product -prodperiod 1 -canvas 0 -lands 6 -recursive-house -noplayer plevel_factor=0.38858*2 + +// (warning: it is quite slow) + +bool draw_recursive_house_at(cell *c, const shiftmatrix& V) { + if(c != currentmap->gamestart()) return false; + for(int lv=-10; lv<=10; lv++) { + if(!euclid && lv) continue; + dynamicval g(geometry, gCubeTiling); + check_cgi(); + cgi.require_shapes(); + + auto cube = [&] (ld x, ld y, ld z, color_t wal, ld s = 1) { + for(int i=0; i<6; i++) { + auto& p = cgi.shWall3D[i]; + for(int j=p.s; jgamestart(); + + anims::moved(); + }); + } + +auto house_hook = arg::add3("-recursive-house", enable); + +}} diff --git a/rogueviz/rogueviz-all.cpp b/rogueviz/rogueviz-all.cpp index 7327a97c..a61d4444 100644 --- a/rogueviz/rogueviz-all.cpp +++ b/rogueviz/rogueviz-all.cpp @@ -40,6 +40,8 @@ #include "notknot.cpp" +#include "recursive-house.cpp" + #include "weirdmaze.cpp" #include "inner-maps.cpp"