From 5305fb3fc3f9d6f6cff1136caad221350f1a96ae Mon Sep 17 00:00:00 2001 From: FajsiEx Date: Mon, 26 Jul 2021 16:22:00 +0200 Subject: [PATCH 1/4] + implement effective and excessive rate gauges --- scripts/gameplay.lua | 33 ++++++++++++++++-- .../{normal => effective}/gauge_back.png | Bin .../gauges/effective/gauge_fill_fail.png | Bin 0 -> 15002 bytes .../gauges/effective/gauge_fill_pass.png | Bin 0 -> 12157 bytes .../{hard+ARS => effective}/gauge_front.png | Bin .../{hard+ARS => effective}/gauge_mask.png | Bin .../gauges/{hard => excessive}/gauge_back.png | Bin .../{hard+ARS => excessive}/gauge_fill.png | Bin .../{hard => excessive}/gauge_front.png | Bin .../gauges/{hard => excessive}/gauge_mask.png | Bin .../gauge_back.png} | Bin .../{hard => excessive_ars}/gauge_fill.png | Bin .../{normal => excessive_ars}/gauge_front.png | Bin .../{normal => excessive_ars}/gauge_mask.png | Bin .../gameplay/gauges/normal/gauge_fill.png | Bin 7598 -> 0 bytes 15 files changed, 31 insertions(+), 2 deletions(-) rename textures/gameplay/gauges/{normal => effective}/gauge_back.png (100%) create mode 100644 textures/gameplay/gauges/effective/gauge_fill_fail.png create mode 100644 textures/gameplay/gauges/effective/gauge_fill_pass.png rename textures/gameplay/gauges/{hard+ARS => effective}/gauge_front.png (100%) rename textures/gameplay/gauges/{hard+ARS => effective}/gauge_mask.png (100%) rename textures/gameplay/gauges/{hard => excessive}/gauge_back.png (100%) rename textures/gameplay/gauges/{hard+ARS => excessive}/gauge_fill.png (100%) rename textures/gameplay/gauges/{hard => excessive}/gauge_front.png (100%) rename textures/gameplay/gauges/{hard => excessive}/gauge_mask.png (100%) rename textures/gameplay/gauges/{hard+ARS/Excessive+ARS.png => excessive_ars/gauge_back.png} (100%) rename textures/gameplay/gauges/{hard => excessive_ars}/gauge_fill.png (100%) rename textures/gameplay/gauges/{normal => excessive_ars}/gauge_front.png (100%) rename textures/gameplay/gauges/{normal => excessive_ars}/gauge_mask.png (100%) delete mode 100644 textures/gameplay/gauges/normal/gauge_fill.png diff --git a/scripts/gameplay.lua b/scripts/gameplay.lua index e52dd38..70ea586 100644 --- a/scripts/gameplay.lua +++ b/scripts/gameplay.lua @@ -695,8 +695,18 @@ end -- -------------------------------------------------------------------------- -- -- draw_gauge: -- local gaugeNumBack = gfx.CreateSkinImage("gauge_num_back.png", 0) -local gaugeBgImage = gfx.CreateSkinImage("gameplay/gauges/hard/gauge_back.png", 0) -local gaugeFillImage = gfx.CreateSkinImage("gameplay/gauges/hard/gauge_fill.png", 0) + + +local gaugeEffBgImage = gfx.CreateSkinImage("gameplay/gauges/effective/gauge_back.png", 0) +local gaugeEffFailFillImage = gfx.CreateSkinImage("gameplay/gauges/effective/gauge_fill_fail.png", 0) +local gaugeEffPassFillImage = gfx.CreateSkinImage("gameplay/gauges/effective/gauge_fill_pass.png", 0) + +local gaugeExcBgImage = gfx.CreateSkinImage("gameplay/gauges/excessive/gauge_back.png", 0) +local gaugeExcFillImage = gfx.CreateSkinImage("gameplay/gauges/excessive/gauge_fill.png", 0) + +local gaugeExcArsBgImage = gfx.CreateSkinImage("gameplay/gauges/excessive_ars/gauge_back.png", 0) +local gaugeExcArsFillImage = gfx.CreateSkinImage("gameplay/gauges/excessive_ars/gauge_fill.png", 0) + function draw_gauge(deltaTime) @@ -708,6 +718,25 @@ function draw_gauge(deltaTime) posx = resx - width posy = posy - 90 end + + -- fallbacks in case of unsupported type + local gaugeBgImage = gaugeEffBgImage; + local gaugeFillImage = gaugeEffPassFillImage; + + if gameplay.gauge.type == 0 then + gaugeBgImage = gaugeEffBgImage; + + if gameplay.gauge.value <= 0.7 then + gaugeFillImage = gaugeEffFailFillImage; + else + gaugeFillImage = gaugeEffPassFillImage; + end + + elseif gameplay.gauge.type == 1 then + gaugeBgImage = gaugeExcBgImage; + gaugeFillImage = gaugeExcFillImage; + end + local tw, th = gfx.ImageSize(gaugeBgImage) gfx.ImageRect(posx, posy, tw, th, gaugeBgImage, 1, 0) diff --git a/textures/gameplay/gauges/normal/gauge_back.png b/textures/gameplay/gauges/effective/gauge_back.png similarity index 100% rename from textures/gameplay/gauges/normal/gauge_back.png rename to textures/gameplay/gauges/effective/gauge_back.png diff --git a/textures/gameplay/gauges/effective/gauge_fill_fail.png b/textures/gameplay/gauges/effective/gauge_fill_fail.png new file mode 100644 index 0000000000000000000000000000000000000000..69721aa2c22646ba129ac8804e03579317114723 GIT binary patch literal 15002 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 Date: Mon, 26 Jul 2021 17:10:50 +0200 Subject: [PATCH 2/4] * properly scale gauges --- scripts/gameplay.lua | 50 ++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/scripts/gameplay.lua b/scripts/gameplay.lua index 70ea586..05ead4c 100644 --- a/scripts/gameplay.lua +++ b/scripts/gameplay.lua @@ -709,16 +709,6 @@ local gaugeExcArsFillImage = gfx.CreateSkinImage("gameplay/gauges/excessive_ars/ function draw_gauge(deltaTime) - - local width = 82 * scale / 1 - local height = 702 * scale / 1 - local posx = resx - width - local posy = resy / 2 - height / 2 + 60 - if portrait then - posx = resx - width - posy = posy - 90 - end - -- fallbacks in case of unsupported type local gaugeBgImage = gaugeEffBgImage; local gaugeFillImage = gaugeEffPassFillImage; @@ -738,30 +728,36 @@ function draw_gauge(deltaTime) end - local tw, th = gfx.ImageSize(gaugeBgImage) - gfx.ImageRect(posx, posy, tw, th, gaugeBgImage, 1, 0) - gfx.ImageRect(posx+22, posy+11+(629-(629*(gameplay.gauge.value))), 23, 629*(gameplay.gauge.value), gaugeFillImage, 1, 0) + local BgW, BgH = gfx.ImageSize(gaugeBgImage); + local FillW, FillH = gfx.ImageSize(gaugeFillImage); + local gaugePosX = 1080 - BgW - 48; + local gaugePosY = 1920/2 - BgH/2 - 32; + + -- gfx.Text('RESX: ' .. resx .. ' // RESY: ' .. resy .. ' // GPX: ' .. gaugePosX, 255,1200); + + gfx.ImageRect(gaugePosX, gaugePosY, BgW, BgH, gaugeBgImage, 1, 0) + gfx.ImageRect(gaugePosX+22, gaugePosY+11+(FillH-(FillH*(gameplay.gauge.value))), FillW, FillH*(gameplay.gauge.value), gaugeFillImage, 1, 0) - --draw gauge % label - posx = posx / scale - posx = posx + (-20 * 0.5) - -- 630 = 0% position - height = 960 * 0.5 - posy = posy / scale + -- --draw gauge % label + -- posx = posx / scale + -- posx = posx + (-20 * 0.5) + -- -- 630 = 0% position + -- height = 960 * 0.5 + -- posy = posy / scale - tw, th = gfx.ImageSize(gaugeNumBack) + -- tw, th = gfx.ImageSize(gaugeNumBack) -- 80 = 100% position - posy = posy + (95 * 0.5) + height - height * gameplay.gauge.value - -- Draw the background - gfx.BeginPath() - gfx.FillColor(255, 255, 255) - gfx.ImageRect(posx - 44, posy - 10, tw, th, gaugeNumBack, 1, 0) + -- posy = posy + (95 * 0.5) + height - height * gameplay.gauge.value + -- -- Draw the background + -- gfx.BeginPath() + -- gfx.FillColor(255, 255, 255) + -- gfx.ImageRect(posx - 44, posy - 10, tw, th, gaugeNumBack, 1, 0) - gfx.BeginPath() + -- gfx.BeginPath() -- gfx.FillColor(250, 228, 112) - draw_number(posx - 24, posy + 4, 1.0, math.floor(gameplay.gauge.value * 100), 3, numberImages, true) + -- draw_number(posx - 24, posy + 4, 1.0, math.floor(gameplay.gauge.value * 100), 3, numberImages, true) -- gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE) -- gfx.FontSize(18) -- gfx.Text(string.format("%d", math.floor(gameplay.gauge.value * 100)), posx, posy + 4) From e017fef0eb420f0321aa21cbc7c2f616912c02af Mon Sep 17 00:00:00 2001 From: FajsiEx Date: Mon, 26 Jul 2021 17:11:13 +0200 Subject: [PATCH 3/4] - unused code --- scripts/gameplay.lua | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/scripts/gameplay.lua b/scripts/gameplay.lua index 05ead4c..8cb43db 100644 --- a/scripts/gameplay.lua +++ b/scripts/gameplay.lua @@ -740,27 +740,7 @@ function draw_gauge(deltaTime) - -- --draw gauge % label - -- posx = posx / scale - -- posx = posx + (-20 * 0.5) - -- -- 630 = 0% position - -- height = 960 * 0.5 - -- posy = posy / scale - - -- tw, th = gfx.ImageSize(gaugeNumBack) - -- 80 = 100% position - -- posy = posy + (95 * 0.5) + height - height * gameplay.gauge.value - -- -- Draw the background - -- gfx.BeginPath() - -- gfx.FillColor(255, 255, 255) - -- gfx.ImageRect(posx - 44, posy - 10, tw, th, gaugeNumBack, 1, 0) - - -- gfx.BeginPath() - -- gfx.FillColor(250, 228, 112) - -- draw_number(posx - 24, posy + 4, 1.0, math.floor(gameplay.gauge.value * 100), 3, numberImages, true) - -- gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE) - -- gfx.FontSize(18) - -- gfx.Text(string.format("%d", math.floor(gameplay.gauge.value * 100)), posx, posy + 4) + -- TODO: Draw gauge % label end -- -------------------------------------------------------------------------- -- -- draw_combo: -- From 3aca37750bf5e2431e64ec8e16fc28884163f146 Mon Sep 17 00:00:00 2001 From: FajsiEx Date: Mon, 26 Jul 2021 17:55:53 +0200 Subject: [PATCH 4/4] + nautica.json to gitignore --- .gitignore | 1 + nautica.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 nautica.json diff --git a/.gitignore b/.gitignore index 7f5c6b9..6d28dbe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ _asset song-assets skin-assets +nautica.json \ No newline at end of file diff --git a/nautica.json b/nautica.json deleted file mode 100644 index 2d2ca5f..0000000 --- a/nautica.json +++ /dev/null @@ -1 +0,0 @@ -{"6df03d20-dcb0-11eb-b3d0-b7e5f9bb55e7":"Downloaded","3ff083a0-138a-11eb-b7fa-73440733704d":"Downloaded","6578e6d0-ebe2-11eb-a3e8-476e0023a0e2":"Downloaded"} \ No newline at end of file