Compare commits

..
Author SHA1 Message Date
TaikoZhongandClaude Opus 5.5 809df3eb20 Song select: smaller board titles outside English
English uses the condensed font_en, but Japanese (font.ttf), Chinese (font_cn), Korean (font_kr)
and the other languages get full-width fonts, so at the same point size their song, folder and
header titles look far larger and fill the boards. Draw those titles at 0.8x when the language
is not English. English is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:23:46 +08:00
TaikoZhongandClaude Opus 5.5 9fd4d2a834 Update checksums.sha256 for #73
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:22:17 +08:00
GanYiZhong 8e23c2b4ee Merge pull request 'No retry mini-game after a failed song' (#73) from GanYiZhong/YataiDONNijiiro:feat/no-retry-game into main 2026-10-16 09:22:00 +02:00
TaikoZhongandClaude Opus 5.5 e174d11a46 No retry mini-game after a failed song
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:54:22 +08:00
TaikoZhongandClaude Opus 5.5 e5d6c5374b Update checksums.sha256 for #72
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 23:41:43 +08:00
GanYiZhong 6c0de25b1b Merge pull request 'Song select: show the song count on folders without an explanation' (#72) from GanYiZhong/YataiDONNijiiro:fix/folder-count-fallback into main 2026-10-15 17:41:21 +02:00
5 changed files with 26 additions and 11 deletions

No files matched your search

+1
View File
@@ -31,6 +31,7 @@
"width": 1920,
"height": 1080,
"options": {
"disable_retry_game": true,
"horizontal_song_select": true,
"one_menu_sort": true,
"option_skip_row": true,
@@ -54,6 +54,14 @@ local function draw_title(text, bx, cy, fade, max_w, min_scale)
text:draw({ x = math.floor(bx - w / 2 + 0.5), y = math.floor(cy - text.height / 2 + 0.5),
x2 = w - text.width, fade = fade })
end
-- Size factor for board / header titles. Only English gets the condensed font_en; every other
-- language's font (font.ttf, font_cn, font_tw, font_kr) is a full-width design whose titles read
-- much larger at the same point size, so they are drawn smaller.
local function title_scale()
local lang = tex.language and tex.language() or ""
if lang == "" or lang:sub(1, 2) == "en" then return 1.0 end
return 0.8
end
-- control-guide pill labels
local function draw_guide_label(t, cx, cy, fade)
if not t then return end
@@ -559,7 +567,7 @@ return {
DS_MARK_DECIDE_MS = DS_MARK_DECIDE_MS,
get_any = get_any, draw_centered = draw_centered, draw_centered_b = draw_centered_b,
draw_title = draw_title, draw_guide_label = draw_guide_label,
draw_title = draw_title, draw_guide_label = draw_guide_label, title_scale = title_scale,
outline = outline, board_outline = board_outline, clamp01 = clamp01,
draw_board = draw_board, draw_glow = draw_glow, glow_pulse = glow_pulse,
@@ -54,10 +54,11 @@ function SongSelect:folder_title(box)
local key = box.text_name
if not key or key == "" then return box:name() end
local ff = folder_frame(box)
key = ff .. "\0" .. key
local scale = base.title_scale()
key = ff .. "\0" .. scale .. "\0" .. key
local t = self._folder_titles[key]
if t == nil then
t = text.create_raw_text(box.text_name, FOLDER_TITLE_SIZE, { 255, 255, 255, 255 },
t = text.create_raw_text(box.text_name, math.floor(FOLDER_TITLE_SIZE * scale + 0.5), { 255, 255, 255, 255 },
board_outline(ff), false, outline(7.5), 2.0)
self._folder_titles[key] = t or false
end
@@ -404,7 +404,8 @@ function SongSelect:song_title(box)
local name = box.text_name
if not name or name == "" then return box:name() end
local gf = self._inside_frame or box:genre_frame()
local key = gf .. "\0" .. name -- the outline follows the genre, so it keys the cache
local scale = base.title_scale()
local key = gf .. "\0" .. scale .. "\0" .. name -- the outline follows the genre, so it keys the cache
local t = self._song_titles[key]
if t == nil then
if SONG_TITLE_SIZE == nil then
@@ -415,7 +416,7 @@ function SongSelect:song_title(box)
self._song_titles = {}
self._song_titles_n = 0
end
t = text.create_raw_text(name, SONG_TITLE_SIZE, { 255, 255, 255, 255 }, board_outline(gf),
t = text.create_raw_text(name, math.floor(SONG_TITLE_SIZE * scale + 0.5), { 255, 255, 255, 255 }, board_outline(gf),
false, outline(SONG_TITLE_OUTLINE), 2.0)
self._song_titles[key] = t or false
self._song_titles_n = self._song_titles_n + 1
@@ -425,9 +426,11 @@ end
function SongSelect:header_title(box)
local name = box.text_name or ""
if self._header_title_key ~= name then
local scale = base.title_scale()
if self._header_title_key ~= name or self._header_title_scale ~= scale then
self._header_title_key = name
self._header_title = text.create_raw_text(name, 48, { 255, 255, 255, 255 }, { 0, 0, 0, 255 }, false, outline(7.0), 2.0)
self._header_title_scale = scale
self._header_title = text.create_raw_text(name, math.floor(48 * scale + 0.5), { 255, 255, 255, 255 }, { 0, 0, 0, 255 }, false, outline(7.0), 2.0)
end
return self._header_title
end
@@ -436,9 +439,11 @@ function SongSelect:header_subtitle(box)
local sub = box.text_subtitle
if sub == nil then return box:subtitle_large() end -- engine without the binding
if sub == "" then return nil end
if self._header_sub_key ~= sub then
local scale = base.title_scale()
if self._header_sub_key ~= sub or self._header_sub_scale ~= scale then
self._header_sub_key = sub
self._header_sub = text.create_raw_text(sub, 30, { 255, 255, 255, 255 }, { 0, 0, 0, 255 }, false, outline(4.0), 2.0)
self._header_sub_scale = scale
self._header_sub = text.create_raw_text(sub, math.floor(30 * scale + 0.5), { 255, 255, 255, 255 }, { 0, 0, 0, 255 }, false, outline(4.0), 2.0)
end
return self._header_sub
end
+2 -2
View File
@@ -4185,7 +4185,7 @@ d21dc53600bab83b80352bad38cd598d216c6e1279a4d54a0a085ad82ad1430d *./Graphics/res
684c22481d2a0e4bb2d6dd67b5df87650e081edfeadffcc70c377c393334c06d *./Graphics/result/score/score_shinuchi_en.png
1c160a1a14016ea3a5f761b040db433420476363224011d615613af660e7d0e1 *./Graphics/result/score/score_shinuchi_ja.png
89c4d6afafb8010ec4da0b9f72f10f677ec8c87677fcb3d2c9edde923a5b5f9f *./Graphics/result/score/texture.json
1a53f6f1d79d40ccd2433a322c01e7ae87e9ba57cf61d237f0e6cd2dcc6052d1 *./Graphics/skin_config.json
b295ef692d6c0e4da459bfaea149b1cc919dfb191686bcb39d41d4e92ccd1018 *./Graphics/skin_config.json
a05d23f0997446d4db2b745602bff7fc3d2cdce968a1c24e078684d41cf2982c *./Graphics/song_select/animation.json
b74432db46ec6d7ec080fbee6df6029c1451e243d30813fcf597a21704de4e74 *./Graphics/song_select/box/background/0.png
c6514d44a9bc8e15e8523c5ede7663be3f7ab34f370ea364263ebf73998d0ab8 *./Graphics/song_select/box/background/1.png
@@ -4780,7 +4780,7 @@ d0e71023f6442b34b35e8fa92f34b29960f259c0255bf97ad468467b615808d3 *./Scripts/resu
49d6b0e063c3afbeb304a1f60d228c2bf7229d4604f08f50ba1382049259592e *./Scripts/song_select/file_navigator/box_back.lua
57a2328d147455939ebacbcb829fdd398b20e5139dc2ea100839385db4c64aaa *./Scripts/song_select/file_navigator/box_base.lua
6bf1a5c3117ae2cdb62add55f1848ffef0b5f3969ae4ea3aa4bd708039c0bf9a *./Scripts/song_select/file_navigator/box_dan.lua
2554a013f9cd802a677f559060592a8af613e795aa0ccd917615fc05a252be74 *./Scripts/song_select/file_navigator/box_folder.lua
8380451cdfe549b8921f9493f671646c348383f3ca45d2aff5ec2321088889a3 *./Scripts/song_select/file_navigator/box_folder.lua
34bf06ec62f9361213086359fc428d21d766ca3f79ff17a4a108bd025ed0950d *./Scripts/song_select/file_navigator/box_song.lua
6df8f4fc78403635889409829d681dae340df45423f019d717d4d8c72aa39c2b *./Scripts/song_select/modifier.lua
e7867c13a618c6f970eaee2826ac6d0efb5539f8b13488dfe5d1c2ece5a81b49 *./Scripts/song_select/option_panel.lua