72 lines
2.2 KiB
Lua
72 lines
2.2 KiB
Lua
-- Combo announce (100/200/.../1000+) drawn from the per-digit announce_digit strip.
|
|
|
|
ComboAnnounce = {}
|
|
ComboAnnounce.__index = ComboAnnounce
|
|
|
|
local CELL = 104.0
|
|
local GROUP_CX = 204.0 -- combo_num's origin inside the scroll
|
|
local PITCH_WIDE = 64.0
|
|
local PITCH_NARROW = 54.0
|
|
local SX_NARROW = 0.85
|
|
local NARROW_X0 = -70.0 -- leftmost cell, local to GROUP_CX
|
|
local TEXTMC_WIDE = 392.0
|
|
local TEXTMC_NARROW = 398.0
|
|
local TEXT_DX = -84.0
|
|
local TEXT_W = 123.0
|
|
|
|
-- sx, pitch, first_cx (centre of the leftmost cell, scroll frame), textmc_x
|
|
local function layout(digits)
|
|
if digits <= 3 then
|
|
return 1.0, PITCH_WIDE, GROUP_CX - PITCH_WIDE * (digits - 1) * 0.5, TEXTMC_WIDE
|
|
end
|
|
if digits == 4 then
|
|
return SX_NARROW, PITCH_NARROW, GROUP_CX + NARROW_X0, TEXTMC_NARROW
|
|
end
|
|
local k = 4.0 / digits
|
|
local pitch = PITCH_NARROW * k
|
|
return SX_NARROW * k, pitch, GROUP_CX + 92.0 - pitch * (digits - 1), TEXTMC_NARROW
|
|
end
|
|
|
|
function ComboAnnounce.new(combo, player_num)
|
|
local self = setmetatable({}, ComboAnnounce)
|
|
local suffix = player_num .. "p"
|
|
self.t_bg = tex.get_texture("game/combo/announce_bg_" .. suffix)
|
|
self.t_digit = tex.get_texture("game/combo/announce_digit_" .. suffix)
|
|
self.t_text = tex.get_texture("game/combo/announce_text")
|
|
self.number = tostring(combo)
|
|
return self
|
|
end
|
|
|
|
function ComboAnnounce:draw(y, fade_value)
|
|
if not self.t_bg then return end
|
|
tex.draw_texture(self.t_bg, { y = y, fade = fade_value })
|
|
|
|
if not self.t_digit then return end
|
|
|
|
local n = #self.number
|
|
local sx, pitch, first_cx, textmc_x = layout(n)
|
|
local dw = CELL * sx
|
|
|
|
for i = 1, n do
|
|
local cx = first_cx + pitch * (i - 1)
|
|
tex.draw_texture(self.t_digit, {
|
|
frame = tonumber(self.number:sub(i, i)),
|
|
x = cx - dw * 0.5,
|
|
y = y,
|
|
x2 = dw - CELL, -- horizontal condense only; sy stays 1
|
|
fade = fade_value,
|
|
})
|
|
end
|
|
|
|
if self.t_text then
|
|
tex.draw_texture(self.t_text, {
|
|
x = textmc_x + sx * TEXT_DX,
|
|
y = y,
|
|
x2 = TEXT_W * (sx - 1.0),
|
|
fade = fade_value,
|
|
})
|
|
end
|
|
end
|
|
|
|
return ComboAnnounce
|