Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87b52c9ffc | ||
|
|
839851882f | ||
|
|
16503ae066 | ||
|
|
2af98a9a81 | ||
|
|
972bea88be | ||
|
|
eff95cd28e | ||
|
|
ae9fba1206 | ||
|
|
a90ca40ea9 |
No files matched your search
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
@@ -191,5 +191,77 @@
|
||||
"mod_shinuchi": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_doron": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_abekobe": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_detarame": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_kimagure": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_1": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_2": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_3": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_4": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_5": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_6": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_7": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_8": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x1_9": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x2": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x2_5": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x3": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x3_5": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"mod_speed_x4": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
}
|
||||
}
|
||||
@@ -544,6 +544,13 @@
|
||||
},
|
||||
"gauge_cells": {
|
||||
"x": 50
|
||||
},
|
||||
"mod_badge_grid": {
|
||||
"x": 170,
|
||||
"y": 77,
|
||||
"width": 44,
|
||||
"height": 44,
|
||||
"font_size": 3
|
||||
},
|
||||
"gauge_hit_effect_note": {
|
||||
"x": 1738,
|
||||
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
@@ -66,5 +66,61 @@
|
||||
"mod_detarame": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_1": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_2": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_3": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_4": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_5": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_6": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_7": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_8": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x1_9": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x2": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x2_5": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x3": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x3_5": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
},
|
||||
"mod_speed_x4": {
|
||||
"x": 165,
|
||||
"y": 1174
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,8 +34,9 @@ function Entry.new()
|
||||
-- (`scratchpad/r15ae/z_1player_en.png`). Deliberate deviation, documented here: the
|
||||
-- fill colour is unchanged, so the label still reads exactly as the cabinet's black
|
||||
-- text, and it is legible in every language this skin ships.
|
||||
text.create_text("entry_credit_1p", { 0, 0, 0, 255 }, { 0, 0, 0, 255 }, false, 0, 0),
|
||||
text.create_text("entry_credit_2p", { 0, 0, 0, 255 }, { 0, 0, 0, 255 }, false, 0, 0),
|
||||
-- black ink with the cabinet's WHITE outline (same 7 stage-px border as the message)
|
||||
text.create_text("entry_credit_1p", { 0, 0, 0, 255 }, { 255, 255, 255, 255 }, false, 7.0 / tex.get_screen_scale(), 0),
|
||||
text.create_text("entry_credit_2p", { 0, 0, 0, 255 }, { 255, 255, 255, 255 }, false, 7.0 / tex.get_screen_scale(), 0),
|
||||
}
|
||||
-- the message is ONE string drawn in two colourways: the arcade stacks a black-tinted
|
||||
-- outline copy (ET3 via cmul (0,0,0)) under a white fill copy (ET5), and its blink
|
||||
@@ -230,7 +231,8 @@ local ROW_CY = { 432 + 72, 432 + 248 } -- 504 / 680
|
||||
-- CENTRE is box.top + box.h/2 + border -- independent of which font raster is used:
|
||||
local LABEL_INK_X = CREDIT_CX - 443 -- box.left(-450) + border(7), left-aligned
|
||||
local MSG_INK_X = CREDIT_CX + 190 -- box.left(-137) + border(7) + box.w/2(320)
|
||||
local TEXT_INK_DY = -9.5 -- box.top(-64.5) + box.h/2(48) + border(7)
|
||||
local TEXT_INK_DY = 0.5 -- box.top(-64.5) + box.h/2(48) + border(7), +10: measured
|
||||
-- against the cabinet the ink sat ~10 px above the pill centre
|
||||
local PAD5 = 9 -- OutlinedText pad for thickness 5: (int)(5*1.5)+2
|
||||
-- ROUND 15: the two player labels are now built with thickness 0 (see `text_credit_p` above),
|
||||
-- so their texture pad is (int)(0*1.5)+2 = 2, not 9. Using PAD5 here would shift the ink 7 px
|
||||
|
||||
@@ -359,7 +359,25 @@ end
|
||||
|
||||
-- ── half 1: SONG_SELECT (close + stamp) ─────────────────────────────────────
|
||||
-- Returns true when it drew anything.
|
||||
-- The rig only belongs to SONG_SELECT (close leg) and DAN_SELECT (open leg).
|
||||
-- Teardown used to rely on SongSelect:draw_top calling set_progress(-1), which never
|
||||
-- happens when the player backs out of DAN_SELECT straight to TITLE (Esc): the last
|
||||
-- engine_u stayed put and the global Indicator fallback kept painting the shut doors
|
||||
-- over the title screen. Drop every bit of state as soon as we are anywhere else.
|
||||
local function off_screen()
|
||||
local scr = tex.current_screen and tex.current_screen() or nil
|
||||
if scr == nil or scr == "SONG_SELECT" or scr == "DAN_SELECT" then return false end
|
||||
M.engine_u = nil
|
||||
M.armed = false
|
||||
M.armed_open = false
|
||||
M.open_t0 = nil
|
||||
M.t0 = nil
|
||||
M.open_held = false
|
||||
return true
|
||||
end
|
||||
|
||||
function M.draw()
|
||||
if off_screen() then return false end
|
||||
local u = M.progress()
|
||||
if not u then return false end
|
||||
|
||||
@@ -476,6 +494,7 @@ local INTRO_FROM = 5 -- clip label `in`
|
||||
local REVEAL_F = OPEN_FROM -- 182
|
||||
|
||||
function M.draw_open()
|
||||
if off_screen() then __hss_dan_intro = nil; return false end
|
||||
local req = __hss_dan_intro
|
||||
if req ~= nil then
|
||||
__hss_dan_intro = nil
|
||||
|
||||
@@ -484,6 +484,16 @@ function SongSelect:_opt_ids()
|
||||
speed = get_any("modifier", "mod_baisaku"),
|
||||
sanbai = get_any("modifier", "mod_sanbai"),
|
||||
yonbai = get_any("modifier", "mod_yonbai"),
|
||||
-- one badge per speed value, like the cabinet (x1.1 .. x1.9, x2, x2.5, x3, x3.5, x4)
|
||||
speed_by_value = {
|
||||
[11] = get_any("modifier", "mod_speed_x1_1"), [12] = get_any("modifier", "mod_speed_x1_2"),
|
||||
[13] = get_any("modifier", "mod_speed_x1_3"), [14] = get_any("modifier", "mod_speed_x1_4"),
|
||||
[15] = get_any("modifier", "mod_speed_x1_5"), [16] = get_any("modifier", "mod_speed_x1_6"),
|
||||
[17] = get_any("modifier", "mod_speed_x1_7"), [18] = get_any("modifier", "mod_speed_x1_8"),
|
||||
[19] = get_any("modifier", "mod_speed_x1_9"), [20] = get_any("modifier", "mod_speed_x2"),
|
||||
[25] = get_any("modifier", "mod_speed_x2_5"), [30] = get_any("modifier", "mod_speed_x3"),
|
||||
[35] = get_any("modifier", "mod_speed_x3_5"), [40] = get_any("modifier", "mod_speed_x4"),
|
||||
},
|
||||
display = get_any("modifier", "mod_doron"),
|
||||
inverse = get_any("modifier", "mod_abekobe"),
|
||||
kimagure = get_any("modifier", "mod_kimagure"),
|
||||
@@ -589,9 +599,19 @@ function SongSelect:draw_option_board(player, offset, rows, cursor, change)
|
||||
local icon
|
||||
local st = row.state or 0
|
||||
if row.name == "speed" then
|
||||
if st >= 40 then icon = ids.icon.yonbai
|
||||
elseif st >= 30 then icon = ids.icon.sanbai
|
||||
elseif st > 10 then icon = ids.icon.speed end
|
||||
if st > 10 then
|
||||
-- exact badge for the value; nearest lower step for anything in between
|
||||
local best
|
||||
for v, id in pairs(ids.icon.speed_by_value or {}) do
|
||||
if id and v <= st and (not best or v > best) then best = v end
|
||||
end
|
||||
icon = best and ids.icon.speed_by_value[best] or nil
|
||||
end
|
||||
if not icon then
|
||||
if st >= 40 then icon = ids.icon.yonbai
|
||||
elseif st >= 30 then icon = ids.icon.sanbai
|
||||
elseif st > 10 then icon = ids.icon.speed end
|
||||
end
|
||||
elseif row.name == "random" then
|
||||
if st == 2 then icon = ids.icon.detarame
|
||||
elseif st == 1 then icon = ids.icon.kimagure end
|
||||
|
||||