Music visualizer resource

This commit is contained in:
Maddo 2025-02-27 09:14:00 +01:00
commit e8b884f54b
10 changed files with 82 additions and 19 deletions

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="MusicResource" load_steps=3 format=3 uid="uid://byo74ews118nl"]
[ext_resource type="AudioStream" uid="uid://di416g5wgx6j0" path="res://Music/Title.mp3" id="1_u5qon"]
[ext_resource type="Script" uid="uid://cx63lvsuj1787" path="res://Scripts/Resources/MusicResource.cs" id="1_xdwi3"]
[resource]
script = ExtResource("1_xdwi3")
TrackName = "No Reason"
AuthorName = "Fenekhu"
ShowAuthor = false
Track = ExtResource("1_u5qon")
metadata/_custom_type_script = "uid://cx63lvsuj1787"

View file

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="MusicResource" load_steps=3 format=3 uid="uid://b0aryixgv2vkj"]
[ext_resource type="AudioStream" uid="uid://7fo2dxosnjk4" path="res://Music/Intro.mp3" id="1_d4uiy"]
[ext_resource type="Script" uid="uid://cx63lvsuj1787" path="res://Scripts/Resources/MusicResource.cs" id="2_f2m3a"]
[resource]
script = ExtResource("2_f2m3a")
TrackName = "No Restraint"
AuthorName = "Fenekhu"
ShowAuthor = false
Track = ExtResource("1_d4uiy")
metadata/_custom_type_script = "uid://cx63lvsuj1787"

View file

