1
1
using System ;
2
2
using System . Collections . Generic ;
3
+ using System . Collections . ObjectModel ;
3
4
using System . IO ;
4
5
using System . Linq ;
5
6
using System . Text ;
6
7
using System . Text . Json ;
7
8
using System . Text . Json . Serialization ;
8
- using Editors . Audio . AudioEditor . Data ;
9
+ using Editors . Audio . AudioEditor . AudioFilesExplorer ;
10
+ using Editors . Audio . AudioEditor . AudioProjectData ;
11
+ using Editors . Audio . AudioEditor . AudioProjectEditor ;
12
+ using Editors . Audio . AudioEditor . AudioProjectExplorer ;
13
+ using Editors . Audio . AudioEditor . AudioProjectViewer ;
14
+ using Editors . Audio . AudioEditor . AudioSettings ;
15
+ using Editors . Audio . AudioEditor . DataGrids ;
9
16
using Editors . Audio . AudioProjectCompiler ;
10
17
using Editors . Audio . GameSettings . Warhammer3 ;
11
18
using Serilog ;
15
22
using Shared . Core . Services ;
16
23
using static Editors . Audio . GameSettings . Warhammer3 . DialogueEvents ;
17
24
using static Editors . Audio . GameSettings . Warhammer3 . StateGroups ;
25
+ using TreeNode = Editors . Audio . AudioEditor . AudioProjectExplorer . TreeNode ;
18
26
19
27
namespace Editors . Audio . AudioEditor
20
28
{
21
- public class AudioProjectService : IAudioProjectService
29
+ public class AudioEditorService : IAudioEditorService
22
30
{
23
- readonly ILogger _logger = Logging . Create < AudioProjectService > ( ) ;
31
+ readonly ILogger _logger = Logging . Create < AudioEditorService > ( ) ;
24
32
25
33
private readonly IPackFileService _packFileService ;
26
34
private readonly IFileSaveService _fileSaveService ;
@@ -31,7 +39,7 @@ public class AudioProjectService : IAudioProjectService
31
39
private readonly WemGenerator _wemGenerator ;
32
40
private readonly DatGenerator _datGenerator ;
33
41
34
- public AudioProjectService (
42
+ public AudioEditorService (
35
43
IPackFileService packFileService ,
36
44
IFileSaveService fileSaveService ,
37
45
IStandardDialogs standardDialogs ,
@@ -54,9 +62,15 @@ public AudioProjectService(
54
62
public AudioProject AudioProject { get ; set ; }
55
63
public string AudioProjectFileName { get ; set ; }
56
64
public string AudioProjectDirectory { get ; set ; }
57
- public Dictionary < string , List < string > > StateGroupsWithModdedStatesRepository { get ; set ; } = [ ] ;
65
+ public AudioEditorViewModel AudioEditorViewModel { get ; set ; }
66
+ public AudioProjectExplorerViewModel AudioProjectExplorerViewModel { get ; set ; }
67
+ public AudioFilesExplorerViewModel AudioFilesExplorerViewModel { get ; set ; }
68
+ public AudioProjectEditorViewModel AudioProjectEditorViewModel { get ; set ; }
69
+ public AudioProjectViewerViewModel AudioProjectViewerViewModel { get ; set ; }
70
+ public AudioSettingsViewModel AudioSettingsViewModel { get ; set ; }
71
+ public Dictionary < string , List < string > > ModdedStatesByStateGroupLookup { get ; set ; } = [ ] ;
58
72
public Dictionary < string , List < string > > DialogueEventsWithStateGroupsWithIntegrityError { get ; set ; } = [ ] ;
59
- public Dictionary < string , DialogueEventPreset ? > DialogueEventSoundBankFiltering { get ; set ; } = [ ] ;
73
+ public Dictionary < string , DialogueEventPreset ? > DialogueEventSoundBankFiltering { get ; set ; } = [ ] ; // TODO: Check if unused? Also check for other unused functions.
60
74
61
75
public void SaveAudioProject ( )
62
76
{
@@ -88,10 +102,10 @@ public void LoadAudioProject(AudioEditorViewModel audioEditorViewModel)
88
102
var bytes = file . DataSource . ReadData ( ) ;
89
103
var audioProjectJson = Encoding . UTF8 . GetString ( bytes ) ;
90
104
91
- audioEditorViewModel . AudioProjectExplorerViewModel . AudioProjectExplorerLabel = $ "Audio Project Explorer - { DataHelpers . AddExtraUnderscoresToString ( fileName ) } ";
105
+ audioEditorViewModel . AudioProjectExplorerViewModel . AudioProjectExplorerLabel = $ "Audio Project Explorer - { DataGridHelpers . AddExtraUnderscoresToString ( fileName ) } ";
92
106
93
107
// Reset data
94
- audioEditorViewModel . ResetAudioEditorViewModelData ( ) ;
108
+ audioEditorViewModel . ResetAudioEditorData ( ) ;
95
109
ResetAudioProject ( ) ;
96
110
97
111
// Set the AudioProject
@@ -100,24 +114,24 @@ public void LoadAudioProject(AudioEditorViewModel audioEditorViewModel)
100
114
AudioProjectDirectory = filePath . Replace ( $ "\\ { fileName } ", string . Empty ) ;
101
115
102
116
// Initialise a full Audio Project and merge the saved Audio Project with it
103
- InitialiseAudioProject ( audioEditorViewModel , AudioProjectFileName , AudioProjectDirectory , savedProject . Language ) ;
117
+ InitialiseAudioProject ( AudioProjectFileName , AudioProjectDirectory , savedProject . Language ) ;
104
118
MergeSavedAudioProjectIntoAudioProjectWithUnusedItems ( savedProject ) ;
105
119
106
120
// Initialise data after AudioProject is set so it uses the correct instance
107
- audioEditorViewModel . Initialise ( ) ;
121
+ audioEditorViewModel . InitialiseAudioEditorData ( ) ;
108
122
109
123
// Get the Modded States and prepare them for being added to the DataGrid ComboBoxes
110
- BuildStateGroupsWithModdedStatesRepository ( AudioProject . StateGroups , StateGroupsWithModdedStatesRepository ) ;
124
+ BuildModdedStatesByStateGroupLookup ( AudioProject . StateGroups , ModdedStatesByStateGroupLookup ) ;
111
125
112
126
_integrityChecker . CheckAudioProjectDialogueEventIntegrity ( this ) ;
113
127
114
128
_logger . Here ( ) . Information ( $ "Loaded Audio Project: { fileName } ") ;
115
129
}
116
130
}
117
131
118
- public void InitialiseAudioProject ( AudioEditorViewModel audioEditorViewModel , string fileName , string directory , string language )
132
+ public void InitialiseAudioProject ( string fileName , string directory , string language )
119
133
{
120
- audioEditorViewModel . AudioProjectExplorerViewModel . AudioProjectExplorerLabel = $ "Audio Project Explorer - { DataHelpers . AddExtraUnderscoresToString ( fileName ) } ";
134
+ AudioEditorViewModel . AudioProjectExplorerViewModel . AudioProjectExplorerLabel = $ "Audio Project Explorer - { DataGridHelpers . AddExtraUnderscoresToString ( fileName ) } ";
121
135
122
136
AudioProjectFileName = fileName ;
123
137
AudioProjectDirectory = directory ;
@@ -129,7 +143,7 @@ public void InitialiseAudioProject(AudioEditorViewModel audioEditorViewModel, st
129
143
130
144
SortSoundBanksAlphabetically ( ) ;
131
145
132
- audioEditorViewModel . AudioProjectExplorerViewModel . CreateAudioProjectTree ( ) ;
146
+ AudioEditorViewModel . AudioProjectExplorerViewModel . CreateAudioProjectTree ( ) ;
133
147
}
134
148
135
149
public void CompileAudioProject ( )
@@ -238,23 +252,23 @@ public void SortSoundBanksAlphabetically()
238
252
AudioProject . SoundBanks . Add ( soundBank ) ;
239
253
}
240
254
241
- public void BuildStateGroupsWithModdedStatesRepository ( List < StateGroup > moddedStateGroups , Dictionary < string , List < string > > stateGroupsWithModdedStatesRepository )
255
+ public void BuildModdedStatesByStateGroupLookup ( List < StateGroup > moddedStateGroups , Dictionary < string , List < string > > moddedStatesByStateGroupLookup )
242
256
{
243
- if ( stateGroupsWithModdedStatesRepository == null )
244
- stateGroupsWithModdedStatesRepository = new Dictionary < string , List < string > > ( ) ;
257
+ if ( moddedStatesByStateGroupLookup == null )
258
+ moddedStatesByStateGroupLookup = new Dictionary < string , List < string > > ( ) ;
245
259
else
246
- stateGroupsWithModdedStatesRepository . Clear ( ) ;
260
+ moddedStatesByStateGroupLookup . Clear ( ) ;
247
261
248
262
foreach ( var stateGroup in moddedStateGroups )
249
263
{
250
264
if ( stateGroup . States != null && stateGroup . States . Count > 0 )
251
265
{
252
266
foreach ( var state in stateGroup . States )
253
267
{
254
- if ( ! stateGroupsWithModdedStatesRepository . ContainsKey ( stateGroup . Name ) )
255
- stateGroupsWithModdedStatesRepository [ stateGroup . Name ] = new List < string > ( ) ;
268
+ if ( ! moddedStatesByStateGroupLookup . ContainsKey ( stateGroup . Name ) )
269
+ moddedStatesByStateGroupLookup [ stateGroup . Name ] = new List < string > ( ) ;
256
270
257
- stateGroupsWithModdedStatesRepository [ stateGroup . Name ] . Add ( state . Name ) ;
271
+ moddedStatesByStateGroupLookup [ stateGroup . Name ] . Add ( state . Name ) ;
258
272
}
259
273
}
260
274
}
@@ -392,5 +406,25 @@ public void ResetAudioProject()
392
406
{
393
407
AudioProject = new AudioProject ( ) ;
394
408
}
409
+
410
+ public TreeNode GetSelectedExplorerNode ( )
411
+ {
412
+ return AudioProjectExplorerViewModel . _selectedAudioProjectTreeNode ;
413
+ }
414
+
415
+ public ObservableCollection < Dictionary < string , string > > GetEditorDataGrid ( )
416
+ {
417
+ return AudioProjectEditorViewModel . AudioProjectEditorDataGrid ;
418
+ }
419
+
420
+ public ObservableCollection < Dictionary < string , string > > GetViewerDataGrid ( )
421
+ {
422
+ return AudioProjectViewerViewModel . AudioProjectViewerDataGrid ;
423
+ }
424
+
425
+ public ObservableCollection < Dictionary < string , string > > GetSelectedViewerRows ( )
426
+ {
427
+ return AudioProjectViewerViewModel . SelectedDataGridRows ;
428
+ }
395
429
}
396
430
}
0 commit comments