7
7
using CommunityToolkit . Mvvm . ComponentModel ;
8
8
using CommunityToolkit . Mvvm . Input ;
9
9
using Games . Providers ;
10
+ using Mods . Providers ;
10
11
using Ports . Ports ;
11
12
using System . Collections . Immutable ;
12
13
using System . Diagnostics ;
@@ -20,6 +21,8 @@ public sealed partial class CampaignsViewModel : RightPanelViewModel, IPortsButt
20
21
private readonly GamesProvider _gamesProvider ;
21
22
private readonly IConfigProvider _config ;
22
23
private readonly PlaytimeProvider _playtimeProvider ;
24
+ private readonly InstalledAddonsProvider _installedAddonsProvider ;
25
+ private readonly DownloadableAddonsProvider _downloadableAddonsProvider ;
23
26
24
27
25
28
[ Obsolete ( $ "Don't create directly. Use { nameof ( ViewModelsFactory ) } .") ]
@@ -29,18 +32,22 @@ public CampaignsViewModel(
29
32
IConfigProvider config ,
30
33
PlaytimeProvider playtimeProvider ,
31
34
ApiInterface apiInterface ,
32
- ScoresProvider scoresProvider
35
+ ScoresProvider scoresProvider ,
36
+ InstalledAddonsProviderFactory installedAddonsProviderFactory ,
37
+ DownloadableAddonsProviderFactory downloadableAddonsProviderFactory
33
38
) : base ( config , playtimeProvider , apiInterface , scoresProvider )
34
39
{
35
40
Game = game ;
36
41
37
42
_gamesProvider = gamesProvider ;
38
43
_config = config ;
39
44
_playtimeProvider = playtimeProvider ;
45
+ _installedAddonsProvider = installedAddonsProviderFactory . GetSingleton ( game ) ;
46
+ _downloadableAddonsProvider = downloadableAddonsProviderFactory . GetSingleton ( game ) ;
40
47
41
48
_gamesProvider . GameChangedEvent += OnGameChanged ;
42
- Game . DownloadableAddonsProvider . AddonDownloadedEvent += OnAddonChanged ;
43
- Game . InstalledAddonsProvider . AddonsChangedEvent += OnAddonChanged ;
49
+ _installedAddonsProvider . AddonsChangedEvent += OnAddonChanged ;
50
+ _downloadableAddonsProvider . AddonDownloadedEvent += OnAddonChanged ;
44
51
}
45
52
46
53
@@ -53,7 +60,7 @@ public ImmutableList<IAddon> CampaignsList
53
60
{
54
61
get
55
62
{
56
- var result = Game . GetCampaigns ( ) . Select ( x => x . Value ) ;
63
+ var result = _installedAddonsProvider . GetInstalledCampaigns ( ) . Select ( static x => x . Value ) ;
57
64
58
65
if ( string . IsNullOrWhiteSpace ( SearchBoxText ) )
59
66
{
@@ -110,7 +117,7 @@ public override IAddon? SelectedAddon
110
117
/// </summary>
111
118
private async Task UpdateAsync ( bool createNew )
112
119
{
113
- await Game . InstalledAddonsProvider . CreateCache ( createNew ) ;
120
+ await _installedAddonsProvider . CreateCache ( createNew ) ;
114
121
115
122
OnPropertyChanged ( nameof ( CampaignsList ) ) ;
116
123
}
@@ -128,7 +135,9 @@ private async Task StartCampaignAsync(object? command)
128
135
command . ThrowIfNotType < BasePort > ( out var port ) ;
129
136
SelectedAddon . ThrowIfNull ( ) ;
130
137
131
- var args = port . GetStartGameArgs ( Game , SelectedAddon , _config . SkipIntro , _config . SkipStartup ) ;
138
+ var mods = _installedAddonsProvider . GetInstalledMods ( ) ;
139
+
140
+ var args = port . GetStartGameArgs ( Game , SelectedAddon , mods , _config . SkipIntro , _config . SkipStartup ) ;
132
141
133
142
await StartPortAsync ( SelectedAddon . Id , port . FullPathToExe , args ) ;
134
143
}
@@ -166,7 +175,7 @@ private void DeleteCampaign()
166
175
{
167
176
SelectedAddon . ThrowIfNull ( ) ;
168
177
169
- Game . InstalledAddonsProvider . DeleteAddon ( SelectedAddon ) ;
178
+ _installedAddonsProvider . DeleteAddon ( SelectedAddon ) ;
170
179
171
180
OnPropertyChanged ( nameof ( CampaignsList ) ) ;
172
181
}
0 commit comments