2021-12-02 03:41:12 +01:00
|
|
|
local Numbers = require('common.numbers')
|
2021-09-05 11:50:30 +02:00
|
|
|
|
2021-09-05 15:22:33 +02:00
|
|
|
local chainLabel = gfx.CreateSkinImage("gameplay/chain/label.png", 0)
|
2021-09-05 11:50:30 +02:00
|
|
|
|
|
|
|
local desw = 1080;
|
|
|
|
local desh = 1920;
|
|
|
|
|
2021-11-25 19:42:46 +01:00
|
|
|
local isLandscape = false;
|
|
|
|
|
2021-09-05 11:50:30 +02:00
|
|
|
local transitionShakeScale = 0;
|
|
|
|
local transitionShakePosOffset = 0;
|
2021-10-28 17:49:02 +02:00
|
|
|
local shakeTimer = 0;
|
2021-09-05 11:50:30 +02:00
|
|
|
|
2021-12-02 03:41:12 +01:00
|
|
|
local chainNumbersReg = Numbers.load_number_image('gameplay/chain/reg')
|
|
|
|
local chainNumbersUC = Numbers.load_number_image('gameplay/chain/uc')
|
|
|
|
local chainNumbersPUC = Numbers.load_number_image('gameplay/chain/puc')
|
2021-09-05 11:50:30 +02:00
|
|
|
|
|
|
|
local tickTransitions = function (deltaTime)
|
|
|
|
|
|
|
|
if transitionShakeScale < 1 then
|
|
|
|
transitionShakeScale = transitionShakeScale + deltaTime / 0.075 -- transition should last for that time in seconds
|
|
|
|
else
|
|
|
|
transitionShakeScale = 0
|
|
|
|
end
|
|
|
|
|
2021-10-28 17:51:27 +02:00
|
|
|
if (transitionShakeScale < 1/3) then
|
2021-09-05 11:50:30 +02:00
|
|
|
transitionShakePosOffset = 0;
|
2021-10-28 17:51:27 +02:00
|
|
|
elseif (transitionShakeScale > 2/3) then
|
2021-09-05 11:50:30 +02:00
|
|
|
transitionShakePosOffset = -1;
|
|
|
|
else
|
|
|
|
transitionShakePosOffset = 1;
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-10-28 17:49:02 +02:00
|
|
|
local onNewCombo = function ()
|
|
|
|
shakeTimer = 0.25;
|
|
|
|
end
|
|
|
|
|
2021-09-05 15:22:33 +02:00
|
|
|
local render = function (deltaTime, comboState, combo, critLineCenterX, critLineCenterY)
|
2021-11-25 19:42:46 +01:00
|
|
|
gfx.Save();
|
|
|
|
|
|
|
|
local resx, resy = game.GetResolution();
|
|
|
|
isLandscape = resx > resy;
|
|
|
|
|
|
|
|
if (isLandscape) then
|
|
|
|
desw = 1920;
|
|
|
|
desh = 1080;
|
|
|
|
else
|
|
|
|
desw = 1080;
|
|
|
|
desh = 1920;
|
|
|
|
end
|
|
|
|
|
2021-09-05 11:50:30 +02:00
|
|
|
tickTransitions(deltaTime)
|
|
|
|
|
2021-10-28 17:49:02 +02:00
|
|
|
if shakeTimer > 0 then
|
|
|
|
shakeTimer = shakeTimer - deltaTime;
|
|
|
|
else
|
|
|
|
transitionShakePosOffset = 0;
|
|
|
|
end
|
|
|
|
|
2021-09-05 11:50:30 +02:00
|
|
|
if combo == 0 then return end
|
|
|
|
|
2021-11-25 19:42:46 +01:00
|
|
|
local bottomOffsetMultiplier = 0.333;
|
|
|
|
if (isLandscape) then
|
|
|
|
bottomOffsetMultiplier = 0.25
|
|
|
|
end
|
|
|
|
|
2021-12-02 03:41:12 +01:00
|
|
|
local scale = resy / desh
|
|
|
|
if scale == 0 then
|
|
|
|
scale = 1
|
|
|
|
end
|
|
|
|
local posx = (resx / 2 + transitionShakePosOffset) / scale; -- counteract scaling
|
2021-11-25 19:42:46 +01:00
|
|
|
local posy = desh - (desh*bottomOffsetMultiplier) + transitionShakePosOffset;
|
2021-09-05 11:50:30 +02:00
|
|
|
|
2021-09-05 15:22:33 +02:00
|
|
|
local chainNumbers = chainNumbersReg --regular
|
|
|
|
if comboState == 2 then
|
|
|
|
chainNumbers = chainNumbersPUC --puc
|
|
|
|
elseif comboState == 1 then
|
|
|
|
chainNumbers = chainNumbersUC --uc
|
2021-11-21 17:03:10 +01:00
|
|
|
|
|
|
|
if (not game.GetSkinSetting('gameplay_ucDifferentColor')) then
|
|
|
|
chainNumbers = chainNumbersPUC -- force the PUC numbers in case the setting is turned off
|
|
|
|
end
|
2021-09-05 15:22:33 +02:00
|
|
|
end
|
2021-09-05 11:50:30 +02:00
|
|
|
|
2021-12-02 03:41:12 +01:00
|
|
|
gfx.Scale(scale, scale)
|
|
|
|
|
2021-09-05 11:50:30 +02:00
|
|
|
-- \_ chain _/
|
|
|
|
local tw, th
|
2021-09-05 15:22:33 +02:00
|
|
|
tw, th = gfx.ImageSize(chainLabel)
|
|
|
|
gfx.BeginPath()
|
|
|
|
gfx.ImageRect(posx - tw * 0.85 / 2, posy - 220, tw * 0.85, th * 0.85, chainLabel, 1, 0)
|
2021-09-05 11:50:30 +02:00
|
|
|
|
|
|
|
tw, th = gfx.ImageSize(chainNumbers[1])
|
|
|
|
posy = posy - th + 32
|
|
|
|
|
|
|
|
local comboScale = 0.45;
|
2021-12-02 03:41:12 +01:00
|
|
|
Numbers.draw_number(posx - (tw*4*comboScale)/2+(tw*comboScale*1.5)+10, posy - th / 2, 1.0, combo, 4, chainNumbers, true, comboScale, 1.12)
|
|
|
|
|
|
|
|
gfx.ResetTransform()
|
2021-11-25 19:48:02 +01:00
|
|
|
|
|
|
|
gfx.Restore();
|
2021-09-05 11:50:30 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
return {
|
2021-10-28 17:49:02 +02:00
|
|
|
onNewCombo=onNewCombo,
|
2021-09-05 11:50:30 +02:00
|
|
|
render=render
|
|
|
|
}
|