Compare commits

...
Author SHA1 Message Date
TaikoZhongandClaude Opus 5.5 acb945062a Timer digits in the cabinet's grey (#505050) instead of black
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:52:41 +08:00
TaikoZhongandClaude Opus 5.5 aecee76477 Update checksums.sha256 for #67
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:50:09 +08:00
GanYiZhong 4a12169a59 Merge pull request 'dan select: no 自己ベスト row when there is no best' (#67) from GanYiZhong/YataiDONNijiiro:fix/dan-select-best-empty into main 2026-10-14 15:49:50 +02:00
TaikoZhongandClaude Opus 5.5 e8798eff85 dan select: no 自己ベスト row at all when there is no best
The gauge box's best pill was part of exam_gauge_box, so it showed even on a course never played, with the label in it. It is now its own texture (exam_gauge_best_pill), and with no best neither pill nor label is drawn, as on the cabinet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:48:21 +08:00
TaikoZhongandClaude Opus 5.5 2a82b000a2 Update checksums.sha256 for #64, #65, #66
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:38:51 +08:00
GanYiZhong 8397c6b98e Merge pull request 'dan game: soul gauge drawn as on the cabinet' (#66) from GanYiZhong/YataiDONNijiiro:fix/dan-game-gauge into main 2026-10-14 15:38:17 +02:00
GanYiZhong b5f9ee628e Merge pull request 'dan select: 自己ベスト rows and all six clear stamps' (#65) from GanYiZhong/YataiDONNijiiro:feat/dan-select-best-stamps into main 2026-10-14 15:38:02 +02:00
GanYiZhong 6025f7c02f Merge pull request 'dan select: course panel closer to the cabinet' (#64) from GanYiZhong/YataiDONNijiiro:fix/dan-select-exam-panel into main 2026-10-14 15:37:50 +02:00
TaikoZhongandClaude Opus 5.5 97fa82924f Dan gauge plate: uncropped art, value at the cabinet's size
The plate art had its top and left rows cut off, flattening the top of the
魂ゲージ pill. It is now the cabinet's whole plate (with its 9 px margin),
drawn 9 px up and left so the layout constants stay put. The threshold
caption is the cabinet's size 36, its centre moved up to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:12:38 +08:00
TaikoZhongandClaude Opus 5.5 48660a8b87 dan game: the soul gauge over the lane's top edge, as on the cabinet
The engine draws the lane after the gauge, and the lane's black top edge (y 276) hid the
cells' last six rows; the cabinet's gauge sits over it (cells down to y 281). The gauge
leaves a redraw (g_dan_gauge_redraw) that the dan background's draw_fore repeats, clipped
to that strip (y 276-288).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:01:01 +08:00
TaikoZhongandClaude Opus 5.5 287f8ffd67 dan game: the soul gauge drawn as the cabinet's tamashii_gauge
Gauge:draw_dan is this skin's own now, built from the cabinet's tamashii_gauge pieces:
- the gold track (border) with the red track (gauge_dan/track_red, gauge_bg) only up to the
  threshold, so the cells past it are dark gold;
- the lit cells as the cabinet's lamp stretched 21 px per cell (gauge_dan/1p_lamp, 2p_lamp),
  all yellow (lamp_clear) once the gauge reaches the threshold, with the matching glow on a
  newly lit cell (bar_fade_clear);
- the cell separators at the cabinet's 103/255 (they were drawn at 0.15, plus a second copy
  from the dan background);
- 魂 grey, white once cleared, in flames at full.
The threshold comes from the dan exam: background/dan_info hands it over as
g_dan_gauge_border. Without it, or on a screen without these pieces, the parent draws.
This replaces the gold-zone repaint in dan_info, and 1p_bar / 2p_bar / 1p_bar_fade go back
to what they were.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:22:30 +08:00
TaikoZhongandClaude Opus 5.5 e8ce3b3a7d dan game: the soul gauge's gold zone past the threshold
The cabinet shows the cells past the threshold in gold: dark gold while unfilled, its
lamp_clear (white band over yellow) once filled. The gauge script does not know the
threshold, so dan_info, which does, paints them over the engine's cells in the gauge layer
(game/dan_info/gauge_gold_cell, gauge_gold_unfilled).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:33:42 +08:00
TaikoZhongandClaude Opus 5.5 a9bce590c5 dan game: soul gauge threshold marker, cell art and threshold caption
- The white threshold marker (game/dan_info/gauge_border_cell) is drawn on the threshold
  cell, as the cabinet's border_N, from Background:draw_fore so it sits over the lane frame.
- The gauge cells (gauge_dan/1p_bar, 2p_bar, 1p_bar_fade) get the cabinet lamp's light
  band along the top.
- The 「100 %以上」 caption on the threshold plate sits lower and one size smaller, as on
  the cabinet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:23:04 +08:00
TaikoZhongandClaude Opus 5.5 601fed93d6 dan select: 自己ベスト rows and all six clear stamps
- Each exam shows its 自己ベスト row as on the cabinet: a white pill (part of
  exam_gauge_box, and yellow_box/exam_best_pill for the right-hand boxes, one per song
  segment) with the label on the left and the recorded best on the right. Needs the
  engine's box:exam_best / exam_song_best; without them, or before a course is played,
  the label is shown alone.
- box/clear_mark and yellow_box/clear_mark have the cabinet's six stamps (red/gold x
  pass/full combo/all good), picked by the record's rank (box.record_rank); an engine
  without it falls back to clear_mark (frames 0 and 5).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:58:16 +08:00
28 changed files with 364 additions and 54 deletions

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.
+3 -1
View File
@@ -208,5 +208,7 @@
"difficulty_level": {
"x": 538,
"y": 287
}
},
"exam_best_pill": {},
"exam_gauge_best_pill": {}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+20
View File
@@ -100,5 +100,25 @@
"tamashii_fire": {
"x": 1698,
"y": 34
},
"track_red": {
"x": 738,
"y": 242
},
"1p_lamp": {
"x": 738,
"y": 242
},
"2p_lamp": {
"x": 738,
"y": 242
},
"lamp_clear": {
"x": 738,
"y": 242
},
"bar_fade_clear": {
"x": 733,
"y": 241
}
}
Binary file not shown.
Binary file not shown.
+12
View File
@@ -835,6 +835,18 @@
"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,
+10 -6
View File
@@ -155,14 +155,18 @@ function DanBackground:draw_back()
self.chibi:draw()
end
-- dan soul gauge separator overlay (static, drawn at a hardcoded fade).
-- the soul gauge's strip the lane covers (the cabinet draws the gauge over the lane), then
-- its threshold marker, on top of everything
local LANE_TOP, GAUGE_BOTTOM = 276, 288
function DanBackground:draw_fore()
if not self._gauge_overlay then
self._gauge_overlay = tex.get_texture("game/gauge_dan/overlay") or 0
end
if self._gauge_overlay ~= 0 then
tex.draw_texture(self._gauge_overlay, { fade = 0.15 })
local redraw = _G.g_dan_gauge_redraw
if redraw then
tex.begin_scissor(0, LANE_TOP, tex.get_screen_width(), GAUGE_BOTTOM - LANE_TOP)
local ok, err = pcall(redraw)
tex.end_scissor()
if not ok then error(err, 0) end
end
self.dan_info:draw_marker()
end
-- dan condition plate, drawn in the gauge's own layer.
+40 -8
View File
@@ -1,5 +1,7 @@
-- 段位道場 exam-panel extras only Lua can draw: the soul-gauge pass-threshold
-- callout plate + captions, anchored on the gauge's own 50-cell grid.
-- callout plate + captions and the white threshold marker on the threshold cell, anchored
-- on the gauge's own 50-cell grid. It also hands the threshold (in cells) to the gauge script
-- (g_dan_gauge_border), which colours the track by it.
local M = {}
M.__index = M
@@ -11,23 +13,30 @@ local LABEL_SIZE = 30 -- arcade MS 明朝 36; ours reads
local WHITE = { 255, 255, 255, 255 }
local BLACK = { 0, 0, 0, 255 }
local PLATE_W, PLATE_H = 586, 60
local PLATE_W, PLATE_H = 586, 60 -- the plate's grey body; the art adds a 9 px margin
local PLATE_ART_PAD = 9 -- (the pill's top/left edge and the drop shadow)
local PLATE_GAP = 12 -- px between the plate's bottom and the bar top
local PLATE_OVERHANG = 24 -- px the plate extends PAST the threshold
local PILL_CX, PILL_CY = 150, 20 -- 魂ゲージ ink centre, plate-local
local VALUE_RIGHT = 532 -- 100%以上 is RIGHT-aligned to this
local VALUE_CY = 22 -- its ink centre y, plate-local
local VALUE_CY = 35 -- its ink centre y, plate-local
local NAME_SIZE = 26 -- arcade id 142
local VALUE_SIZE = 36 -- arcade id 141
-- the threshold marker (gauge_border_cell): its white inside (x 7, y 7 in the art) lands on
-- the threshold cell's left edge + 1, from y 238, as the cabinet's border_N
local MARKER_INNER_X, MARKER_INNER_Y = 7, 7
local MARKER_Y = 238
local CAP_FILL = { 255, 255, 255, 255 }
local CAP_OUTLINE = { 80, 60, 45, 255 } -- #503C2D
local VALUE_OUTLINE = { 0, 0, 0, 255 }
function M.new()
return setmetatable({ state = nil, label = nil, label_for = nil,
name_label = nil, plate = nil, plate_tried = false }, M)
name_label = nil, plate = nil, plate_tried = false,
marker = nil, marker_tried = false }, M)
end
function M:plate_id()
@@ -38,9 +47,12 @@ function M:plate_id()
return self.plate
end
-- Called from Background:handle_dan.
function M:handle(state)
self.state = state
function M:marker_id()
if not self.marker_tried then
self.marker_tried = true
self.marker = tex.get_texture("game/dan_info/gauge_border_cell")
end
return self.marker
end
local function gauge_exam(state)
@@ -51,6 +63,14 @@ local function gauge_exam(state)
return nil
end
-- Called from Background:handle_dan.
function M:handle(state)
self.state = state
local ex = gauge_exam(state)
_G.g_dan_gauge_border = (ex and ex.red and ex.red > 0)
and math.max(1, math.min(CELL_COUNT, math.floor(ex.red / 2))) or nil
end
-- Called from Background:draw_fore(), i.e. after the whole GAME_DAN HUD.
function M:draw()
local st = self.state
@@ -84,7 +104,7 @@ function M:draw()
local px = math.max(0, math.floor(x - PLATE_W + PLATE_OVERHANG + 0.5))
local py = GAUGE_Y - PLATE_GAP - PLATE_H
if pid then
tex.draw_texture(pid, { x = px, y = py })
tex.draw_texture(pid, { x = px - PLATE_ART_PAD, y = py - PLATE_ART_PAD })
end
-- fail soft: with no plate art the two captions still draw, at the same places
@@ -103,4 +123,16 @@ function M:draw()
end
end
-- The threshold marker, drawn over the lane's frame as on the cabinet (it reaches below the
-- gauge), so from Background:draw_fore() rather than with the plate in the gauge layer.
function M:draw_marker()
local ex = gauge_exam(self.state)
if not ex or not ex.red or ex.red <= 0 then return end
local n = math.max(1, math.min(CELL_COUNT, math.floor(ex.red / 2)))
local mid = self:marker_id()
if not mid then return end
local cell_left = GAUGE_X0 + CELL_PITCH * (n - 1)
tex.draw_texture(mid, { x = cell_left + 1 - MARKER_INNER_X, y = MARKER_Y - MARKER_INNER_Y })
end
return M
+102 -8
View File
@@ -201,6 +201,20 @@ local function course_view(box)
})
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
@@ -245,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()
@@ -334,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
@@ -349,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
@@ -393,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
+88 -2
View File
@@ -4,6 +4,7 @@
-- length-1 (at length it left a dark gap cell before it)
-- * the clear mark sits gauge_clear_mark_offset cells (skin_config: 1, the cell edge) before
-- the exact clear fraction, not the parent's 87/60
-- The dan gauge is drawn as the cabinet's tamashii_gauge (see draw_dan below).
-- Everything else is the parent's file, loaded from its own copy.
-- the parent skin's copy of a script: the second match on package.path (the first is this file)
@@ -23,10 +24,21 @@ assert(load_parent("game/gauge"), "game/gauge: the parent skin has no gauge scri
local function clamp(v, lo, hi) return math.max(lo, math.min(hi, v)) end
local parent_new = Gauge.new
function Gauge.new(...)
local self = parent_new(...)
function Gauge.new(is_2p, dan, string_diff, opts)
local self = parent_new(is_2p, dan, string_diff, opts)
local mark = tex.get_skin_config("gauge_clear_mark_offset")
self.clear_mark_offset = mark and mark.x
if dan then
local screen = (opts and opts.screen) or "game"
local p = (opts and opts.player_str and (opts.player_str .. "_")) or (is_2p and "2p_" or "1p_")
local function t(name) return tex.get_texture(screen .. "/gauge_dan/" .. name) end
self.cab = {
track_red = t("track_red"),
lamp = t(p .. "lamp"),
lamp_clear = t("lamp_clear"),
fade_clear = t("bar_fade_clear"),
}
end
return self
end
@@ -101,3 +113,77 @@ function Gauge:render(y, mirror, idx, points, previous_points, max_points, clear
self:blit(self.tamashii_dark, nil, nil, y, nil, nil, nil, idx)
end
end
-- The dan gauge as the cabinet's tamashii_gauge draws it: the gold track (border), the red
-- track (track_red, gauge_bg) up to the threshold, the lit cells as one lamp stretched 21 px
-- per cell (lamp_clear, yellow, once the gauge reaches the threshold), the glow on a newly lit
-- cell, the cell separators at the cabinet's 103/255, then 魂: grey, white once cleared, and
-- in flames at full. The threshold comes from the dan exam (background dan_info sets
-- g_dan_gauge_border, in cells); without it, or without the cabinet pieces, the parent draws.
local CAB_CELL = 21
local CAB_TRACK = 20.88 -- gauge_bg: 160 px x 0.1305 per cell
local CAB_SEPARATOR = 103 / 255
local parent_draw_dan = Gauge.draw_dan
-- The cabinet draws the gauge over the lane; the engine draws the lane after it, so its top
-- edge (y 276, 184 px x 1.5) hides the cells' last rows. The gauge leaves a redraw for the
-- dan background's draw_fore (g_dan_gauge_redraw), which repeats it clipped to that strip.
local function draw_cab(self, border, points, previous_points, max_points, is_rainbow,
anim_active, anim_alpha, rainbow_fade, rainbow_frac, fire_frame)
local cab = self.cab
local function layer(t, x, x2, fade, frame, scale, center)
if t then
tex.draw_texture(t, { x = x, x2 = x2, fade = fade, frame = frame, scale = scale, center = center })
end
end
local length, solid, alpha, show_up = self:cells(points, previous_points, max_points, anim_active, anim_alpha)
local clear = length >= border
layer(self.border)
if border > 0 then layer(cab.track_red, nil, CAB_TRACK * border - 160) end
if solid > 0 then layer(clear and cab.lamp_clear or cab.lamp, nil, CAB_CELL * solid - 8) end
if is_rainbow and rainbow_fade >= 0 then
local frame_a = math.floor(rainbow_frac) % 8
local frame_b = (frame_a + 1) % 8
local f = rainbow_frac - math.floor(rainbow_frac)
layer(self.rainbow, nil, nil, rainbow_fade, frame_a)
layer(self.rainbow, nil, nil, rainbow_fade * f, frame_b)
end
if show_up and length > 0 then
layer(clear and cab.fade_clear or self.bar_fade, (length - 1) * CAB_CELL, nil, alpha)
end
layer(self.overlay, nil, nil, CAB_SEPARATOR)
if is_rainbow then
layer(self.fire, nil, nil, nil, fire_frame, 0.75, true)
layer(self.tamashii)
if fire_frame == 0 or fire_frame == 1 or fire_frame == 4 or fire_frame == 5 then
layer(self.tamashii_overlay, nil, nil, 0.5)
end
elseif clear then
layer(self.tamashii)
else
layer(self.tamashii_dark)
end
end
function Gauge:draw_dan(points, previous_points, max_points, is_rainbow,
anim_active, anim_alpha, rainbow_fade, rainbow_frac, fire_frame)
local cab = self.cab
local border = _G.g_dan_gauge_border
if not (cab and cab.track_red and cab.lamp and cab.lamp_clear and border) then
_G.g_dan_gauge_redraw = nil
return parent_draw_dan(self, points, previous_points, max_points, is_rainbow,
anim_active, anim_alpha, rainbow_fade, rainbow_frac, fire_frame)
end
draw_cab(self, border, points, previous_points, max_points, is_rainbow,
anim_active, anim_alpha, rainbow_fade, rainbow_frac, fire_frame)
_G.g_dan_gauge_redraw = function()
draw_cab(self, border, points, previous_points, max_points, is_rainbow,
anim_active, anim_alpha, rainbow_fade, rainbow_frac, fire_frame)
end
end
+34 -19
View File
@@ -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
c84900caf5c24158b217d2a071b3056d625d8508afc7c736ec36eb373a091a97 *./Graphics/dan_select/yellow_box/exam_gauge_box.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
bc8541193a345e1559f59c0dc2b3ca6bcbc2c764f65ba762b315fac34af4b0ff *./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
4833aa8aa12cbf6f765cd60479b97aaadbe6b1fb5a8cb317c0c2131fe849b90c *./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,18 @@ 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
cafca767d283873211e2050e760c1bd135bc17d1fab8a4ec4312f602d222f3b3 *./Graphics/dan_select/yellow_box/exam_gauge_best_pill.png