@@ -124,7 +124,7 @@ public MainWindowViewModel(Dispatcher dispatcher)
124
124
SaveSelection . PropertyChanged += SaveSelection_PropertyChanged ;
125
125
SaveSelection . NewCustomSaveSelected += SaveSelection_CustomSaveAdded ;
126
126
127
- UpdateTargetsList ( ) ;
127
+ UpdateFromSaveProperties ( ) ;
128
128
}
129
129
130
130
private void SaveSelection_CustomSaveAdded ( ManualSavesLocationViewModel manualSaves , SaveGame save )
@@ -172,21 +172,26 @@ private void CachedSaveGame_SaveFileLoadError(SaveGame obj, Exception ex)
172
172
MessageBox . Show ( "An error occurred when loading the save file" ) ;
173
173
}
174
174
175
- private void UpdateTargetsList ( )
175
+ private void UpdateFromSaveProperties ( )
176
176
{
177
177
if ( PalTargetList != null ) PalTargetList . PropertyChanged -= PalTargetList_PropertyChanged ;
178
+ if ( GameSettings != null ) GameSettings . PropertyChanged -= GameSettings_PropertyChanged ;
178
179
179
180
if ( SaveSelection . SelectedGame ? . Value == null )
180
181
{
181
182
PalTargetList = null ;
182
183
PalTarget = null ;
184
+ GameSettings = null ;
183
185
}
184
186
else
185
187
{
186
188
CrashSupport . ReferencedSave ( SaveSelection . SelectedGame . Value ) ;
187
189
188
190
PalTargetList = targetsBySaveFile [ SaveSelection . SelectedGame . Value ] ;
189
191
PalTargetList . PropertyChanged += PalTargetList_PropertyChanged ;
192
+
193
+ GameSettings = GameSettingsViewModel . Load ( SaveSelection . SelectedGame . Value ) ;
194
+ GameSettings . PropertyChanged += GameSettings_PropertyChanged ;
190
195
}
191
196
192
197
UpdatePalTarget ( ) ;
@@ -200,11 +205,21 @@ private void UpdatePalTarget()
200
205
PalTarget = null ;
201
206
}
202
207
208
+ private void GameSettings_PropertyChanged ( object sender , PropertyChangedEventArgs e )
209
+ {
210
+ var saveGame = SaveSelection . SelectedGame ? . Value ;
211
+ if ( saveGame != null )
212
+ {
213
+ var settings = sender as GameSettingsViewModel ;
214
+ settings . Save ( saveGame ) ;
215
+ }
216
+ }
217
+
203
218
private void SaveSelection_PropertyChanged ( object sender , PropertyChangedEventArgs e )
204
219
{
205
220
if ( e . PropertyName == nameof ( SaveSelection . SelectedGame ) )
206
221
{
207
- UpdateTargetsList ( ) ;
222
+ UpdateFromSaveProperties ( ) ;
208
223
}
209
224
}
210
225
@@ -224,7 +239,7 @@ public void RunSolver()
224
239
var cachedData = SaveSelection . SelectedGame . CachedValue ;
225
240
if ( cachedData == null ) return ;
226
241
227
- var solver = SolverControls . ConfiguredSolver ( cachedData . OwnedPals ) ;
242
+ var solver = SolverControls . ConfiguredSolver ( GameSettings . ModelObject , cachedData . OwnedPals ) ;
228
243
solver . SolverStateUpdated += Solver_SolverStateUpdated ;
229
244
230
245
Task . Factory . StartNew ( ( ) =>
@@ -322,6 +337,8 @@ private void Solver_SolverStateUpdated(SolverStatus obj)
322
337
[ ObservableProperty ]
323
338
private SaveSelectorViewModel saveSelection ;
324
339
[ ObservableProperty ]
340
+ private GameSettingsViewModel gameSettings ;
341
+ [ ObservableProperty ]
325
342
private SolverControlsViewModel solverControls ;
326
343
[ ObservableProperty ]
327
344
private PalTargetListViewModel palTargetList ;
0 commit comments