Skip to content

Commit f61e78b

Browse files
2 parents df62e00 + c62bd17 commit f61e78b

File tree

62 files changed

+1872
-1395
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1872
-1395
lines changed

Diff for: Editors/Audio/AudioEditor/AudioProjectService.cs renamed to Editors/Audio/AudioEditor/AudioEditorService.cs

+55-21
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Collections.ObjectModel;
34
using System.IO;
45
using System.Linq;
56
using System.Text;
67
using System.Text.Json;
78
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;
916
using Editors.Audio.AudioProjectCompiler;
1017
using Editors.Audio.GameSettings.Warhammer3;
1118
using Serilog;
@@ -15,12 +22,13 @@
1522
using Shared.Core.Services;
1623
using static Editors.Audio.GameSettings.Warhammer3.DialogueEvents;
1724
using static Editors.Audio.GameSettings.Warhammer3.StateGroups;
25+
using TreeNode = Editors.Audio.AudioEditor.AudioProjectExplorer.TreeNode;
1826

1927
namespace Editors.Audio.AudioEditor
2028
{
21-
public class AudioProjectService : IAudioProjectService
29+
public class AudioEditorService : IAudioEditorService
2230
{
23-
readonly ILogger _logger = Logging.Create<AudioProjectService>();
31+
readonly ILogger _logger = Logging.Create<AudioEditorService>();
2432

2533
private readonly IPackFileService _packFileService;
2634
private readonly IFileSaveService _fileSaveService;
@@ -31,7 +39,7 @@ public class AudioProjectService : IAudioProjectService
3139
private readonly WemGenerator _wemGenerator;
3240
private readonly DatGenerator _datGenerator;
3341

34-
public AudioProjectService(
42+
public AudioEditorService(
3543
IPackFileService packFileService,
3644
IFileSaveService fileSaveService,
3745
IStandardDialogs standardDialogs,
@@ -54,9 +62,15 @@ public AudioProjectService(
5462
public AudioProject AudioProject { get; set; }
5563
public string AudioProjectFileName { get; set; }
5664
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; } = [];
5872
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.
6074

6175
public void SaveAudioProject()
6276
{
@@ -88,10 +102,10 @@ public void LoadAudioProject(AudioEditorViewModel audioEditorViewModel)
88102
var bytes = file.DataSource.ReadData();
89103
var audioProjectJson = Encoding.UTF8.GetString(bytes);
90104

91-
audioEditorViewModel.AudioProjectExplorerViewModel.AudioProjectExplorerLabel = $"Audio Project Explorer - {DataHelpers.AddExtraUnderscoresToString(fileName)}";
105+
audioEditorViewModel.AudioProjectExplorerViewModel.AudioProjectExplorerLabel = $"Audio Project Explorer - {DataGridHelpers.AddExtraUnderscoresToString(fileName)}";
92106

93107
// Reset data
94-
audioEditorViewModel.ResetAudioEditorViewModelData();
108+
audioEditorViewModel.ResetAudioEditorData();
95109
ResetAudioProject();
96110

97111
// Set the AudioProject
@@ -100,24 +114,24 @@ public void LoadAudioProject(AudioEditorViewModel audioEditorViewModel)
100114
AudioProjectDirectory = filePath.Replace($"\\{fileName}", string.Empty);
101115

102116
// 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);
104118
MergeSavedAudioProjectIntoAudioProjectWithUnusedItems(savedProject);
105119

106120
// Initialise data after AudioProject is set so it uses the correct instance
107-
audioEditorViewModel.Initialise();
121+
audioEditorViewModel.InitialiseAudioEditorData();
108122

109123
// Get the Modded States and prepare them for being added to the DataGrid ComboBoxes
110-
BuildStateGroupsWithModdedStatesRepository(AudioProject.StateGroups, StateGroupsWithModdedStatesRepository);
124+
BuildModdedStatesByStateGroupLookup(AudioProject.StateGroups, ModdedStatesByStateGroupLookup);
111125

112126
_integrityChecker.CheckAudioProjectDialogueEventIntegrity(this);
113127

114128
_logger.Here().Information($"Loaded Audio Project: {fileName}");
115129
}
116130
}
117131

118-
public void InitialiseAudioProject(AudioEditorViewModel audioEditorViewModel, string fileName, string directory, string language)
132+
public void InitialiseAudioProject(string fileName, string directory, string language)
119133
{
120-
audioEditorViewModel.AudioProjectExplorerViewModel.AudioProjectExplorerLabel = $"Audio Project Explorer - {DataHelpers.AddExtraUnderscoresToString(fileName)}";
134+
AudioEditorViewModel.AudioProjectExplorerViewModel.AudioProjectExplorerLabel = $"Audio Project Explorer - {DataGridHelpers.AddExtraUnderscoresToString(fileName)}";
121135

122136
AudioProjectFileName = fileName;
123137
AudioProjectDirectory = directory;
@@ -129,7 +143,7 @@ public void InitialiseAudioProject(AudioEditorViewModel audioEditorViewModel, st
129143

130144
SortSoundBanksAlphabetically();
131145

132-
audioEditorViewModel.AudioProjectExplorerViewModel.CreateAudioProjectTree();
146+
AudioEditorViewModel.AudioProjectExplorerViewModel.CreateAudioProjectTree();
133147
}
134148

135149
public void CompileAudioProject()
@@ -238,23 +252,23 @@ public void SortSoundBanksAlphabetically()
238252
AudioProject.SoundBanks.Add(soundBank);
239253
}
240254

241-
public void BuildStateGroupsWithModdedStatesRepository(List<StateGroup> moddedStateGroups, Dictionary<string, List<string>> stateGroupsWithModdedStatesRepository)
255+
public void BuildModdedStatesByStateGroupLookup(List<StateGroup> moddedStateGroups, Dictionary<string, List<string>> moddedStatesByStateGroupLookup)
242256
{
243-
if (stateGroupsWithModdedStatesRepository == null)
244-
stateGroupsWithModdedStatesRepository = new Dictionary<string, List<string>>();
257+
if (moddedStatesByStateGroupLookup == null)
258+
moddedStatesByStateGroupLookup = new Dictionary<string, List<string>>();
245259
else
246-
stateGroupsWithModdedStatesRepository.Clear();
260+
moddedStatesByStateGroupLookup.Clear();
247261

248262
foreach (var stateGroup in moddedStateGroups)
249263
{
250264
if (stateGroup.States != null && stateGroup.States.Count > 0)
251265
{
252266
foreach (var state in stateGroup.States)
253267
{
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>();
256270

257-
stateGroupsWithModdedStatesRepository[stateGroup.Name].Add(state.Name);
271+
moddedStatesByStateGroupLookup[stateGroup.Name].Add(state.Name);
258272
}
259273
}
260274
}
@@ -392,5 +406,25 @@ public void ResetAudioProject()
392406
{
393407
AudioProject = new AudioProject();
394408
}
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+
}
395429
}
396430
}

Diff for: Editors/Audio/AudioEditor/AudioEditorViewModel.cs

+34-32
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public partial class AudioEditorViewModel : ObservableObject, IEditorInterface
2323

2424
private readonly IPackFileService _packFileService;
2525
private readonly IStandardDialogs _standardDialogs;
26-
private readonly IAudioProjectService _audioProjectService;
26+
private readonly IAudioEditorService _audioEditorService;
2727
private readonly IntegrityChecker _integrityChecker;
2828

2929
public string DisplayName { get; set; } = "Audio Editor";
@@ -36,54 +36,65 @@ public AudioEditorViewModel(
3636
AudioSettingsViewModel audioSettingsViewModel,
3737
IPackFileService packFileService,
3838
IStandardDialogs standardDialogs,
39-
IAudioProjectService audioProjectService,
39+
IAudioEditorService audioEditorService,
4040
IntegrityChecker integrityChecker)
4141
{
42-
AudioProjectExplorerViewModel = audioProjectExplorerViewModel;
43-
AudioProjectExplorerViewModel.AudioEditorViewModel = this;
42+
_packFileService = packFileService;
43+
_standardDialogs = standardDialogs;
44+
_audioEditorService = audioEditorService;
45+
_integrityChecker = integrityChecker;
4446

47+
AudioProjectExplorerViewModel = audioProjectExplorerViewModel;
4548
AudioFilesExplorerViewModel = audioFilesExplorerViewModel;
46-
AudioFilesExplorerViewModel.AudioEditorViewModel = this;
47-
4849
AudioProjectEditorViewModel = audioProjectEditorViewModel;
49-
AudioProjectEditorViewModel.AudioEditorViewModel = this;
50-
5150
AudioProjectViewerViewModel = audioProjectViewerViewModel;
52-
AudioProjectViewerViewModel.AudioEditorViewModel = this;
53-
5451
AudioSettingsViewModel = audioSettingsViewModel;
5552

56-
_packFileService = packFileService;
57-
_standardDialogs = standardDialogs;
58-
_audioProjectService = audioProjectService;
59-
_integrityChecker = integrityChecker;
53+
InitialiseAudioEditorData();
6054

61-
Initialise();
55+
InitialiseAudioEditorService();
6256

63-
_integrityChecker.CheckAudioEditorDialogueEventIntegrity(DialogueEventData);
57+
_integrityChecker.CheckDialogueEventIntegrity(DialogueEventData);
6458
}
6559

6660
[RelayCommand] public void NewAudioProject()
6761
{
68-
NewAudioProjectWindow.Show(this, _packFileService, _audioProjectService, _standardDialogs);
62+
NewAudioProjectWindow.Show(_packFileService, _audioEditorService, _standardDialogs);
6963
}
7064

7165
[RelayCommand] public void SaveAudioProject()
7266
{
73-
_audioProjectService.SaveAudioProject();
67+
_audioEditorService.SaveAudioProject();
7468
}
7569

7670
[RelayCommand] public void LoadAudioProject()
7771
{
78-
_audioProjectService.LoadAudioProject(this);
72+
_audioEditorService.LoadAudioProject(this);
7973
}
8074

8175
[RelayCommand] public void CompileAudioProject()
8276
{
83-
_audioProjectService.CompileAudioProject();
77+
_audioEditorService.CompileAudioProject();
8478
}
8579

86-
public void ResetAudioEditorViewModelData()
80+
public void InitialiseAudioEditorData()
81+
{
82+
AudioProjectEditorViewModel.AudioProjectEditorDataGrid = [];
83+
AudioProjectViewerViewModel.AudioProjectViewerDataGrid = [];
84+
AudioProjectViewerViewModel.SelectedDataGridRows = [];
85+
AudioProjectViewerViewModel.CopiedDataGridRows = [];
86+
AudioProjectExplorerViewModel.DialogueEventPresets = [];
87+
}
88+
private void InitialiseAudioEditorService()
89+
{
90+
_audioEditorService.AudioEditorViewModel = this;
91+
_audioEditorService.AudioProjectExplorerViewModel = AudioProjectExplorerViewModel;
92+
_audioEditorService.AudioFilesExplorerViewModel = AudioFilesExplorerViewModel;
93+
_audioEditorService.AudioProjectEditorViewModel = AudioProjectEditorViewModel;
94+
_audioEditorService.AudioProjectViewerViewModel = AudioProjectViewerViewModel;
95+
_audioEditorService.AudioSettingsViewModel = AudioSettingsViewModel;
96+
}
97+
public void ResetAudioEditorData()
8798
{
8899
AudioProjectEditorViewModel.AudioProjectEditorDataGrid = null;
89100
AudioProjectViewerViewModel.AudioProjectViewerDataGrid = null;
@@ -93,19 +104,10 @@ public void ResetAudioEditorViewModelData()
93104
AudioProjectExplorerViewModel.AudioProjectTree.Clear();
94105
}
95106

96-
public void Initialise()
97-
{
98-
AudioProjectEditorViewModel.AudioProjectEditorDataGrid = [];
99-
AudioProjectViewerViewModel.AudioProjectViewerDataGrid = [];
100-
AudioProjectViewerViewModel.SelectedDataGridRows = [];
101-
AudioProjectViewerViewModel.CopiedDataGridRows = [];
102-
AudioProjectExplorerViewModel.DialogueEventPresets = [];
103-
}
104-
105107
public void Close()
106108
{
107-
ResetAudioEditorViewModelData();
108-
_audioProjectService.ResetAudioProject();
109+
ResetAudioEditorData();
110+
_audioEditorService.ResetAudioProject();
109111
}
110112
}
111113
}

0 commit comments

Comments
 (0)