@ -0,0 +1,10 @@
[gd_resource type="Resource" script_class="MusicResource" load_steps=2 format=3 uid="uid://b0jpn0kkmciuq"]
[ext_resource type="Script" uid="uid://cx63lvsuj1787" path="res://Scripts/Resources/MusicResource.cs" id="1_ajy4g"]
[resource]
script = ExtResource("1_ajy4g")
TrackName = "An Overtime Fairy Dance"
AuthorName = "Fenekhu"
ShowAuthor = false
metadata/_custom_type_script = "uid://cx63lvsuj1787"

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=31 format=3 uid="uid://oaxftu6lytvv"] [gd_scene load_steps=32 format=3 uid="uid://oaxftu6lytvv"]
[ext_resource type="Script" uid="uid://d1cxthcj2fc10" path="res://Scripts/UI/IntroScenePlayer.cs" id="1_jtu71"] [ext_resource type="Script" uid="uid://d1cxthcj2fc10" path="res://Scripts/UI/IntroScenePlayer.cs" id="1_jtu71"]
[ext_resource type="Texture2D" uid="uid://4skj5ik6qpu4" path="res://Sprites/Briefing/Intro1small.png" id="2_6u3to"] [ext_resource type="Texture2D" uid="uid://4skj5ik6qpu4" path="res://Sprites/Briefing/Intro1small.png" id="2_6u3to"]
@ -22,6 +22,7 @@
[ext_resource type="Texture2D" uid="uid://xvadkvwajs0t" path="res://Sprites/UI/Crystal.png" id="19_paaiq"] [ext_resource type="Texture2D" uid="uid://xvadkvwajs0t" path="res://Sprites/UI/Crystal.png" id="19_paaiq"]
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="20_8r24y"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="20_8r24y"]
[ext_resource type="AudioStream" uid="uid://7fo2dxosnjk4" path="res://Music/Intro.mp3" id="21_p86nr"] [ext_resource type="AudioStream" uid="uid://7fo2dxosnjk4" path="res://Music/Intro.mp3" id="21_p86nr"]
[ext_resource type="Resource" uid="uid://b0aryixgv2vkj" path="res://Resources/Music/No_Restraint.tres" id="23_vtao2"]
[sub_resource type="Gradient" id="Gradient_k5r5b"] [sub_resource type="Gradient" id="Gradient_k5r5b"]
colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 1) colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 1)
@ -608,4 +609,4 @@ libraries = {
} }
[node name="AudioStreamPlayer2D2" parent="." instance=ExtResource("20_8r24y")] [node name="AudioStreamPlayer2D2" parent="." instance=ExtResource("20_8r24y")]
TrackName = "Intro" MusicData = ExtResource("23_vtao2")

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=15 format=3 uid="uid://5xajclchk3my"] [gd_scene load_steps=16 format=3 uid="uid://5xajclchk3my"]
[ext_resource type="Script" uid="uid://dql102fvubniv" path="res://Scripts/MainMenu.cs" id="1_702nk"] [ext_resource type="Script" uid="uid://dql102fvubniv" path="res://Scripts/MainMenu.cs" id="1_702nk"]
[ext_resource type="PackedScene" uid="uid://c84shrj84g4t2" path="res://Scenes/HUD/MusicRoom.tscn" id="2_if7li"] [ext_resource type="PackedScene" uid="uid://c84shrj84g4t2" path="res://Scenes/HUD/MusicRoom.tscn" id="2_if7li"]
@ -12,6 +12,7 @@
[ext_resource type="StyleBox" uid="uid://ctw2hju32l3rg" path="res://Resources/Styles/PixelStyleBoxRed.tres" id="7_rrcx7"] [ext_resource type="StyleBox" uid="uid://ctw2hju32l3rg" path="res://Resources/Styles/PixelStyleBoxRed.tres" id="7_rrcx7"]
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="8_koqhg"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="8_koqhg"]
[ext_resource type="PackedScene" uid="uid://bemu3l6b1e84y" path="res://Scenes/HUD/debug_menu.tscn" id="9_nwlsr"] [ext_resource type="PackedScene" uid="uid://bemu3l6b1e84y" path="res://Scenes/HUD/debug_menu.tscn" id="9_nwlsr"]
[ext_resource type="Resource" uid="uid://byo74ews118nl" path="res://Resources/Music/No_Reason.tres" id="13_fh7cp"]
[sub_resource type="Theme" id="Theme_c7h4d"] [sub_resource type="Theme" id="Theme_c7h4d"]
@ -149,8 +150,7 @@ text = "Credits"
[node name="AudioStreamPlayer2D" parent="." instance=ExtResource("8_koqhg")] [node name="AudioStreamPlayer2D" parent="." instance=ExtResource("8_koqhg")]
stream = ExtResource("4_i6ku4") stream = ExtResource("4_i6ku4")
autoplay = true autoplay = true
TrackName = "No Reason" MusicData = ExtResource("13_fh7cp")
AuthorName = "Fenekhu"
[node name="SubMenuContainer" type="PanelContainer" parent="."] [node name="SubMenuContainer" type="PanelContainer" parent="."]
visible = false visible = false

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=119 format=4 uid="uid://bv451a8wgty4u"] [gd_scene load_steps=120 format=4 uid="uid://bv451a8wgty4u"]
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"]
[ext_resource type="PackedScene" uid="uid://bghghp5ep4w2j" path="res://Scenes/player.tscn" id="2_8mh54"] [ext_resource type="PackedScene" uid="uid://bghghp5ep4w2j" path="res://Scenes/player.tscn" id="2_8mh54"]
@ -81,6 +81,7 @@
[ext_resource type="PackedScene" uid="uid://dfat0erkvb513" path="res://Scenes/Actors/Fairy_New.tscn" id="73_s4x1s"] [ext_resource type="PackedScene" uid="uid://dfat0erkvb513" path="res://Scenes/Actors/Fairy_New.tscn" id="73_s4x1s"]
[ext_resource type="PackedScene" uid="uid://c21m7w5ahpsd0" path="res://Scenes/Activable/Shroud.tscn" id="74_oaf68"] [ext_resource type="PackedScene" uid="uid://c21m7w5ahpsd0" path="res://Scenes/Activable/Shroud.tscn" id="74_oaf68"]
[ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="77_yot54"] [ext_resource type="PackedScene" uid="uid://b3tyacxxw88lx" path="res://Scenes/Utils/StreamPlayerWithName.tscn" id="77_yot54"]
[ext_resource type="Resource" uid="uid://b0jpn0kkmciuq" path="res://Resources/Music/Overtime_Fairy_Dance.tres" id="82_ksslq"]
[sub_resource type="Resource" id="Resource_6sau4"] [sub_resource type="Resource" id="Resource_6sau4"]
script = ExtResource("7_l32kg") script = ExtResource("7_l32kg")
@ -1174,5 +1175,4 @@ position = Vector2(-1080, -399)
[node name="AudioStreamPlayer2D" parent="." instance=ExtResource("77_yot54")] [node name="AudioStreamPlayer2D" parent="." instance=ExtResource("77_yot54")]
process_mode = 3 process_mode = 3
autoplay = true autoplay = true
TrackName = "Level 1" MusicData = ExtResource("82_ksslq")
AuthorName = "Nobody"

