1
+ using System . Threading . Tasks ;
2
+ using CommunityToolkit . Mvvm . Messaging ;
3
+ using Microsoft . Extensions . Logging ;
4
+ using OldBit . Spectron . Debugger . ViewModels ;
5
+ using OldBit . Spectron . Extensions ;
6
+ using OldBit . Spectron . Messages ;
7
+ using OldBit . Spectron . Theming ;
8
+
9
+ namespace OldBit . Spectron . ViewModels ;
10
+
11
+ partial class MainWindowViewModel
12
+ {
13
+ public async Task OpenPreferencesWindow ( )
14
+ {
15
+ var resumeAfter = false ;
16
+
17
+ if ( ! IsPaused )
18
+ {
19
+ Pause ( ) ;
20
+ resumeAfter = true ;
21
+ }
22
+
23
+ var preferences = await WeakReferenceMessenger . Default . Send ( new ShowPreferencesViewMessage ( _preferences , _gamepadManager ) ) ;
24
+
25
+ ThemeManager . SelectTheme ( preferences ? . Theme ?? _preferences . Theme ) ;
26
+
27
+ if ( preferences != null )
28
+ {
29
+ _preferences = preferences ;
30
+
31
+ IsUlaPlusEnabled = preferences . IsUlaPlusEnabled ;
32
+ Emulator . SetUlaPlus ( IsUlaPlusEnabled ) ;
33
+
34
+ TapeLoadSpeed = preferences . Tape . LoadSpeed ;
35
+ Emulator . SetTapeSettings ( _preferences . Tape ) ;
36
+
37
+ IsTimeMachineEnabled = preferences . TimeMachine . IsEnabled ;
38
+ _timeMachine . SnapshotInterval = preferences . TimeMachine . SnapshotInterval ;
39
+ _timeMachine . MaxDuration = preferences . TimeMachine . MaxDuration ;
40
+ TimeMachineCountdownSeconds = preferences . TimeMachine . CountdownSeconds ;
41
+
42
+ JoystickType = preferences . Joystick . JoystickType ;
43
+ MouseType = preferences . Mouse . MouseType ;
44
+ SetMouseCursor ( ) ;
45
+
46
+ ConfigureEmulatorSettings ( ) ;
47
+ }
48
+
49
+ if ( resumeAfter )
50
+ {
51
+ Resume ( ) ;
52
+ }
53
+ }
54
+
55
+ private async Task OpenTimeMachineWindow ( )
56
+ {
57
+ if ( ! _preferences . TimeMachine . IsEnabled || _isTimeMachineOpen )
58
+ {
59
+ return ;
60
+ }
61
+
62
+ if ( ! IsPaused )
63
+ {
64
+ Pause ( ) ;
65
+ }
66
+
67
+ _isTimeMachineOpen = true ;
68
+
69
+ var viewModel = new TimeMachineViewModel ( _timeMachine , Emulator ! . JoystickManager , Emulator . CommandManager , _logger ) ;
70
+
71
+ var entry = await WeakReferenceMessenger . Default . Send ( new ShowTimeMachineViewMessage ( viewModel ) ) ;
72
+
73
+ if ( entry != null )
74
+ {
75
+ var snapshot = entry . GetSnapshot ( ) ;
76
+
77
+ if ( snapshot == null )
78
+ {
79
+ _logger . LogError ( "Failed to get snapshot from time machine entry" ) ;
80
+ return ;
81
+ }
82
+
83
+ IsTimeMachineCountdownVisible = true ;
84
+
85
+ CreateEmulator ( snapshot ) ;
86
+ }
87
+
88
+ _isTimeMachineOpen = false ;
89
+
90
+ if ( ! IsTimeMachineCountdownVisible )
91
+ {
92
+ Resume ( ) ;
93
+ }
94
+ }
95
+
96
+ private static void OpenAboutWindow ( ) =>
97
+ WeakReferenceMessenger . Default . Send ( new ShowAboutViewMessage ( ) ) ;
98
+
99
+ private static void ShowKeyboardHelpWindow ( ) =>
100
+ WeakReferenceMessenger . Default . Send ( new ShowKeyboardViewMessage ( ) ) ;
101
+
102
+ private void OpenScreenshotViewer ( ) =>
103
+ WeakReferenceMessenger . Default . Send ( new ShowScreenshotViewMessage ( _screenshotViewModel ) ) ;
104
+
105
+ private void OpenTrainersWindow ( ) =>
106
+ WeakReferenceMessenger . Default . Send ( new ShowTrainerViewMessage ( Emulator ! , _pokeFile ) ) ;
107
+
108
+ private void OpenPrintOutputViewer ( ) =>
109
+ WeakReferenceMessenger . Default . Send ( new ShowPrintOutputViewMessage ( Emulator ! . Printer ) ) ;
110
+
111
+ private void OpenDebuggerWindow ( )
112
+ {
113
+ _debuggerViewModel = new DebuggerViewModel ( _debuggerContext , Emulator ! , _preferences . Debugger ) ;
114
+
115
+ if ( ! IsPaused )
116
+ {
117
+ Pause ( showOverlay : false ) ;
118
+ }
119
+
120
+ WeakReferenceMessenger . Default . Send ( new ShowDebuggerViewMessage ( _debuggerViewModel ) ) ;
121
+ }
122
+ }
0 commit comments