@@ -10,19 +10,16 @@ namespace murph9.TabPlayer.scenes;
10
10
public partial class SongDisplay : VBoxContainer
11
11
{
12
12
[ Signal ]
13
- public delegate void SongSelectedEventHandler ( string folder ) ;
13
+ public delegate void SongSelectedEventHandler ( string folder , string instrument ) ;
14
14
15
15
private string _folderName ;
16
16
17
17
public override void _Ready ( ) { }
18
18
19
19
public override void _Process ( double delta ) { }
20
20
21
- private void Play_Selected ( ) => EmitSignal ( SignalName . SongSelected , _folderName ) ;
22
-
23
21
public void SongChanged ( string folderName ) {
24
22
_folderName = folderName ;
25
- GetNode < Button > ( "PlayButton" ) . Visible = true ; // please don't press it before we are ready
26
23
LoadSong ( ) ;
27
24
}
28
25
@@ -42,18 +39,30 @@ private void LoadSong() {
42
39
var grid = GetNode < GridContainer > ( "InstrumentGridContainer" ) ;
43
40
grid . GetChildren ( ) . ToList ( ) . ForEach ( grid . RemoveChild ) ; // remove all children from the grid
44
41
45
- grid . AddChild ( new Label ( ) { Text = "Instrument Name" } ) ;
42
+ grid . AddChild ( new Label ( ) ) ;
46
43
grid . AddChild ( new Label ( ) { Text = "Tuning" } ) ;
47
44
grid . AddChild ( new Label ( ) { Text = "Note Counts" } ) ;
48
45
grid . AddChild ( new Label ( ) { Text = "Note Density" } ) ;
49
-
46
+
50
47
grid . Columns = grid . GetChildren ( ) . Count ;
51
48
52
- foreach ( var i in songInfo . Instruments ) {
53
- grid . AddChild ( new Label ( ) { Text = i . Name } ) ;
49
+ var insturmentsOrdered = songInfo . Instruments . OrderBy ( x =>
50
+ {
51
+ if ( SongInfo . INSTRUMENT_ORDER . ContainsKey ( x . Name ) )
52
+ return SongInfo . INSTRUMENT_ORDER [ x . Name ] ;
53
+ // handle all other entries as in given order
54
+ return 999 ;
55
+ } ) . ToList ( ) ;
56
+
57
+ foreach ( var i in insturmentsOrdered ) {
58
+ var button = new Button ( ) { Text = "Play " + i . Name . Capitalize ( ) } ;
59
+ button . Pressed += ( ) => {
60
+ EmitSignal ( SignalName . SongSelected , _folderName , i . Name ) ;
61
+ } ;
62
+ grid . AddChild ( button ) ;
54
63
grid . AddChild ( new Label ( ) { Text = Instrument . CalcTuningName ( i . Config . Tuning , i . Config . CapoFret ) } ) ;
55
64
grid . AddChild ( new Label ( ) { Text = $ "{ i . TotalNoteCount ( ) } , c: { i . ChordCount ( ) } , n: { i . SingleNoteCount ( ) } " } ) ;
56
- grid . AddChild ( new Label ( ) { Text = i . GetNoteDensity ( songInfo ) . ToString ( ) } ) ;
65
+ grid . AddChild ( new Label ( ) { Text = i . GetNoteDensity ( songInfo ) . ToFixedPlaces ( 2 ) } ) ;
57
66
}
58
67
}
59
68
}
0 commit comments