Initial commit: Fighting_Rthythm_game project setup

This commit is contained in:
wxm
2026-07-01 06:59:12 -07:00
commit d7f118ae6e
291 changed files with 19614 additions and 0 deletions

104
scenes/main/main.gd Normal file
View File

@@ -0,0 +1,104 @@
extends Node2D
@onready var rhythm_conductor: Node = $RhythmConductor
@onready var rhythm_track: Control = $RhythmFeedback/RhythmTrack
@onready var rhythm_feedback_label: Label = $RhythmFeedback/JudgementLabel
@onready var center_base: TextureRect = $RhythmFeedback/RhythmTrack/CenterBase
@onready var center_flash: TextureRect = $RhythmFeedback/RhythmTrack/CenterFlash
@onready var left_mover: TextureRect = $RhythmFeedback/RhythmTrack/LeftMover
@onready var right_mover: TextureRect = $RhythmFeedback/RhythmTrack/RightMover
var track_center := Vector2.ZERO
var left_mover_start := Vector2.ZERO
var right_mover_start := Vector2.ZERO
var mover_size := Vector2.ZERO
var center_flash_size := Vector2.ZERO
var feedback_flash := 0.0
var beat_flash := 0.0
func _ready() -> void:
_cache_rhythm_track_layout()
rhythm_conductor.action_judged.connect(_on_rhythm_action_judged)
rhythm_conductor.beat.connect(_on_rhythm_beat)
rhythm_feedback_label.text = "READY"
_update_rhythm_track(0.0)
func _process(delta: float) -> void:
_update_rhythm_track(delta)
if feedback_flash > 0.0:
feedback_flash = maxf(0.0, feedback_flash - delta * 4.0)
rhythm_feedback_label.scale = Vector2.ONE * (1.0 + feedback_flash * 0.18)
func _on_rhythm_action_judged(action_name: String, rating: Dictionary) -> void:
var rating_name: String = str(rating.get("label", "miss"))
var color: Color = rating.get("color", Color("ff0055")) as Color
var diff: float = float(rating.get("diff", INF))
rhythm_feedback_label.text = "%s %s %s" % [
_format_action_name(action_name),
rating_name.to_upper(),
_format_signed_ms(diff),
]
rhythm_feedback_label.modulate = color
feedback_flash = 1.0
func _on_rhythm_beat(_position: int) -> void:
beat_flash = 1.0
func _update_rhythm_track(delta: float) -> void:
beat_flash = maxf(0.0, beat_flash - delta * 8.0)
var progress := 0.0
if rhythm_conductor.has_method("get_current_beat_progress"):
progress = float(rhythm_conductor.call("get_current_beat_progress"))
if beat_flash > 0.15:
progress = 1.0
_set_control_center(left_mover, left_mover_start.lerp(track_center, progress), mover_size)
_set_control_center(right_mover, right_mover_start.lerp(track_center, progress), mover_size)
_set_control_center(center_flash, track_center, center_flash_size)
center_flash.modulate = Color(1.0, 1.0, 1.0, beat_flash)
func _cache_rhythm_track_layout() -> void:
track_center = _control_center(center_base)
left_mover_start = _control_center(left_mover)
right_mover_start = _control_center(right_mover)
mover_size = left_mover.size
center_flash_size = center_flash.size
func _control_center(control: Control) -> Vector2:
return Vector2(
(control.offset_left + control.offset_right) * 0.5,
(control.offset_top + control.offset_bottom) * 0.5
)
func _set_control_center(control: Control, center: Vector2, size: Vector2) -> void:
control.offset_left = center.x - size.x * 0.5
control.offset_top = center.y - size.y * 0.5
control.offset_right = center.x + size.x * 0.5
control.offset_bottom = center.y + size.y * 0.5
func _format_action_name(action_name: String) -> String:
match action_name:
"left":
return "LEFT"
"right":
return "RIGHT"
"jump":
return "JUMP"
_:
return action_name.to_upper()
func _format_signed_ms(seconds: float) -> String:
if is_inf(seconds):
return "-- ms"
return "%+.0f ms" % (seconds * 1000.0)

1
scenes/main/main.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://3n4nkejauoim

192
scenes/main/main.tscn Normal file
View File

