@@ -84,7 +84,7 @@ class GameplayController: WKInterfaceController {
84
84
@IBAction func BSelected( ) { pressInputOnce ( . B) }
85
85
86
86
@IBAction func resetSelected( ) {
87
- loader . core? . resetEmulation ( )
87
+ core? . resetEmulation ( )
88
88
}
89
89
90
90
@IBOutlet var ALabel : WKInterfaceLabel !
@@ -94,7 +94,7 @@ class GameplayController: WKInterfaceController {
94
94
95
95
func updateDirectionalInputs( ) {
96
96
97
- guard let core = loader . core else {
97
+ guard let core = core else {
98
98
DPadLabel . setText ( GameInput ( rawValue: 0 ) . displaySymbol)
99
99
return
100
100
}
@@ -126,6 +126,18 @@ class GameplayController: WKInterfaceController {
126
126
}
127
127
128
128
let loader = GameLoader . shared
129
+ var core : GameCore ? {
130
+ didSet {
131
+ if let core = core {
132
+ core. didRender = { [ weak self] buffer in
133
+ guard let s = self else {
134
+ return
135
+ }
136
+ s. updateSnapshotIfNeeded ( with: buffer)
137
+ }
138
+ }
139
+ }
140
+ }
129
141
130
142
var tick = 0
131
143
let refreshRate = 20 ;
@@ -139,14 +151,8 @@ class GameplayController: WKInterfaceController {
139
151
}
140
152
141
153
let success : ( ( GameCore ) -> Void ) = { [ unowned self] ( core) in
142
- core. didRender = { [ weak self] buffer in
143
- guard let s = self else {
144
- return
145
- }
146
- s. updateSnapshotIfNeeded ( with: buffer)
147
- }
154
+ self . core = core
148
155
}
149
-
150
156
let failureHandler : ( ( Error ) -> Void ) = { [ unowned self] ( error) in
151
157
print ( " error loading game \( error) " )
152
158
self . presentAlert ( withTitle: " There was an issue loading this game " , message: nil , preferredStyle: . alert, actions: [
@@ -166,9 +172,9 @@ class GameplayController: WKInterfaceController {
166
172
override func didAppear( ) {
167
173
super. didAppear ( )
168
174
169
- if let core = loader. core {
175
+ if let core = core {
176
+ core. startEmulation ( )
170
177
core. load ( fromSlot: 0 )
171
- core. paused = false
172
178
}
173
179
174
180
crownSequencer. delegate = self
@@ -178,25 +184,25 @@ class GameplayController: WKInterfaceController {
178
184
override func didDeactivate( ) {
179
185
super. didDeactivate ( )
180
186
181
- if let core = loader . core {
187
+ if let core = core {
182
188
core. save ( toSlot: 0 )
183
- core. paused = true ;
189
+ core. stopEmulation ( )
184
190
}
185
191
186
192
crownSequencer. delegate = nil
187
193
crownSequencer. resignFocus ( )
188
194
}
189
-
195
+
190
196
var lastSnapshot : UIImage ?
191
197
192
198
func updateSnapshotIfNeeded( with buffer: UnsafeMutablePointer < UInt32 > ) {
193
199
194
200
tick += 1
195
- if tick > refreshRate || loader . core == nil {
201
+ if tick > refreshRate || core == nil {
196
202
return
197
203
}
198
204
199
- let snapshot = loader . core!. createSnapshot ( from: buffer)
205
+ let snapshot = core!. createSnapshot ( from: buffer)
200
206
201
207
// compare before updating. Not sure if faster.
202
208
// if let lhs = lastSnapshot, let rhs = snapshot, lhs.equalPixels(to: rhs) {
@@ -224,7 +230,7 @@ class GameplayController: WKInterfaceController {
224
230
225
231
func setInputSelected( _ input: GameInput , selected: Bool ) {
226
232
227
- if let core = loader . core {
233
+ if let core = core {
228
234
core. update ( input, selected: selected)
229
235
}
230
236
0 commit comments