forked from Yonokid/YataiDONNijiiro
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8798eff85 | ||
|
|
2a82b000a2 | ||
|
|
8397c6b98e | ||
|
|
b5f9ee628e | ||
|
|
6025f7c02f | ||
|
|
601fed93d6 | ||
|
|
c14075b8fa |
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -83,12 +83,12 @@
|
||||
"y": 186
|
||||
},
|
||||
"exam_header": {
|
||||
"x": 420,
|
||||
"y": 568
|
||||
"x": 421,
|
||||
"y": 563
|
||||
},
|
||||
"exam_frame": {
|
||||
"x": 418,
|
||||
"y": 601
|
||||
"y": 596
|
||||
},
|
||||
"exam_box_top_left": {
|
||||
"x": 420,
|
||||
@@ -208,5 +208,7 @@
|
||||
"difficulty_level": {
|
||||
"x": 538,
|
||||
"y": 287
|
||||
}
|
||||
},
|
||||
"exam_best_pill": {},
|
||||
"exam_gauge_best_pill": {}
|
||||
}
|
||||
+26
-13
@@ -628,7 +628,8 @@
|
||||
"x": 632,
|
||||
"y": 262,
|
||||
"height": 60,
|
||||
"font_size": 36
|
||||
"font_size": 36,
|
||||
"outline": 2.6
|
||||
},
|
||||
"dan_subtitle": {
|
||||
"x": 632,
|
||||
@@ -834,10 +835,22 @@
|
||||
"height": 88,
|
||||
"font_size": 42
|
||||
},
|
||||
"dan_exam_best_label": {
|
||||
"font_size": 17,
|
||||
"text": {
|
||||
"en": "My Best",
|
||||
"ja": "自己ベスト",
|
||||
"zh": "个人最佳",
|
||||
"ko": "개인 최고"
|
||||
}
|
||||
},
|
||||
"dan_exam_best_value": {
|
||||
"font_size": 26
|
||||
},
|
||||
"dan_back_label": {
|
||||
"x": 0,
|
||||
"y": 89,
|
||||
"width": 60,
|
||||
"width": 52,
|
||||
"height": 88,
|
||||
"font_size": 42,
|
||||
"text": {
|
||||
@@ -952,11 +965,11 @@
|
||||
},
|
||||
"dan_exam_gauge_box": {
|
||||
"x": 436,
|
||||
"y": 615
|
||||
"y": 610
|
||||
},
|
||||
"dan_exam_score_box": {
|
||||
"x": 769,
|
||||
"y": 615,
|
||||
"y": 610,
|
||||
"height": 132
|
||||
},
|
||||
"dan_exam_seg": {
|
||||
@@ -965,16 +978,16 @@
|
||||
"width": 327
|
||||
},
|
||||
"dan_select_exam_border_text": {
|
||||
"x": 319,
|
||||
"y": 54,
|
||||
"font_size": 28,
|
||||
"outline": 2.0
|
||||
"x": 309,
|
||||
"y": 55,
|
||||
"font_size": 25,
|
||||
"outline": 2.6
|
||||
},
|
||||
"dan_select_gauge_border_text": {
|
||||
"x": 300,
|
||||
"y": 55,
|
||||
"font_size": 36,
|
||||
"outline": 2.6666666666666665
|
||||
"x": 291,
|
||||
"y": 67,
|
||||
"font_size": 32,
|
||||
"outline": 3.1
|
||||
},
|
||||
"dan_exam_value": {
|
||||
"x": 185,
|
||||
@@ -982,7 +995,7 @@
|
||||
},
|
||||
"dan_exam_label_pill": {
|
||||
"x": 28,
|
||||
"y": 2
|
||||
"y": -1
|
||||
},
|
||||
"dan_exam_value_left": {
|
||||
"x": 528
|
||||
|
||||
@@ -84,6 +84,137 @@ local function draw_level(level, x, y, f)
|
||||
tex.draw_texture(id, { frame = math.min(level, 11) - 1, x = x, y = y, fade = f })
|
||||
end
|
||||
|
||||
-- The course rows are set as the cabinet's: the song title alone (no subtitle line), and the
|
||||
-- exam values with narrow digits beside full-width 以上/未満 and a little room between them.
|
||||
-- The skin has one font, so each text is cut into runs of ASCII and of everything else, each
|
||||
-- run made on its own and scaled as it is drawn, the runs butted together. The parent is handed
|
||||
-- the box through a view whose song_subtitle_text gives nothing and whose song_title_text gives
|
||||
-- such a title, and the captions it makes for the exam values are made the same way. Only CJK
|
||||
-- languages are rescaled; the skin's font for the others is narrow already.
|
||||
local function cjk_language()
|
||||
local l = tex.language() or ""
|
||||
return l:find("^ja") or l:find("^zh") or l:find("^ko") or l == "tw" or l == "cn"
|
||||
end
|
||||
local TITLE_CJK = { latin = 1, cjk = 1.02, sy = 1, dy = 0, max_w = 1100 }
|
||||
local VALUE_CJK = { latin = 0.85, cjk = 1.0, sy = 1.0, dy = 0, gap = 8 }
|
||||
local TITLE_PLAIN = { latin = 1, cjk = 1, sy = 1, dy = 0, max_w = 1100 }
|
||||
local VALUE_PLAIN = { latin = 1, cjk = 1, sy = 1, dy = 0 }
|
||||
|
||||
local function runs_of(str)
|
||||
local runs, cur, ascii = {}, {}, nil
|
||||
for ch in str:gmatch("[%z\1-\127\194-\244][\128-\191]*") do
|
||||
local a = ch:byte() < 128
|
||||
if ascii ~= nil and a ~= ascii then
|
||||
runs[#runs + 1] = { text = table.concat(cur), ascii = ascii }
|
||||
cur = {}
|
||||
end
|
||||
cur[#cur + 1] = ch
|
||||
ascii = a
|
||||
end
|
||||
if #cur > 0 then runs[#runs + 1] = { text = table.concat(cur), ascii = ascii } end
|
||||
return runs
|
||||
end
|
||||
|
||||
-- create: text.create_raw_text as it was before any wrapping. The parts' sizes are read when
|
||||
-- they are used, since a text's texture (and size) may still be building when it is made.
|
||||
local function mixed_text(create, str, size, color, outline_color, outline, spacing, style)
|
||||
local pad = math.floor((outline or 0) * tex.get_screen_scale()) + 2
|
||||
local parts = {}
|
||||
for _, r in ipairs(runs_of(str)) do
|
||||
parts[#parts + 1] = { t = create(r.text, size, color, outline_color, false, outline, spacing),
|
||||
sx = r.ascii and style.latin or style.cjk }
|
||||
end
|
||||
local function layout()
|
||||
local function span(k)
|
||||
local x = 0
|
||||
for n, q in ipairs(parts) do
|
||||
q.x = x
|
||||
local next_sx = parts[n + 1] and parts[n + 1].sx * k or 0
|
||||
x = x + (q.t.width - pad) * q.sx * k - pad * next_sx
|
||||
if parts[n + 1] then x = x + (style.gap or 0) * k end
|
||||
end
|
||||
local last = parts[#parts]
|
||||
return last and (last.x + last.t.width * last.sx * k) or 0
|
||||
end
|
||||
local k, w = 1, span(1)
|
||||
if style.max_w and w > style.max_w then
|
||||
k = style.max_w / w
|
||||
w = span(k)
|
||||
end
|
||||
local h = 0
|
||||
for _, q in ipairs(parts) do h = math.max(h, q.t.height) end
|
||||
return k, w, h * style.sy
|
||||
end
|
||||
return setmetatable({
|
||||
text = str,
|
||||
draw = function(_, p)
|
||||
local k = layout()
|
||||
for _, q in ipairs(parts) do
|
||||
local sx = q.sx * k
|
||||
q.t:draw({ x = p.x + q.x, y = (p.y or 0) + style.dy, fade = p.fade,
|
||||
x2 = q.t.width * (sx - 1), y2 = q.t.height * (style.sy - 1) })
|
||||
end
|
||||
end,
|
||||
}, {
|
||||
__index = function(_, key)
|
||||
if key == "width" then local _, w = layout(); return w end
|
||||
if key == "height" then local _, _, h = layout(); return h end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local title_cache = {} -- by string, size and outline: texts are built once, not per frame
|
||||
local raw_create = text.create_raw_text -- the engine's, before draw_dan_open wraps it
|
||||
|
||||
local function course_view(box)
|
||||
local titles = {}
|
||||
return setmetatable({}, {
|
||||
__index = function(_, k)
|
||||
if k == "song_subtitle_text" then return function() return nil end end
|
||||
if k == "song_title_text" then
|
||||
return function(_, i)
|
||||
if titles[i] == nil then
|
||||
local t = box:song_title_text(i)
|
||||
local ok, str = pcall(function() return t and t.text end)
|
||||
local td = tex.get_skin_config("dan_title")
|
||||
if t and ok and type(str) == "string" and str ~= "" and td then
|
||||
local ol = td.outline >= 0 and td.outline or 5
|
||||
local key = str .. "\0" .. td.font_size .. "\0" .. ol
|
||||
title_cache[key] = title_cache[key]
|
||||
or mixed_text(raw_create, str, td.font_size,
|
||||
{ 255, 255, 255, 255 }, { 0, 0, 0, 255 }, ol, 2,
|
||||
cjk_language() and TITLE_CJK or TITLE_PLAIN)
|
||||
titles[i] = title_cache[key]
|
||||
else
|
||||
titles[i] = t or false -- an engine without OutlinedText.text
|
||||
end
|
||||
end
|
||||
return titles[i] or nil
|
||||
end
|
||||
end
|
||||
local v = box[k]
|
||||
if type(v) == "function" then
|
||||
return function(_, ...) return v(box, ...) end
|
||||
end
|
||||
return v
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
-- The clear stamps are the cabinet's six (box/clear_mark and yellow_box/clear_mark, frames
|
||||
-- 0..5 = red pass, full combo, all good, gold pass, full combo, all good), picked by the
|
||||
-- saved record's rank (2..7). An engine without box.record_rank only gives clear_mark
|
||||
-- (1 passed, 2 rank 7), which maps to frames 0 and 5.
|
||||
local function stamp_frame(box)
|
||||
local ok, rank = pcall(function() return box.record_rank end)
|
||||
if ok and type(rank) == "number" then
|
||||
return rank >= 2 and math.min(rank, 7) - 2 or nil
|
||||
end
|
||||
if box.clear_mark == 1 then return 0 end
|
||||
if box.clear_mark == 2 then return 5 end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- The course's clear stamp (yellow_box/clear_mark) sits over the dan plate and Don, as the
|
||||
-- cabinet's stamp_detail does (it is above don_1p). The parent draws it with the box, under
|
||||
-- both, so it is held back there and drawn with the title, which the engine draws after
|
||||
@@ -109,7 +240,16 @@ if parent_open then
|
||||
end
|
||||
return draw(id, p)
|
||||
end
|
||||
local ok, err = pcall(parent_open, self, box)
|
||||
local create = text.create_raw_text
|
||||
text.create_raw_text = function(str, size, color, outline_color, vertical, outline, spacing, ...)
|
||||
if vertical or type(str) ~= "string" then -- only the exam value captions
|
||||
return raw_create(str, size, color, outline_color, vertical, outline, spacing, ...)
|
||||
end
|
||||
return mixed_text(raw_create, str, size, color, outline_color, outline, spacing,
|
||||
cjk_language() and VALUE_CJK or VALUE_PLAIN)
|
||||
end
|
||||
local ok, err = pcall(parent_open, self, course_view(box))
|
||||
text.create_raw_text = create
|
||||
tex.draw_texture = draw
|
||||
if not ok then error(err, 0) end
|
||||
local f = box.open_fade.attribute
|
||||
@@ -119,9 +259,8 @@ if parent_open then
|
||||
draw_level(box:song_level(i), i * (off.x or 0), i * (off.y or 0), f)
|
||||
end
|
||||
end
|
||||
if stamp and box.clear_mark > 0 then
|
||||
held_stamp = { id = stamp, frame = box.clear_mark - 1, fade = f }
|
||||
end
|
||||
local sf = stamp and stamp_frame(box)
|
||||
if sf then held_stamp = { id = stamp, frame = sf, fade = f } end
|
||||
end
|
||||
|
||||
function DanSelect:draw_title()
|
||||
@@ -139,17 +278,21 @@ end
|
||||
-- across, squeezed to the chip, for other languages.
|
||||
local CJK = { ja = true, zh = true, ko = true, tw = true, cn = true }
|
||||
local back_label
|
||||
local BACK_ACROSS_SIZE = 0.7 -- size of a label set across, against dan_back_label.font_size
|
||||
local function get_back_label()
|
||||
if back_label == nil then
|
||||
local cfg = tex.get_skin_config("dan_back_label")
|
||||
if not cfg then back_label = false; return false end
|
||||
local lang = tex.language()
|
||||
local vertical = CJK[lang] or CJK[lang:sub(1, 2)] or false
|
||||
-- a word set across has only the chip's width, so it takes a smaller size than the
|
||||
-- vertical labels rather than being squeezed hard
|
||||
local size = vertical and cfg.font_size or math.floor(cfg.font_size * BACK_ACROSS_SIZE + 0.5)
|
||||
back_label = {
|
||||
cfg = cfg,
|
||||
vertical = vertical,
|
||||
main = text.create_raw_text(tex.skin_text("dan_back_label"), cfg.font_size,
|
||||
{ 0, 0, 0, 255 }, { 0, 0, 0, 255 }, vertical, 0, 2),
|
||||
main = raw_create(tex.skin_text("dan_back_label"), size,
|
||||
{ 0, 0, 0, 255 }, { 0, 0, 0, 255 }, vertical, 0, 2),
|
||||
}
|
||||
end
|
||||
return back_label
|
||||
@@ -204,8 +347,9 @@ function DanSelect:draw_dan_closed(box)
|
||||
local bx, fade, y = box:box_x(), box.fade.attribute, chip_drop(box)
|
||||
local id = tex.get_texture("dan_select/box/folder")
|
||||
if id then tex.draw_texture(id, { frame = box.dan_color, x = bx, y = y, fade = fade }) end
|
||||
local mark = box.clear_mark > 0 and tex.get_texture("dan_select/box/clear_mark")
|
||||
if mark then tex.draw_texture(mark, { frame = box.clear_mark - 1, x = bx, y = y, fade = fade }) end
|
||||
local sf = stamp_frame(box)
|
||||
local mark = sf and tex.get_texture("dan_select/box/clear_mark")
|
||||
if mark then tex.draw_texture(mark, { frame = sf, x = bx, y = y, fade = fade }) end
|
||||
draw_chip_name(box, bx, y, fade)
|
||||
end
|
||||
|
||||
@@ -219,10 +363,11 @@ end
|
||||
-- The cursor's glow goes over the chip, its emblem and name (they grey under it, as on the
|
||||
-- cabinet) but not over the clear stamp, which is drawn again on top of it.
|
||||
local function draw_chip_front(box)
|
||||
if box.is_back or box.clear_mark <= 0 then return end
|
||||
local mark = tex.get_texture("dan_select/box/clear_mark")
|
||||
if box.is_back then return end
|
||||
local sf = stamp_frame(box)
|
||||
local mark = sf and tex.get_texture("dan_select/box/clear_mark")
|
||||
if mark then
|
||||
tex.draw_texture(mark, { frame = box.clear_mark - 1, x = box:box_x(), y = chip_drop(box),
|
||||
tex.draw_texture(mark, { frame = sf, x = box:box_x(), y = chip_drop(box),
|
||||
fade = box.fade.attribute })
|
||||
end
|
||||
end
|
||||
@@ -263,3 +408,82 @@ function DanSelect:draw_cursor(pos, now_ms, moved_ms)
|
||||
if selected then draw_chip_front(selected) end
|
||||
return true
|
||||
end
|
||||
|
||||
-- Each exam's 自己ベスト row, as on the cabinet: a white pill under the value with the label
|
||||
-- on its left and the saved best on its right (box:exam_best / exam_song_best). With no best
|
||||
-- (a course never played, or an engine without them) the row is not drawn at all, pill
|
||||
-- included. The gauge box gets yellow_box/exam_gauge_best_pill, the right-hand boxes
|
||||
-- yellow_box/exam_best_pill, one per song segment. The boxes are walked as the parent's
|
||||
-- draw_exam_grid walks them.
|
||||
local BEST_GAUGE = { x = 10, y = 116, w = 301 } -- exam_gauge_best_pill, from the box
|
||||
local BEST_RIGHT = { x = 11, y = 86, w = 317 } -- exam_best_pill, from the box (+ seg dx)
|
||||
local BEST_H = 31
|
||||
local BEST_LABEL_X, BEST_VALUE_R = 8, 14 -- label from the pill's left, value from its right
|
||||
|
||||
local best_texts = {}
|
||||
local function best_text(key, str)
|
||||
local cfg = tex.get_skin_config(key)
|
||||
if not cfg or str == nil or str == "" then return nil end
|
||||
local k = key .. "\0" .. str
|
||||
if best_texts[k] == nil then
|
||||
best_texts[k] = raw_create(str, cfg.font_size, { 20, 20, 20, 255 }, { 0, 0, 0, 255 },
|
||||
false, 0, 1) or false
|
||||
end
|
||||
return best_texts[k] or nil
|
||||
end
|
||||
|
||||
local function call(box, name, ...)
|
||||
local ok, fn = pcall(function() return box[name] end)
|
||||
if not ok or type(fn) ~= "function" then return nil end
|
||||
local ok2, v = pcall(fn, box, ...)
|
||||
return ok2 and v or nil
|
||||
end
|
||||
|
||||
local function draw_best_row(pill, value, etype, px, py, pw, f)
|
||||
if value == nil then return end
|
||||
if pill then tex.draw_texture(pill, { x = px, y = py, fade = f }) end
|
||||
local label = best_text("dan_exam_best_label", tex.skin_text("dan_exam_best_label"))
|
||||
if label then
|
||||
label:draw({ x = px + BEST_LABEL_X, y = py + (BEST_H - label.height) / 2, fade = f })
|
||||
end
|
||||
local str = tostring(value) .. (etype == "gauge" and " %" or "")
|
||||
local t = best_text("dan_exam_best_value", str)
|
||||
if t then
|
||||
t:draw({ x = px + pw - BEST_VALUE_R - t.width, y = py + (BEST_H - t.height) / 2, fade = f })
|
||||
end
|
||||
end
|
||||
|
||||
local parent_grid = DanSelect.draw_exam_grid
|
||||
if parent_grid then
|
||||
function DanSelect:draw_exam_grid(box, f)
|
||||
parent_grid(self, box, f)
|
||||
local pill = tex.get_texture("dan_select/yellow_box/exam_best_pill")
|
||||
local gauge_pill = tex.get_texture("dan_select/yellow_box/exam_gauge_best_pill")
|
||||
local gb = tex.get_skin_config("dan_exam_gauge_box") or { x = 436, y = 610 }
|
||||
local sb = tex.get_skin_config("dan_exam_score_box") or { x = 769, y = 610, height = 132 }
|
||||
local sg = tex.get_skin_config("dan_exam_seg") or { width = 327 }
|
||||
local pitch = (sb.height and sb.height > 0) and sb.height or 132
|
||||
local seg_dx = (sg.width and sg.width > 0) and sg.width or 327
|
||||
local right_row, gauge_used = 0, false
|
||||
for i = 0, box:exam_count() - 1 do
|
||||
local etype = box:exam_type(i)
|
||||
local left = (etype == "gauge" and not gauge_used)
|
||||
if left then gauge_used = true end
|
||||
if left then
|
||||
draw_best_row(gauge_pill, call(box, "exam_best", i), etype,
|
||||
gb.x + BEST_GAUGE.x, gb.y + BEST_GAUGE.y, BEST_GAUGE.w, f)
|
||||
elseif right_row < 3 then
|
||||
local by = sb.y + pitch * right_row
|
||||
local gothrough = box:exam_gothrough(i)
|
||||
local segs = gothrough and 1 or math.min(box:song_count(), 3)
|
||||
for k = 0, segs - 1 do
|
||||
local px = sb.x + BEST_RIGHT.x + seg_dx * k
|
||||
local py = by + BEST_RIGHT.y
|
||||
local v = gothrough and call(box, "exam_best", i) or call(box, "exam_song_best", i, k)
|
||||
draw_best_row(pill, v, etype, px, py, BEST_RIGHT.w, f)
|
||||
end
|
||||
right_row = right_row + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+32
-18
@@ -3382,20 +3382,20 @@ d56d768e8db76b6e945c7725ca480bd3d01424a10b705ffe5c007f722a298571 *./Graphics/dan
|
||||
bb5d9cbce1b83f26cd3564d96beed21dadc05ee609cb9e69b04310c4b297a871 *./Graphics/dan_select/yellow_box/exam_box_top_left.png
|
||||
7dcce8395c86653a21e229373d40c6ceabe83614a324b42a72e09059c61c6034 *./Graphics/dan_select/yellow_box/exam_box_top.png
|
||||
f75307055462832bd99c82a5fe6729f47a4e29f63414a1065af11b30320d766c *./Graphics/dan_select/yellow_box/exam_box_top_right.png
|
||||
2455c80a86f4003cfc32f0f08227bf2d96378bb72be5d483db86932010c471a3 *./Graphics/dan_select/yellow_box/exam_combo.png
|
||||
1bff70c16e8317b31c917e471c0b8e142e5fd2c61369bf631778f46559a10429 *./Graphics/dan_select/yellow_box/exam_combo.png
|
||||
f33b63c29cdcf63cf002f0cac08f96015ed299e25d1707f045a6a544161716da *./Graphics/dan_select/yellow_box/exam_frame.png
|
||||
a754e1f57dbd22ba06ea57ccc84d326bc866a801e6922d28638d75dc6c005245 *./Graphics/dan_select/yellow_box/exam_gauge_box.png
|
||||
7b7c40a55e76b262c1497d290ee3b457d1c3f0eae47d91f50563d011ae4b6997 *./Graphics/dan_select/yellow_box/exam_gauge.png
|
||||
8b39d7613a1d267671c38bbfc5c1295650f3f836f2d2ce326a591ccf963d5c78 *./Graphics/dan_select/yellow_box/exam_gauge.png
|
||||
edd28bdb9dede112547425eda5cf99277a5d48e82fae8707fb97d76a080065f5 *./Graphics/dan_select/yellow_box/exam_header.png
|
||||
3b186760910e39d5e7f2f87f1aa26037dab39116697fbe517499ade1f1e64553 *./Graphics/dan_select/yellow_box/exam_hit.png
|
||||
4425a0a162803b976266e153118ca93f8a82b128ec77c6a1316f5d2544b0b7fb *./Graphics/dan_select/yellow_box/exam_judgebad.png
|
||||
748b89b1d19ee060581238d824a00bea5e8dd93dc0a3118a8f34dcd1216af1c6 *./Graphics/dan_select/yellow_box/exam_judgegood.png
|
||||
8a30d3014394dde6c4764f800ddf178681cc038d35e18d33dc0f2738638edcb2 *./Graphics/dan_select/yellow_box/exam_judgeperfect.png
|
||||
3298eec052791aa93a1b55d4a68f0f60346885465b4382226254cdb6237f4562 *./Graphics/dan_select/yellow_box/exam_hit.png
|
||||
f6a859d2565cfe7cc12d1e8ae5030a2175839505c7d4cf325f4114f517c1b068 *./Graphics/dan_select/yellow_box/exam_judgebad.png
|
||||
02732c307ce94e16badb7097e4e1c00284ca0168daad756a895a7f6759e2fe66 *./Graphics/dan_select/yellow_box/exam_judgegood.png
|
||||
97a88b44d48582c936f8554d962a73c3ba2f107ac93933962c605a9d29068e09 *./Graphics/dan_select/yellow_box/exam_judgeperfect.png
|
||||
1ae7e1e71602e7d131df4de6bba65120437556e2245e2609d622a5f33bd71d85 *./Graphics/dan_select/yellow_box/exam_less.png
|
||||
de8dc6bf524e3fee2cb1ad1af8f6b5a8d9b4ea2b7ff8ad8972ef9f3df40ef7f9 *./Graphics/dan_select/yellow_box/exam_more.png
|
||||
fd5fbc75d68c3db99731f988e99a3a042dba89e848e31f461527cbeb52af7257 *./Graphics/dan_select/yellow_box/exam_percent.png
|
||||
169352110d05d5edf708f9397e5e2a09610ac8bfb2c99491b2be120d140d141d *./Graphics/dan_select/yellow_box/exam_roll.png
|
||||
f910fbdfa1d7a342fcfa7a6ceba1cac5a510540beb0c9ea8bb466e2d4d376d86 *./Graphics/dan_select/yellow_box/exam_score.png
|
||||
e987122b780b2121c5d6fc50c38234c53fcd4dcf0fae578cf02bdcecb122130f *./Graphics/dan_select/yellow_box/exam_roll.png
|
||||
9fc89499a1be002343efbcf6f57cca44be72e79fe13e027e09003e7501cff527 *./Graphics/dan_select/yellow_box/exam_score.png
|
||||
07e16b16076866dde8300a6d9cc46bf39865cbf1a028a4c289fd49e838a310fd *./Graphics/dan_select/yellow_box/exam_seg_label/0.png
|
||||
6d807e5bde1f182b52dbf547ca613f51725a102f91ac685827e39d3d1ac35111 *./Graphics/dan_select/yellow_box/exam_seg_label/1.png
|
||||
d1f084583e4afc5a51abdd8b00ab4124205be8b4351b968a150761ad5cdd8196 *./Graphics/dan_select/yellow_box/exam_seg_label/2.png
|
||||
@@ -3457,7 +3457,7 @@ aae5cba4ab39d7b29c44bb43c79ae59c6ed7ddd151c8840bfeaf2bb4d6278c3d *./Graphics/dan
|
||||
ac0e5f9f354f6059ea7687a706221ff863d317f6783f854897f023a5315e8d56 *./Graphics/dan_select/yellow_box/song_label/0.png
|
||||
340ea6974d9c74280d7532d6eb66b7eab2fd2634071325f4ba4654edb89d9e8e *./Graphics/dan_select/yellow_box/song_label/1.png
|
||||
5839347db9c87f848fe112052938d42de85d10448df52626d27d3b39147c9bdd *./Graphics/dan_select/yellow_box/song_label/2.png
|
||||
a1a08080cb7e334b43b5af5e836cefab6000c2c768779592e1e7452239192820 *./Graphics/dan_select/yellow_box/texture.json
|
||||
f5a435913553206af929679894707040cef439c9d4d1b4f253fbaaa89f8b4544 *./Graphics/dan_select/yellow_box/texture.json
|
||||
52b3b7c93ee491e74e3e4a627f77dd1b1689a58be3f0d814bf1fafc5cb101ec1 *./Graphics/dan_select/yellow_box/total_notes_bg.png
|
||||
ded547deee71bf781f90e2d9c29ab2c0a8f3dbf1ec5f745a345859ebf7810184 *./Graphics/dan_select/yellow_box/total_notes_counter/0.png
|
||||
caea6b27ce43889309a7d27150b37914ef64725dbd0765eab2c996839699b8d3 *./Graphics/dan_select/yellow_box/total_notes_counter/1.png
|
||||
@@ -3613,7 +3613,7 @@ d50720de35ff3221e810ad8e784fe8d7e51a74261b4ec28ff3124804abf01fac *./Graphics/gam
|
||||
7411ad455a701ea3033ae48bdd19451eff4ac62f90d0b086628435b04edb59ec *./Graphics/game/dan_info/frame/5.png
|
||||
3f8fcdabe54c971d4786f731647c441cb3ae22bbf125b9bc01eddc2b6ca5530c *./Graphics/game/dan_info/frame/6.png
|
||||
5b5e48222e6713ec44a8a14f6eb46b2839f8cc4588953973a38c37b9e77b162d *./Graphics/game/dan_info/gauge_border_cell.png
|
||||
060e1ae8a3ffcdd68fdf642a80c86263295536652c41dbf76817aacd0c0128e9 *./Graphics/game/dan_info/gauge_border_plate.png
|
||||
f17f353558be8f2c6e3a3be114c03611384c1475d292e8b38bd176e60299c953 *./Graphics/game/dan_info/gauge_border_plate.png
|
||||
6b0159e72495340ca85bad5fac95adab1410c81ad8ddfe5675c33d3a9866e437 *./Graphics/game/dan_info/rank_plate/0.png
|
||||
6a0be1a970b16183cf8b69f7dc0cd14da5d31881cdacc0ec693fffdf257506b2 *./Graphics/game/dan_info/rank_plate/10.png
|
||||
d052e74c3f374621c2453243b608d4acbb80c200c08e2c77518c619253a1cfe3 *./Graphics/game/dan_info/rank_plate/11.png
|
||||
@@ -4060,7 +4060,7 @@ f1f354444c95251b136b0feac381dacddcc33bd0f324a912178bfcb0cd2b9846 *./Graphics/gam
|
||||
16bd30db3aa41354ccc725443d31306e221bc721f6fe4d8e31d060ce1c866c51 *./Graphics/game/gauge_dan/tamashii_fire/7.png
|
||||
1370bfba37463f76ab8b8f40f308cab7b29982eacbae068fcd46df5f1e2dacd0 *./Graphics/game/gauge_dan/tamashii_overlay.png
|
||||
1b80a57d99a7c80afc2271f261471059d39341301f3b4d97b208d86ecc5dce84 *./Graphics/game/gauge_dan/tamashii.png
|
||||
55ccfbfc6943133a75ccf4f08d603203bb6afbcb06ae1a9487b9dc74e71c9703 *./Graphics/game/gauge_dan/texture.json
|
||||
9720b853a141842433d45ae706c7e7ecec8e918b37a61cce9757e3b2fbbc9548 *./Graphics/game/gauge_dan/texture.json
|
||||
e0f89dc98bc3cd5e36fe43afbf3d9ce142f69be881931e0a9733700e0df30628 *./Graphics/game/gauge/hit_effect_circle_big.png
|
||||
e0f89dc98bc3cd5e36fe43afbf3d9ce142f69be881931e0a9733700e0df30628 *./Graphics/game/gauge/hit_effect_circle.png
|
||||
8ce6d952089be1e8de286949f0287f34ad191b82d3bf3ad174d15ccb1e6232d1 *./Graphics/game/gauge/hit_effect.png
|
||||
@@ -4374,7 +4374,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
|
||||
4675dc41015467ea66ecb77875e526ea50b371c48bb55118d201bb4f79b58ade *./Graphics/skin_config.json
|
||||
43ae48b9d4608268343a20d61c74bd323000f47a15ef81c512ef9c0443532f0f *./Graphics/skin_config.json
|
||||
a05d23f0997446d4db2b745602bff7fc3d2cdce968a1c24e078684d41cf2982c *./Graphics/song_select/animation.json
|
||||
27e427b29774e04dc739b1c58a7205565de88cea6370876b623f8e13a7106b5c *./Graphics/song_select/box/back_graphic.png
|
||||
b74432db46ec6d7ec080fbee6df6029c1451e243d30813fcf597a21704de4e74 *./Graphics/song_select/box/background/0.png
|
||||
@@ -4837,7 +4837,7 @@ eb2bb15e87cc83d66b320e0e4cbcbd2d5385881f36eca27fe73740439055ef6c *./Scripts/anim
|
||||
8736233c8c570fb4c1870248b07b616b4cf48528ebe269c9f06f8257edd7c9e3 *./Scripts/background/bg_collabs/a3.lua
|
||||
e4ff773b74b780eb310a43053399f33a34b16885627d42c5255bafaf05d53734 *./Scripts/background/bg_collabs/animal.lua
|
||||
60c12b294fff74b15c7f54001374434d3f88572129336de622a809130b1fa73d *./Scripts/background/bg_collabs/buttoburst.lua
|
||||
7a20ec7bf715a91d7d4c1e53814d03a7e9b638540489b686dc6c29804a4fad03 *./Scripts/background/bg_collabs/dan.lua
|
||||
21c0d0ad67c6b581da7c1fd5b6c1e5ebaff49027b21a1d33aba3e13dec003a48 *./Scripts/background/bg_collabs/dan.lua
|
||||
e514657c28c18d6b913e24b416694cd9e0dc4f61d229b42e423ea62ac5ff69a3 *./Scripts/background/bg_collabs/funassyi.lua
|
||||
7fa5d269efdb938c275a25e73d2cbebbad610fb49cfc6a17d8e56ad9bd3d5b41 *./Scripts/background/bg_collabs/imas.lua
|
||||
d6a27cd79db76d7cdb3fcf70134fadae0679e728f2b2bd615ce4b8c465b44c28 *./Scripts/background/bg_collabs/imas_sidem.lua
|
||||
@@ -4965,7 +4965,7 @@ d398c362848a29b81603c57dbefac089a3b2f2aea5accb43bdc76a8695ec0e37 *./Scripts/back
|
||||
6aa3e90eb09ac7a5a3ee5b6ec060958225733738d7e8116b6662e67aa010196f *./Scripts/background/bg_objects/collab_dancer_model.lua
|
||||
9bfbffa09eeafc2836bac7391fdbb277899342e6f07cfe366d6f8da6701c0d3d *./Scripts/background/bg_objects/collab_parent.lua
|
||||
7c753b553e1cc4fbe2e066442a812be488d20864fed6b8e0c3834a18bddddf77 *./Scripts/background/bg_objects/dancer.lua
|
||||
94670a496a7cc38c0f87a3dce12384aa5875e121e576afd9d955b834e5b142f3 *./Scripts/background/bg_objects/dan_info.lua
|
||||
816763b6a04858853a6519ea753f07e57a5d94d7754430caeec9f355b8ea262e *./Scripts/background/bg_objects/dan_info.lua
|
||||
1ce550bce8d8d814b48847e564acb0bfae5062ecd6fa97ddc39914e8692f9569 *./Scripts/background/bg_objects/donbg/1.lua
|
||||
1ce550bce8d8d814b48847e564acb0bfae5062ecd6fa97ddc39914e8692f9569 *./Scripts/background/bg_objects/donbg/2.lua
|
||||
1ce550bce8d8d814b48847e564acb0bfae5062ecd6fa97ddc39914e8692f9569 *./Scripts/background/bg_objects/donbg/3.lua
|
||||
@@ -5005,7 +5005,7 @@ f204455c907d3e0e7affb89db3649a709a27d528d84cc58d51a7d8cfaa1d3deb *./Scripts/back
|
||||
4e17bf53815d1e586fdba5f3501d6f2d9935ad5604da871d2e7e89c87499aedd *./Scripts/background/dancer_data/dancer_3.lua
|
||||
6e2b3c136611c688cdfbe44b0bbcb9d25c2ab647903246b07f2aef9baa6bab0b *./Scripts/background/dancer_data/dancer_4.lua
|
||||
3a4f1f45bb54c4303dc97afcc6f67df831d6d6011a2264baed3d933c789d210e *./Scripts/background/dancer_data/dancer_5.lua
|
||||
44210159402b5a357ee1fb8f8420836d4a81d063e5ed9d2a03e4c1955d3ef1c6 *./Scripts/dan_select/dan_select.lua
|
||||
419fefce6576d4eca53b61ce8dcf7103f3184b2a2aa17916841a62699abaf661 *./Scripts/dan_select/dan_select.lua
|
||||
020f929896e3f58c27bf54881afbbf1597ebd14951b5476f9a97a29fa670e2fc *./Scripts/entry/box.lua
|
||||
0a941cea73b6a81f2c92219be139a43f5902067ce468ffd189520395b4739c91 *./Scripts/entry/costume_menu.lua
|
||||
83fc6c160c85a68a75d146f455cb4e18fc962c23a0020d28ac6943a1843db504 *./Scripts/entry/entry.lua
|
||||
@@ -5022,7 +5022,7 @@ f4de8faceba1417bbdf0c408275f36b91022c93539178bd2d59018623bac759b *./Scripts/game
|
||||
826c02cac90412a42722d0fa23e5f08878b00f32ca564607d08bd36fdecc0de4 *./Scripts/game/ending_anim/rank_hud_out.lua
|
||||
6c885099876d77ea14d4588edb3de5105ecef7f8b83e2787a3bdb25918e5b920 *./Scripts/game/ending_anim/rank_result_kiwami.lua
|
||||
02a2a424b68fce7b172807ce60df5c2b41121cb65f2edcc5a1e43b77702a4008 *./Scripts/game/ending_anim/rank_result.lua
|
||||
8f8f0910e33b6cc90646e81c2674a3c31004106ff9fe2b38788bcd2067691ffc *./Scripts/game/gauge.lua
|
||||
a66e532c7d4f3371300089e0266e4cd7b0e4574870f1aef0fb1fbead5a5c8709 *./Scripts/game/gauge.lua
|
||||
53ac15fdeee0ffc98670e128ff3cddc0ba66e0e8cbd91ab440628b0fd7d804ff *./Scripts/game_over/game_over.lua
|
||||
6e4a0e75474a06dc9181e4c1c6de9a7cb9f5019e155d7275ce84b39712f36aeb *./Scripts/global/allnet_indicator.lua
|
||||
a24e5eb9ac289325facb2fe023b16a343ef1ecf7e57cbb988bb81e2514665cf3 *./Scripts/global/coin_overlay.lua
|
||||
@@ -5336,9 +5336,9 @@ c567acc69bf6e9a239e66a195f2d65a7ec6455acff3ee248f4302477d01c193d *./Videos/attra
|
||||
54f561d89b48feff2fa31999e7485e370f2c55b9f360102b2014310078d20fc3 *./Videos/attract_videos/attractdemo_kor.mp4
|
||||
3801f84ff85f56376828abef0b12bd8a1e336b4bc739557bc0ccfa386d79668e *./Videos/op_videos/title.mp4
|
||||
108925ad487038a40cb711be11c751b31205a2e9527e97f2dec4410503fe5cb6 *./Graphics/dan_select/box/clear_mark/0.png
|
||||
8ce42b15149894471e7644a836613106a9302004211a084b6144ef66d11be07f *./Graphics/dan_select/box/clear_mark/1.png
|
||||
0f06e751125fe6c733d59dc16b7c71aba2a0463c4436d8618782367faed4fd49 *./Graphics/dan_select/box/clear_mark/1.png
|
||||
433af3c4eef82636a70592e1bebaa44d9b8f88da5abe240fe55e06535d659110 *./Graphics/dan_select/yellow_box/clear_mark/0.png
|
||||
15c702977afc97112aff1d435e87040ea3262ecd66fcfb9ca4dfa769311b23ff *./Graphics/dan_select/yellow_box/clear_mark/1.png
|
||||
d4b24aa80e9e804737a7dbb45e9ea1bf6e1c0e2c893fb892102cde28c721c3bb *./Graphics/dan_select/yellow_box/clear_mark/1.png
|
||||
c2153f77e11087fcb078ae38527fa83bef29791e3700e30cc87fec4405a66d0f *./Graphics/dan_select/yellow_box/difficulty_ura.png
|
||||
1fc18a7b407b17bf7adeae511968998c6a667ae0b6eb008895dc9867a6714dd6 *./Graphics/dan_select/back/folder.png
|
||||
a7d33686dc618520da047779b3a47be6219940d386b32c1c3e54bb5aceae22ae *./Graphics/dan_select/back/texture.json
|
||||
@@ -5353,3 +5353,17 @@ e6834082724df4028007b8fac86ed3b8cbccb3741ff14ca7e227d0ad03a27158 *./Graphics/dan
|
||||
eed585daf6e7675be2c51f9dd315392400b8075a4dbbc7de8e9670e0cc76e2fd *./Graphics/dan_select/yellow_box/difficulty_level/7.png
|
||||
23579f9c3f6d2e54d3df4ad8b64bdddd5a014d3d989af8e0a0b13a0383e2d173 *./Graphics/dan_select/yellow_box/difficulty_level/8.png
|
||||
0e0ff6a91affcd09f57190a71b3a6b61af0553c4d281364f508b99770365cf6b *./Graphics/dan_select/yellow_box/difficulty_level/9.png
|
||||
8add25664596650e50acf0a5786a1ca44e3cca3a7ff1a0815f8c4b13d99f9b71 *./Graphics/dan_select/box/clear_mark/2.png
|
||||
dd126fb0697f9d54e73694c69f3ab54998b8176ffdd3c5dbe10e8b6029edb0d9 *./Graphics/dan_select/box/clear_mark/3.png
|
||||
55b4cca4ce4874e95bc1265b53e0affcf477ccf4b63bd8f925db91c55597b171 *./Graphics/dan_select/box/clear_mark/4.png
|
||||
8ce42b15149894471e7644a836613106a9302004211a084b6144ef66d11be07f *./Graphics/dan_select/box/clear_mark/5.png
|
||||
8d0be9e425230fc2542f208b8494f0d007c4c23bd3a491a279d2d6ce2b7d0f62 *./Graphics/dan_select/yellow_box/clear_mark/2.png
|
||||
d1cdbdb980dd549cdb8a806b7d1adc1e14193772e8cd7a62785714879a83613b *./Graphics/dan_select/yellow_box/clear_mark/3.png
|
||||
0505531898b9f3e9d174464e0306517f3804304c3a9eda4a7d41897dc65b73be *./Graphics/dan_select/yellow_box/clear_mark/4.png
|
||||
15c702977afc97112aff1d435e87040ea3262ecd66fcfb9ca4dfa769311b23ff *./Graphics/dan_select/yellow_box/clear_mark/5.png
|
||||
9d171b073242c4448e0664533aa54e3f1c337d5e7fd32e7a1e3fa55865382c8f *./Graphics/dan_select/yellow_box/exam_best_pill.png
|
||||
a7073f04a6f717214aabd6f60f80fde4a4656012327780ccfaa6df51b0cf6269 *./Graphics/game/gauge_dan/1p_lamp.png
|
||||
feee6a6b22b4fbe5fefb51a7568f1f0c9f553e37f543f5498042ab37357bd18e *./Graphics/game/gauge_dan/2p_lamp.png
|
||||
c0b93b68d5618c46103efe2f338affdee84f0afd82c967016640ccd347b357c5 *./Graphics/game/gauge_dan/bar_fade_clear.png
|
||||
ecf728861f1e98daff53b3cbfb5acb5c7e48c90dc0268bb1f7b82361deb1af18 *./Graphics/game/gauge_dan/lamp_clear.png
|
||||
15b7143bdf6632718f0b1ce429ab81a3e221429f15c7e9de48712521d7091a6f *./Graphics/game/gauge_dan/track_red.png
|
||||
Reference in new issue
Block a user