1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2026-05-01 13:01:22 +00:00

bandshifting for Archimedean and binary tilings (sometimes crashes Archimedean)

This commit is contained in:
Zeno Rogue
2018-11-10 10:31:19 +01:00
parent 6c8661b484
commit ab58d82713
2 changed files with 19 additions and 13 deletions

View File

@@ -154,29 +154,32 @@ namespace binary {
void draw_rec(cell *c, int dirs, const transmatrix& V, int reclev) {
transmatrix V1 = V;
bandfixer bf(V1);
if(vid.use_smart_range == 0 && !dodrawcell(c)) return;
if(vid.use_smart_range && reclev >= 2 && !in_smart_range(V)) return;
if(vid.use_smart_range && reclev >= 2 && !in_smart_range(V1)) return;
if(vid.use_smart_range == 2) setdist(c, 7, c);
drawcell(c, V, 0, false);
drawcell(c, V1, 0, false);
// 1: up
if(dirs & 1)
draw_rec(createMov(c, bd_up), 7, V * xpush(-log(2)), reclev+1);
draw_rec(createMov(c, bd_up), 7, V1 * xpush(-log(2)), reclev+1);
// right
if(dirs & 2)
draw_rec(createMov(c, bd_right), 2, V * parabolic(1), reclev+1);
draw_rec(createMov(c, bd_right), 2, V1 * parabolic(1), reclev+1);
// left
if(dirs & 4)
draw_rec(createMov(c, bd_left), 4, V * parabolic(-1), reclev+1);
draw_rec(createMov(c, bd_left), 4, V1 * parabolic(-1), reclev+1);
// down
if((dirs & 8) && c->type == 6)
draw_rec(createMov(c, bd_down), dirs & 62, V * xpush(log(2)), reclev+1);
draw_rec(createMov(c, bd_down), dirs & 62, V1 * xpush(log(2)), reclev+1);
// down_left
if((dirs & 16) && c->type == 7)
draw_rec(createMov(c, bd_down_left), dirs & 28, V * parabolic(-1) * xpush(log(2)), reclev+1);
draw_rec(createMov(c, bd_down_left), dirs & 28, V1 * parabolic(-1) * xpush(log(2)), reclev+1);
// down_right
if((dirs & 32) && c->type == 7)
draw_rec(createMov(c, bd_down_right), dirs & 42, V * parabolic(1) * xpush(log(2)), reclev+1);
draw_rec(createMov(c, bd_down_right), dirs & 42, V1 * parabolic(1) * xpush(log(2)), reclev+1);
}
void draw() {