Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87b52c9ffc | ||
|
|
839851882f | ||
|
|
16503ae066 | ||
|
|
2af98a9a81 | ||
|
|
12ead8f71b | ||
|
|
76168ea4bb | ||
|
|
8ad6f0a24d | ||
|
|
2a83611372 | ||
|
|
a82fcee8e6 | ||
|
|
978beb1d21 | ||
|
|
c098e1147a | ||
|
|
972bea88be | ||
|
|
eff95cd28e | ||
|
|
ae9fba1206 | ||
|
|
4c2a7da14b | ||
|
|
50cd893a3e | ||
|
|
91529eeb53 | ||
|
|
9b16a03b66 | ||
|
|
b50605c3f1 | ||
|
|
a9c214e5d0 |
No files matched your search
|
Before Width: | Height: | Size: 131 B After Width: | Height: | Size: 139 B |
|
Before Width: | Height: | Size: 144 B After Width: | Height: | Size: 139 B |
|
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 135 B |
|
Before Width: | Height: | Size: 140 B After Width: | Height: | Size: 135 B |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 117 B |
|
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 147 B |
|
Before Width: | Height: | Size: 117 B After Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 147 B |
@@ -301,11 +301,11 @@
|
||||
],
|
||||
"bar_clear_transition": [
|
||||
{
|
||||
"x": 741,
|
||||
"x": 738,
|
||||
"y": -63
|
||||
},
|
||||
{
|
||||
"x": 741,
|
||||
"x": 738,
|
||||
"y": -87
|
||||
}
|
||||
],
|
||||
@@ -351,42 +351,42 @@
|
||||
],
|
||||
"bar_clear_transition_fade": [
|
||||
{
|
||||
"x": 732,
|
||||
"y": -63
|
||||
"x": 738,
|
||||
"y": -60
|
||||
},
|
||||
{
|
||||
"x": 732,
|
||||
"y": -87
|
||||
"x": 738,
|
||||
"y": -84
|
||||
}
|
||||
],
|
||||
"bar_clear_fade": [
|
||||
{
|
||||
"x": 732,
|
||||
"y": -63
|
||||
"x": 738,
|
||||
"y": -60
|
||||
},
|
||||
{
|
||||
"x": 732,
|
||||
"y": -87
|
||||
"x": 738,
|
||||
"y": -84
|
||||
}
|
||||
],
|
||||
"1p_bar_fade": [
|
||||
{
|
||||
"x": 732,
|
||||
"y": -31
|
||||
"x": 738,
|
||||
"y": -27
|
||||
},
|
||||
{
|
||||
"x": 732,
|
||||
"y": -87
|
||||
"x": 738,
|
||||
"y": -84
|
||||
}
|
||||
],
|
||||
"2p_bar_fade": [
|
||||
{
|
||||
"x": 732,
|
||||
"y": -31
|
||||
"x": 738,
|
||||
"y": -27
|
||||
},
|
||||
{
|
||||
"x": 732,
|
||||
"y": -87
|
||||
"x": 738,
|
||||
"y": -84
|
||||
}
|
||||
],
|
||||
"tamashii": [
|
||||
|
||||
|
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
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,9 @@
|
||||
"dan_confirm_yes_left": false,
|
||||
"songselect_2p_join": true,
|
||||
"costume_preset_slots": true,
|
||||
"dan_title_horizontal": true
|
||||
"dan_title_horizontal": true,
|
||||
"combo_color_tiers": true,
|
||||
"gauge_cell_fade_in": true
|
||||
}
|
||||
},
|
||||
"score_counter_pos": {
|
||||
@@ -540,6 +542,16 @@
|
||||
"note_arc_start_x_offset": {
|
||||
"x": 522
|
||||
},
|
||||
"gauge_cells": {
|
||||
"x": 50
|
||||
},
|
||||
"mod_badge_grid": {
|
||||
"x": 170,
|
||||
"y": 77,
|
||||
"width": 44,
|
||||
"height": 44,
|
||||
"font_size": 3
|
||||
},
|
||||
"gauge_hit_effect_note": {
|
||||
"x": 1738,
|
||||
"y": -126,
|
||||
|
||||
|
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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -383,13 +383,8 @@ function Entry:draw_credit(a, sel, blink_f, flash_row, flash_a, loop_rows)
|
||||
tex.draw_texture(self.cr_flash, { index = sel - 1, fade = a * pulse })
|
||||
end
|
||||
|
||||
if sel == 0 and self.text_cancel then
|
||||
self.text_cancel:draw({
|
||||
x = math.floor(CANCEL_CX - self.text_cancel.width / 2 + 0.5),
|
||||
y = math.floor(CANCEL_CY - self.text_cancel.height / 2 + 0.5),
|
||||
fade = a,
|
||||
})
|
||||
end
|
||||
-- The cabinet never shows a 「つかわない」 caption on this screen (the cancel side is
|
||||
-- just the un-armed state), so nothing is drawn for sel == 0.
|
||||
|
||||
if flash_row and flash_a and flash_a > 0.002 then
|
||||
tex.draw_texture(self.cr_flash, { index = flash_row - 1, fade = a * flash_a })
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -255,7 +255,6 @@ function SongSelect.new()
|
||||
-- the 演奏オプション panel, so the NEIRO slot is unreachable and is not drawn.
|
||||
local neiro_row = tex.get_skin_config("option_neiro_row")
|
||||
self._neiro_in_options = (neiro_row ~= nil) and (neiro_row.x >= 1)
|
||||
self._id_btn_neiro = (not self._neiro_in_options) and get_any("diff_select", "neiro") or nil
|
||||
self._id_btn_glow = tex.get_id("yellow_box", "s_crown_clear") -- 168x168 button cursor plate (moved off diff_select: every 1p/2p_* name there is drawn by the engine in 2P)
|
||||
self._id_small_crown = tex.get_id("diff_select", "difficulty_crown") -- 40x40, frame = crown (0 none)
|
||||
self._id_small_rank = tex.get_id("yellow_box", "s_crown_outline") -- 40x40, frame = rank-1 (moved off 1p_outline_back)
|
||||
@@ -485,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"),
|
||||
@@ -590,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
|
||||
@@ -1622,10 +1641,8 @@ function SongSelect:draw_song_diff_select(box)
|
||||
-- ROUND 4d (user): option = same 128 px plain icon as return, full opacity (main_diff_other_board
|
||||
-- 'option' / 'return' are the same-size boards; the cursor frame/glow geometry is shared in draw_selector)
|
||||
draw_centered(self._id_btn_option, DS_SLOT_X[DIFF_MODIFIER], DS_BTN_Y, 128, 128, { fade = fade })
|
||||
if self._id_btn_neiro then
|
||||
draw_centered(self._id_btn_neiro, DS_SLOT_X[DIFF_NEIRO], DS_NEIRO_Y, 80, 80,
|
||||
{ fade = fade * 0.35, x2 = 80 - 168, y2 = 80 - 168 })
|
||||
end
|
||||
-- (The faint 80 px NEIRO placeholder frame that used to sit under the return button
|
||||
-- is gone: the cabinet's course-select board has no such element.)
|
||||
|
||||
-- diff boards
|
||||
for i = 0, 3 do
|
||||
|
||||