@@ -0,0 +1,192 @@
[gd_scene format=3 uid="uid://brx0c2va3831p"]
[ext_resource type="PackedScene" uid="uid://cs0rhloanh2u4" path="res://scenes/ground/ground.tscn" id="1_ground"]
[ext_resource type="PackedScene" path="res://scenes/characters/player.tscn" id="2_player"]
[ext_resource type="Script" uid="uid://3n4nkejauoim" path="res://scenes/main/main.gd" id="3_main_script"]
[ext_resource type="Script" uid="uid://brh83qp8flq5u" path="res://scenes/rhythm/rhythm_conductor.gd" id="4_rhythm_script"]
[ext_resource type="AudioStream" uid="uid://di5ceecn088rk" path="res://assets/audio/song.ogg" id="5_song"]
[ext_resource type="Texture2D" uid="uid://brqr1gyyxth8p" path="res://assets/ui/rhythm/center.png" id="6_center"]
[ext_resource type="Texture2D" uid="uid://bkqec7mh5yfrd" path="res://assets/ui/rhythm/center_flash.png" id="7_center_flash"]
[ext_resource type="Texture2D" uid="uid://cj5pa4c3arevn" path="res://assets/ui/rhythm/rod.png" id="8_rod"]
[ext_resource type="Texture2D" uid="uid://dbmdivnpjf48l" path="res://assets/ui/rhythm/blue_ball.png" id="9_blue_ball"]
[ext_resource type="Texture2D" uid="uid://ewr8k3lwpcna" path="res://assets/ui/rhythm/yellow_ball.png" id="10_yellow_ball"]
[node name="Main" type="Node2D" unique_id=596674982]
script = ExtResource("3_main_script")
[node name="RhythmConductor" type="AudioStreamPlayer" parent="." unique_id=147408036]
stream = ExtResource("5_song")
volume_db = -10.0
script = ExtResource("4_rhythm_script")
[node name="ground" parent="." unique_id=235100600 instance=ExtResource("1_ground")]
[node name="Player" parent="." unique_id=1027194058 instance=ExtResource("2_player")]
position = Vector2(2047, 370)
[node name="RhythmFeedback" type="CanvasLayer" parent="." unique_id=979375765]
[node name="RhythmTrack" type="Control" parent="RhythmFeedback" unique_id=529739298]
layout_mode = 3
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -520.0
offset_top = 28.0
offset_right = 520.0
offset_bottom = 172.0
grow_horizontal = 2
[node name="LeftRod" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=569576128]
layout_mode = 0
offset_left = 64.0
offset_top = 60.0
offset_right = 464.0
offset_bottom = 84.0
texture = ExtResource("8_rod")
expand_mode = 1
stretch_mode = 5
[node name="LeftRod" type="TextureRect" parent="RhythmFeedback/RhythmTrack/LeftRod" unique_id=1074213105]
layout_mode = 0
offset_left = 127.0
offset_top = 1.0
offset_right = 527.0
offset_bottom = 25.0
texture = ExtResource("8_rod")
expand_mode = 1
stretch_mode = 5
[node name="RightRod" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=112177250]
layout_mode = 0
offset_left = 446.0
offset_top = 62.0
offset_right = 846.0
offset_bottom = 86.0
texture = ExtResource("8_rod")
expand_mode = 1
stretch_mode = 5
[node name="RightRod" type="TextureRect" parent="RhythmFeedback/RhythmTrack/RightRod" unique_id=1431511936]
layout_mode = 0
offset_left = 127.0
offset_right = 527.0
offset_bottom = 24.0
texture = ExtResource("8_rod")
expand_mode = 1
stretch_mode = 5
[node name="BlueBallLeft1" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=649449082]
layout_mode = 0
offset_left = 184.0
offset_top = 49.0
offset_right = 228.0
offset_bottom = 93.0
texture = ExtResource("9_blue_ball")
expand_mode = 1
stretch_mode = 5
[node name="BlueBallLeft2" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=1327939368]
layout_mode = 0
offset_left = 309.0
offset_top = 50.0
offset_right = 353.0
offset_bottom = 94.0
texture = ExtResource("9_blue_ball")
expand_mode = 1
stretch_mode = 5
[node name="BlueBallLeft3" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=1352623059]
layout_mode = 0
offset_left = 427.0
offset_top = 51.0
offset_right = 471.0
offset_bottom = 95.0
texture = ExtResource("9_blue_ball")
expand_mode = 1
stretch_mode = 5
[node name="BlueBallRight1" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=75338529]
layout_mode = 0
offset_left = 567.0
offset_top = 52.0
offset_right = 611.0
offset_bottom = 96.0
texture = ExtResource("9_blue_ball")
expand_mode = 1
stretch_mode = 5
[node name="BlueBallRight2" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=484948530]
layout_mode = 0
offset_left = 687.0
offset_top = 52.0
offset_right = 731.0
offset_bottom = 96.0
texture = ExtResource("9_blue_ball")
expand_mode = 1
stretch_mode = 5
[node name="BlueBallRight3" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=587810490]
layout_mode = 0
offset_left = 813.0
offset_top = 52.0
offset_right = 857.0
offset_bottom = 96.0
texture = ExtResource("9_blue_ball")
expand_mode = 1
stretch_mode = 5
[node name="LeftMover" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=2070100389]
layout_mode = 0
offset_left = 183.0
offset_top = 47.0
offset_right = 227.0
offset_bottom = 91.0
texture = ExtResource("10_yellow_ball")
expand_mode = 1
stretch_mode = 5
[node name="RightMover" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=1028576547]
layout_mode = 0
offset_left = 815.0
offset_top = 52.0
offset_right = 859.0
offset_bottom = 96.0
texture = ExtResource("10_yellow_ball")
expand_mode = 1
stretch_mode = 5
[node name="CenterBase" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=1816341281]
layout_mode = 0
offset_left = 464.0
offset_top = 16.0
offset_right = 576.0
offset_bottom = 128.0
texture = ExtResource("6_center")
expand_mode = 1
stretch_mode = 5
[node name="CenterFlash" type="TextureRect" parent="RhythmFeedback/RhythmTrack" unique_id=1764975684]
modulate = Color(1, 1, 1, 0)
layout_mode = 0
offset_left = 440.0
offset_top = -8.0
offset_right = 600.0
offset_bottom = 152.0
texture = ExtResource("7_center_flash")
expand_mode = 1
stretch_mode = 5
[node name="JudgementLabel" type="Label" parent="RhythmFeedback" unique_id=776378947]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -240.0
offset_top = 174.0
offset_right = 240.0
offset_bottom = 222.0
grow_horizontal = 2
theme_override_font_sizes/font_size = 24
text = "READY"
horizontal_alignment = 1
vertical_alignment = 1