@@ -128,56 +128,57 @@ class Game {
128
128
129
129
tx . outs . forEach ( ( out ) => {
130
130
try {
131
- this . games [ gameAddress ] = this . games [ gameAddress ] || angular . copy ( this . gameInitState ) ;
131
+ let game = this . games [ gameAddress ] || angular . copy ( this . gameInitState ) ;
132
132
133
133
const chunks = bitcoinjs . script . decompile ( out . script ) ;
134
134
if ( chunks . shift ( ) === bitcoinjs . opcodes . OP_RETURN ) {
135
135
const message = chunks . toString ( ) ;
136
136
debug ( 'OP_RETURN Message: ' + message ) ;
137
137
138
138
if ( message === this . commands . new ) {
139
- this . games [ gameAddress ] . state = 'open' ;
140
- this . games [ gameAddress ] . address . value = tx . outs [ 1 ] . value ;
141
- this . games [ gameAddress ] . address . public = gameAddress ;
142
- this . games [ gameAddress ] . players . one = pubKeyIn ;
139
+ game . state = 'open' ;
140
+ game . address . value = tx . outs [ 1 ] . value ;
141
+ game . address . public = gameAddress ;
142
+ game . players . one = pubKeyIn ;
143
143
} else if ( message === this . commands . pass ) {
144
- if ( pubKeyIn === this . games [ gameAddress ] . players . one || pubKeyIn === this . games [ gameAddress ] . players . two ) {
145
- if ( this . games [ gameAddress ] . state !== 'pass' ) {
146
- this . games [ gameAddress ] . state = 'pass' ;
144
+ if ( pubKeyIn === game . players . one || pubKeyIn === game . players . two ) {
145
+ if ( game . state !== 'pass' ) {
146
+ game . state = 'pass' ;
147
147
} else {
148
- this . games [ gameAddress ] . state = 'end' ;
148
+ game . state = 'end' ;
149
149
}
150
150
}
151
151
} else if ( message === this . commands . join ) {
152
- this . games [ gameAddress ] . state = 'running' ;
153
- this . games [ gameAddress ] . players . two = pubKeyIn ;
154
- this . games [ gameAddress ] . address . paymentFromTwo = tx . outs [ 2 ] . pubKey ;
152
+ game . state = 'running' ;
153
+ game . players . two = pubKeyIn ;
154
+ game . address . paymentFromTwo = tx . outs [ 2 ] . pubKey ;
155
155
156
156
if ( this . wallet . isOwnAddress ( this . currentGame . players . one ) ) {
157
157
const pubKeys = [ ] ;
158
158
pubKeys [ 0 ] = new Buffer ( this . masterAddress ) ;
159
- pubKeys [ 1 ] = new Buffer ( this . games [ gameAddress ] . players . one ) ;
160
- pubKeys [ 2 ] = new Buffer ( this . games [ gameAddress ] . players . two ) ;
161
- pubKeys [ 3 ] = new Buffer ( this . games [ gameAddress ] . address . public ) ;
159
+ pubKeys [ 1 ] = new Buffer ( game . players . one ) ;
160
+ pubKeys [ 2 ] = new Buffer ( game . players . two ) ;
161
+ pubKeys [ 3 ] = new Buffer ( game . address . public ) ;
162
162
163
163
const redeemScript = bitcoinjs . script . multisigOutput ( 3 , pubKeys ) ; // 3 of 4
164
164
const scriptPubKey = bitcoinjs . script . scriptHashOutput ( bitcoinjs . crypto . hash160 ( redeemScript ) ) ;
165
- const payAddress = bitcoinjs . address . fromOutputScript ( scriptPubKey , bitcoinjs . networks . testnet ) ;
165
+ const payAddress = bitcoinjs . address . fromOutputScript ( scriptPubKey , bitcoinjs . networks . testnet ) ;
166
166
167
- if ( this . games [ gameAddress ] . address . paymentFromTwo === payAddress ) {
168
- this . games [ gameAddress ] . address . payment = payAddress ;
167
+ if ( game . address . paymentFromTwo === payAddress ) {
168
+ game . address . payment = payAddress ;
169
169
this . wallet . spendOpenGame ( gameAddress , payAddress ) ;
170
170
}
171
171
}
172
172
} else {
173
173
const data = JSON . parse ( message ) ;
174
174
const move = { y : data . y , x : data . x , n : data . n , p : data . p , pk : pubKeyIn } ;
175
- this . games [ gameAddress ] . moves [ move . n ] = move ;
175
+ game . moves [ move . n ] = move ;
176
176
if ( this . currentGame && this . currentGame . state === 'running' && this . currentGame . address . public === gameAddress ) this . notifyMove ( move ) ;
177
177
}
178
178
this . tx . count ++ ;
179
179
this . tx [ this . tx . count ] = message ;
180
180
}
181
+ this . games [ gameAddress ] = game ;
181
182
} catch ( e ) {
182
183
debug ( 'Error with transaction: ' , tx , tx . getId ( ) ) ;
183
184
debug ( 'gameAddress: ' , gameAddress ) ;
0 commit comments