From c9c55d0c8b13f534f302be4eea92c9ade91ce20d Mon Sep 17 00:00:00 2001 From: Misa Date: Wed, 29 Apr 2020 10:37:56 -0700 Subject: [PATCH] Move horizontal warp background to Graphics::updatebackground() This is so the background doesn't NYOOOOM past at light speed. Although for a game set in space like VVVVVV, light speed ain't bad. And this finally requires that editorlogic() have a call to Graphics::updatebackground(). --- desktop_version/src/Graphics.cpp | 68 ++++++++++++++++---------------- desktop_version/src/editor.cpp | 13 ++++++ 2 files changed, 48 insertions(+), 33 deletions(-) diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index e56a1329..40252ed2 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -1957,39 +1957,6 @@ void Graphics::drawbackground( int t ) } break; case 3: //Warp zone (horizontal) - backoffset+=3; - if (backoffset >= 16) backoffset -= 16; - - if (backgrounddrawn) - { - ScrollSurface(towerbuffer, -3, 0 ); - for (int j = 0; j < 15; j++) - { - temp = 680 + (rcol * 3); - drawtowertile(317 - backoffset, (j * 16), temp+40); //20*16 = 320 - drawtowertile(317 - backoffset + 8, (j * 16), temp + 41); - drawtowertile(317 - backoffset, (j * 16) + 8, temp + 80); - drawtowertile(317 - backoffset + 8, (j * 16) + 8, temp + 81); - } - } - else - { - //draw the whole thing for the first time! - backoffset = 0; - FillRect(towerbuffer, 0x000000); - for (int j = 0; j < 15; j++) - { - for (int i = 0; i < 21; i++) - { - temp = 680 + (rcol * 3); - drawtowertile((i * 16) - backoffset - 3, (j * 16), temp+40); - drawtowertile((i * 16) - backoffset + 8 - 3, (j * 16), temp + 41); - drawtowertile((i * 16) - backoffset - 3, (j * 16) + 8, temp + 80); - drawtowertile((i * 16) - backoffset + 8 - 3, (j * 16) + 8, temp + 81); - } - } - backgrounddrawn = true; - } BlitSurfaceStandard(towerbuffer, NULL, backBuffer, NULL); break; case 4: //Warp zone (vertical) @@ -2204,6 +2171,41 @@ void Graphics::updatebackground(int t) } } break; + case 3: //Warp zone (horizontal) + backoffset+=3; + if (backoffset >= 16) backoffset -= 16; + + if (backgrounddrawn) + { + ScrollSurface(towerbuffer, -3, 0 ); + for (int j = 0; j < 15; j++) + { + int temp = 680 + (rcol * 3); + drawtowertile(317 - backoffset, (j * 16), temp+40); //20*16 = 320 + drawtowertile(317 - backoffset + 8, (j * 16), temp + 41); + drawtowertile(317 - backoffset, (j * 16) + 8, temp + 80); + drawtowertile(317 - backoffset + 8, (j * 16) + 8, temp + 81); + } + } + else + { + //draw the whole thing for the first time! + backoffset = 0; + FillRect(towerbuffer, 0x000000); + for (int j = 0; j < 15; j++) + { + for (int i = 0; i < 21; i++) + { + int temp = 680 + (rcol * 3); + drawtowertile((i * 16) - backoffset - 3, (j * 16), temp+40); + drawtowertile((i * 16) - backoffset + 8 - 3, (j * 16), temp + 41); + drawtowertile((i * 16) - backoffset - 3, (j * 16) + 8, temp + 80); + drawtowertile((i * 16) - backoffset + 8 - 3, (j * 16) + 8, temp + 81); + } + } + backgrounddrawn = true; + } + break; case 6: //Final Starfield for (int i = 0; i < 50; i++) diff --git a/desktop_version/src/editor.cpp b/desktop_version/src/editor.cpp index 6107940a..04b81114 100644 --- a/desktop_version/src/editor.cpp +++ b/desktop_version/src/editor.cpp @@ -3606,6 +3606,19 @@ void editorlogic() ed.notedelay--; } + if (!ed.settingsmod) + { + switch(ed.level[ed.levx+(ed.levy*ed.maxwidth)].warpdir) + { + case 1: + graphics.rcol=ed.getwarpbackground(ed.levx, ed.levy); + graphics.updatebackground(3); + break; + default: + break; + } + } + if (graphics.fademode == 1) { //Return to game