View file

@ -0,0 +1,20 @@
using System;
using Godot;
namespace Cirno.Scripts.Resources;
[GlobalClass]
public partial class MusicResource : Resource
{
[Export]
public string TrackName { get; set; }
[Export]
public string AuthorName { get; set; }
[Export]
public bool ShowAuthor { get; set; }
[Export]
public AudioStream Track { get; set; }
}

View file

@ -0,0 +1 @@
uid://cx63lvsuj1787

View file

@ -6,23 +6,21 @@ using GTweens.Builders;
using GTweens.Easings; using GTweens.Easings;
using GTweens.Tweens; using GTweens.Tweens;
using GTweensGodot.Extensions; using GTweensGodot.Extensions;
using Cirno.Scripts.Resources;
public partial class AudioNameVisualizer : AudioStreamPlayer2D public partial class AudioNameVisualizer : AudioStreamPlayer2D
{ {
[Export] [Export]
public string TrackName { get; private set; } public MusicResource MusicData { get; private set; }
[Export]
public string AuthorName { get; private set; }
[Export] public PackedScene CanvasTemplate; [Export] public PackedScene CanvasTemplate;
private MusicVisualizerCanvas _canvasLayer; private MusicVisualizerCanvas _canvasLayer;
public override void _Ready() public override void _Ready()
{ {
Setup(); Setup();
if (Autoplay) if (Autoplay)
{ {
ShowName(); ShowName();
@ -31,6 +29,11 @@ public partial class AudioNameVisualizer : AudioStreamPlayer2D
private void Setup() private void Setup()
{ {
if (MusicData?.Track is not null)
{
this.Stream = MusicData.Track;
}
var existingCanvas = this.GetTree().Root.GetNodeOrNull<CanvasLayer>("AudioCanvas"); var existingCanvas = this.GetTree().Root.GetNodeOrNull<CanvasLayer>("AudioCanvas");
if (existingCanvas is null) if (existingCanvas is null)
@ -54,7 +57,11 @@ public partial class AudioNameVisualizer : AudioStreamPlayer2D
public void ShowName() public void ShowName()
{ {
GD.Print("show name"); if (MusicData is null)
_canvasLayer.ShowName(TrackName, AuthorName); {
GD.PushWarning("Music data was null");
return;
}
_canvasLayer.ShowName(MusicData.TrackName, MusicData.ShowAuthor ? MusicData.AuthorName : null);
} }
} }

View file

@ -18,7 +18,7 @@ public partial class MusicVisualizerCanvas : CanvasLayer
private void ResetLabel(string trackName, string authorName) private void ResetLabel(string trackName, string authorName)
{ {
_nameLabel.Text = $"{trackName} ({authorName})"; _nameLabel.Text = string.IsNullOrWhiteSpace(authorName) ? authorName : $"{trackName} ({authorName})";
_nameLabel.SetAnchorsAndOffsetsPreset(Control.LayoutPreset.BottomRight, margin: 0); _nameLabel.SetAnchorsAndOffsetsPreset(Control.LayoutPreset.BottomRight, margin: 0);
_nameLabel.Modulate = Colors.White; _nameLabel.Modulate = Colors.White;
_nameLabel.Hide(); _nameLabel.Hide();
@ -30,7 +30,7 @@ public partial class MusicVisualizerCanvas : CanvasLayer
//_tween?.Complete(); //_tween?.Complete();
ResetLabel(trackName, authorName); ResetLabel(trackName, authorName);
_nameLabel.Show(); _nameLabel.Show();
_tween = GTweenSequenceBuilder.New() _tween = GTweenSequenceBuilder.New()
.Append(_nameLabel.TweenPositionX(_nameLabel.Position.X + 32, 0f)) // Add offset .Append(_nameLabel.TweenPositionX(_nameLabel.Position.X + 32, 0f)) // Add offset
.Join(_nameLabel.TweenModulateAlpha(0, 0f)) // Invisibilify .Join(_nameLabel.TweenModulateAlpha(0, 0f)) // Invisibilify