dan doors: tear down outside SONG_SELECT / DAN_SELECT #9
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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -381,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 })
|
||||
|
||||
@@ -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
|
||||
|
||||