From 13b8a9912f1bfcbe9d5fa0e1b5cf94336745ee7b Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Fri, 3 Apr 2020 20:41:46 +0300 Subject: [PATCH] Flip poison gas clouds --- src/sp_lev.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/sp_lev.c b/src/sp_lev.c index 16f42cdba..7ef352f22 100755 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -610,7 +610,7 @@ boolean extras; etmp->engr_x = FlipX(etmp->engr_x); } - /* regions */ + /* level (teleport) regions */ for (i = 0; i < g.num_lregions; i++) { if (flp & 1) { g.lregions[i].inarea.y1 = FlipY(g.lregions[i].inarea.y1); @@ -648,6 +648,35 @@ boolean extras; } } + /* regions (poison clouds, etc) */ + for (i = 0; i < g.n_regions; i++) { + int j, tmp1, tmp2; + if (flp & 1) { + tmp1 = FlipY(g.regions[i]->bounding_box.ly); + tmp2 = FlipY(g.regions[i]->bounding_box.hy); + g.regions[i]->bounding_box.ly = min(tmp1, tmp2); + g.regions[i]->bounding_box.hy = max(tmp1, tmp2); + for (j = 0; j < g.regions[i]->nrects; j++) { + tmp1 = FlipY(g.regions[i]->rects[j].ly); + tmp2 = FlipY(g.regions[i]->rects[j].hy); + g.regions[i]->rects[j].ly = min(tmp1, tmp2); + g.regions[i]->rects[j].hy = max(tmp1, tmp2); + } + } + if (flp & 2) { + tmp1 = FlipX(g.regions[i]->bounding_box.lx); + tmp2 = FlipX(g.regions[i]->bounding_box.hx); + g.regions[i]->bounding_box.lx = min(tmp1, tmp2); + g.regions[i]->bounding_box.hx = max(tmp1, tmp2); + for (j = 0; j < g.regions[i]->nrects; j++) { + tmp1 = FlipX(g.regions[i]->rects[j].lx); + tmp2 = FlipX(g.regions[i]->rects[j].hx); + g.regions[i]->rects[j].lx = min(tmp1, tmp2); + g.regions[i]->rects[j].hx = max(tmp1, tmp2); + } + } + } + /* rooms */ for (sroom = &g.rooms[0]; ; sroom++) { if (sroom->hx < 0)