diff --git a/Graphics/dan_select/animation.json b/Graphics/dan_select/animation.json index fde218a..988bc41 100644 --- a/Graphics/dan_select/animation.json +++ b/Graphics/dan_select/animation.json @@ -114,9 +114,13 @@ "type": "move", "duration": 333.33, "total_distance": 548, - "comment": "ROUND 17: copied verbatim from song_select/animation.json so the 演奏オプション panel the 段位道場 confirmation dialog's option chip opens runs identically on DAN_SELECT. ModifierSelector's constructor reads 28/29/30/31/32 (+39 optional) and get_animation THROWS on a missing id; a child animation.json replaces the parent's rather than merging, so DAN_SELECT had none of them. option/neiro panel slide IN. Arcade song_select_main_diff_option MC65 'board_left' label 'in' = 20 frames @60fps (333.33 ms), PIECEWISE LINEAR through an OVERSHOOT: y 650 -> -75 over frames 0..14, then -75 -> 0 over frames 14..19. Engine space: json y 1080, resting top 532 => total_distance 548, waypoint 548+75 = 623 at 14/19 = 0.7368. (MC64 'board_right' reaches -75 one frame later, at 15/19; not portable, the two boards share one animation id here.)", - "waypoint": 623, - "waypoint_at": 0.7368 + "waypoints": [ + { + "at": 245.6, + "value": 623 + } + ], + "comment": "ROUND 17: copied verbatim from song_select/animation.json so the 演奏オプション panel the 段位道場 confirmation dialog's option chip opens runs identically on DAN_SELECT. ModifierSelector's constructor reads 28/29/30/31/32 (+39 optional) and get_animation THROWS on a missing id; a child animation.json replaces the parent's rather than merging, so DAN_SELECT had none of them. option/neiro panel slide IN. Arcade song_select_main_diff_option MC65 'board_left' label 'in' = 20 frames @60fps (333.33 ms), PIECEWISE LINEAR through an OVERSHOOT: y 650 -> -75 over frames 0..14, then -75 -> 0 over frames 14..19. Engine space: json y 1080, resting top 532 => total_distance 548, waypoint 548+75 = 623 at 14/19 = 0.7368. (MC64 'board_right' reaches -75 one frame later, at 15/19; not portable, the two boards share one animation id here.)" }, { "id": 29, @@ -153,8 +157,12 @@ "type": "move", "duration": 333.33, "total_distance": 548, - "waypoint": -75, - "waypoint_at": 0.2105, + "waypoints": [ + { + "at": 70.17, + "value": -75 + } + ], "comment": "ROUND 17: copied verbatim from song_select/animation.json so the 演奏オプション panel the 段位道場 confirmation dialog's option chip opens runs identically on DAN_SELECT. ModifierSelector's constructor reads 28/29/30/31/32 (+39 optional) and get_animation THROWS on a missing id; a child animation.json replaces the parent's rather than merging, so DAN_SELECT had none of them. option/neiro panel slide OUT (ModifierSelector/NeiroSelector pick this up on confirm when it exists; without it they replay id 28). Arcade MC65 label 'out' = frames 25..44: y 0 -> -75 over 4 frames, then -75 -> 650 over 15. Engine space the drawn y is `attribute + song_select_offset.x` (= -548 in this skin), so attribute runs 0 -> -75 at 4/19 = 0.2105 -> 548." } ] \ No newline at end of file diff --git a/Graphics/game/animation.json b/Graphics/game/animation.json index bdf5797..d7e7c24 100644 --- a/Graphics/game/animation.json +++ b/Graphics/game/animation.json @@ -92,38 +92,36 @@ { "id": 11, "type": "move", - "duration": 250, - "total_distance": 1080, - "ease_out": "quadratic", - "comment": "kusudama move down" - }, - { - "id": 12, - "type": "move", - "duration": 83.33, - "total_distance": 150, - "delay": { - "reference_id": 11, - "property": "duration" - }, + "duration": 333.33, + "total_distance": 930, "ease_in": "quadratic", - "comment": "kusudama move up" + "waypoints": [ + { + "at": 250, + "value": 1080, + "ease_out": "quadratic" + } + ], + "comment": "kusudama move down/up (merged from old ids 11+12; engine cf785cf)" }, { "id": 13, "type": "move", - "duration": 116.67, - "total_distance": 420, + "duration": 233.34, + "total_distance": -360, "ease_out": "quadratic", + "waypoints": [ + { + "at": 116.67, + "value": -420, + "ease_out": "quadratic" + } + ], "delay": { - "init_val": { - "reference_id": 11, - "property": "duration" - }, - "reference_id": 12, + "reference_id": 11, "property": "duration" }, - "comment": "kusudama renda move up" + "comment": "kusudama renda move up/down (merged from old ids 13+18)" }, { "id": 14, @@ -132,11 +130,7 @@ "initial_opacity": 0.0, "final_opacity": 1.0, "delay": { - "init_val": { - "reference_id": 11, - "property": "duration" - }, - "reference_id": 12, + "reference_id": 11, "property": "duration" }, "comment": "kusudama renda fade in" @@ -165,22 +159,6 @@ "loop": true, "comment": "renda breathing" }, - { - "id": 18, - "type": "move", - "duration": 116.67, - "total_distance": 60, - "delay": { - "init_val": { - "reference_id": 13, - "property": "duration" - }, - "reference_id": 13, - "property": "delay" - }, - "ease_out": "quadratic", - "comment": "kusudama renda move down" - }, { "id": 19, "type": "texture_change", @@ -648,29 +626,33 @@ { "id": 38, "type": "move", - "duration": 66, - "delay": 80, - "total_distance": 0, - "start_position": 255, - "comment": "score counter move animation 2" + "duration": 345.36, + "start_position": 222, + "total_distance": -6, + "waypoints": [ + { + "at": 146, + "value": 0 + }, + { + "at": 146, + "value": -3 + }, + { + "at": 279.36, + "value": -3 + } + ], + "comment": "score counter move (y, pre-fan): hold 222, snap to 219, hold, ->216 (old ids 38/39 + start y)" }, { "id": 39, "type": "move", - "duration": 66, - "delay": 279.36, - "total_distance": -3, - "start_position": 219, - "comment": "score counter move animation 3" - }, - { - "id": 40, - "type": "move", "duration": 80, "delay": 366.74, "total_distance": 15, "start_position": 222, - "comment": "score counter move animation 4" + "comment": "score counter move (y, fan-out): digits cascade once y_pre finished (old id 40)" }, { "id": 41, diff --git a/Graphics/song_select/animation.json b/Graphics/song_select/animation.json index d5a6862..a5e42d1 100644 --- a/Graphics/song_select/animation.json +++ b/Graphics/song_select/animation.json @@ -249,58 +249,27 @@ { "id": 22, "type": "move", - "total_distance": 45, - "duration": 116.67, - "ease_out": "quadratic", - "comment": "diff sort confirmation bounce up" - }, - { - "id": 23, - "type": "move", - "total_distance": 45, - "duration": 116.67, - "delay": { - "reference_id": 22, - "property": "duration" - }, + "total_distance": 0, + "duration": 400, "ease_in": "quadratic", - "comment": "diff sort confirmation bounce down" - }, - { - "id": 24, - "type": "move", - "total_distance": 15, - "duration": 83.33, - "delay": { - "init_val": { - "reference_id": 22, - "property": "duration" + "waypoints": [ + { + "at": 116.67, + "value": -45, + "ease_out": "quadratic" }, - "reference_id": 23, - "property": "duration" - }, - "ease_out": "quadratic", - "comment": "diff sort confirmation bounce up 2" - }, - { - "id": 25, - "type": "move", - "total_distance": 15, - "duration": 83.33, - "delay": { - "init_val": { - "init_val": { - "reference_id": 22, - "property": "duration" - }, - "reference_id": 23, - "property": "duration" + { + "at": 233.34, + "value": 0, + "ease_in": "quadratic" }, - "reference_id": 24, - "property": "duration" - }, - "ease_in": "quadratic", - "comment": "diff sort confirmation bounce down 2" + { + "at": 316.67, + "value": -15, + "ease_out": "quadratic" + } + ], + "comment": "diff sort confirmation double bounce (merged from old ids 22+23+24+25)" }, { "id": 26, @@ -321,9 +290,13 @@ "type": "move", "duration": 333.33, "total_distance": 548, - "comment": "option/neiro panel slide IN. Arcade song_select_main_diff_option MC65 'board_left' label 'in' = 20 frames @60fps (333.33 ms), PIECEWISE LINEAR through an OVERSHOOT: y 650 -> -75 over frames 0..14, then -75 -> 0 over frames 14..19. Engine space: json y 1080, resting top 532 => total_distance 548, waypoint 548+75 = 623 at 14/19 = 0.7368. (MC64 'board_right' reaches -75 one frame later, at 15/19; not portable, the two boards share one animation id here.)", - "waypoint": 623, - "waypoint_at": 0.7368 + "waypoints": [ + { + "at": 245.6, + "value": 623 + } + ], + "comment": "option/neiro panel slide IN. Arcade song_select_main_diff_option MC65 'board_left' label 'in' = 20 frames @60fps (333.33 ms), PIECEWISE LINEAR through an OVERSHOOT: y 650 -> -75 over frames 0..14, then -75 -> 0 over frames 14..19. Engine space: json y 1080, resting top 532 => total_distance 548, waypoint 548+75 = 623 at 14/19 = 0.7368. (MC64 'board_right' reaches -75 one frame later, at 15/19; not portable, the two boards share one animation id here.)" }, { "id": 29, @@ -413,8 +386,12 @@ "type": "move", "duration": 333.33, "total_distance": 548, - "waypoint": -75, - "waypoint_at": 0.2105, + "waypoints": [ + { + "at": 70.17, + "value": -75 + } + ], "comment": "option/neiro panel slide OUT (ModifierSelector/NeiroSelector pick this up on confirm when it exists; without it they replay id 28). Arcade MC65 label 'out' = frames 25..44: y 0 -> -75 over 4 frames, then -75 -> 650 over 15. Engine space the drawn y is `attribute + song_select_offset.x` (= -548 in this skin), so attribute runs 0 -> -75 at 4/19 = 0.2105 -> 548." } ] \ No newline at end of file