Files
YataiDON14/Scripts/game/combo_announce.lua
T
2026-10-15 09:16:53 -04:00

79 lines
3.1 KiB
Lua

local SKIN_S = tex.get_screen_scale()
local SKIN = {
combo_announce_add_x = { x = 409.5 },
combo_announce_thousands_add_x = { x = 265.5 },
combo_announce_number_thousands_x = { x = -48 },
combo_announce_text_offset = { x = -30 * SKIN_S },
combo_announce_thousands_offset = { x = 0 },
combo_announce_hundreds_offset = { x = 0 },
}
-- Combo announce (100/200/.../1000+) using the number+add composite: this skin
-- has no per-digit "announce_digit" strip, only announce_number (hundreds 1-9)
-- and announce_add (thousands digit + "+" marker).
-- Ported from src/objects/game/combo_announce.cpp.
ComboAnnounce = {}
ComboAnnounce.__index = ComboAnnounce
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_text = tex.get_texture("game/combo/announce_text")
self.t_number = tex.get_texture("game/combo/announce_number")
self.t_add = tex.get_texture("game/combo/announce_add")
self.combo = 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 })
local combo = self.combo
if combo >= 1000 then
local thousands = math.floor(combo / 1000)
local remaining_hundreds = math.floor((combo % 1000) / 100)
local thousands_offset = SKIN.combo_announce_thousands_offset.x
local hundreds_offset = SKIN.combo_announce_hundreds_offset.x
if combo % 1000 == 0 then
if self.t_number then
tex.draw_texture(self.t_number, {
frame = thousands - 1,
x = SKIN.combo_announce_number_thousands_x.x,
y = y, fade = fade_value,
})
end
if self.t_add then
tex.draw_texture(self.t_add, { frame = 0, x = SKIN.combo_announce_add_x.x, y = y, fade = fade_value })
end
else
if thousands <= 5 and self.t_add then
tex.draw_texture(self.t_add, {
frame = thousands,
x = SKIN.combo_announce_thousands_add_x.x + thousands_offset,
y = y, fade = fade_value,
})
end
if remaining_hundreds > 0 and self.t_number then
tex.draw_texture(self.t_number, { frame = remaining_hundreds - 1, x = hundreds_offset, y = y, fade = fade_value })
end
end
if self.t_text then
local text_offset = SKIN.combo_announce_text_offset.x
tex.draw_texture(self.t_text, { x = -text_offset / 2, y = y, fade = fade_value })
end
elseif combo >= 100 then
if self.t_number then
tex.draw_texture(self.t_number, { frame = math.floor(combo / 100) - 1, x = 0, y = y, fade = fade_value })
end
if self.t_text then
tex.draw_texture(self.t_text, { x = 0, y = y, fade = fade_value })
end
end
end
return ComboAnnounce