@@ -76,14 +76,12 @@ const connectToServer = async (address) => {
76
76
document . getElementById ( 'points-per-check' ) . innerText = command . location_check_points . toString ( ) ;
77
77
78
78
// Update the local cache of location and item maps if necessary
79
- if ( ! localStorage . getItem ( 'dataPackageVersion' ) || ! localStorage . getItem ( 'locationMap' ) ||
80
- ! localStorage . getItem ( 'itemMap' ) ||
79
+ if ( ! localStorage . getItem ( 'dataPackageVersion' ) || ! localStorage . getItem ( 'dataPackage' ) ||
81
80
command . datapackage_version !== localStorage . getItem ( 'dataPackageVersion' ) ) {
82
- updateLocationCache ( ) ;
81
+ requestDataPackage ( ) ;
83
82
} else {
84
83
// Load the location and item maps into memory
85
- buildLocationData ( JSON . parse ( localStorage . getItem ( 'locationMap' ) ) ) ;
86
- itemsById = JSON . parse ( localStorage . getItem ( 'itemMap' ) ) ;
84
+ buildItemAndLocationData ( JSON . parse ( localStorage . getItem ( 'dataPackage' ) ) ) ;
87
85
}
88
86
89
87
const romName = await getRomName ( ) ;
@@ -206,13 +204,9 @@ const connectToServer = async (address) => {
206
204
// Save updated location and item maps into localStorage
207
205
if ( command . data . version !== 0 ) { // Unless this is a custom package, denoted by version zero
208
206
localStorage . setItem ( 'dataPackageVersion' , command . data . version ) ;
209
- localStorage . setItem ( 'locationMap' , JSON . stringify ( command . data . lookup_any_location_id_to_name ) ) ;
210
- localStorage . setItem ( 'itemMap' , JSON . stringify ( command . data . lookup_any_item_id_to_name ) ) ;
207
+ localStorage . setItem ( 'dataPackage' , JSON . stringify ( command . data ) ) ;
211
208
}
212
-
213
- buildLocationData ( command . data . lookup_any_location_id_to_name ) ;
214
- itemsById = command . data . lookup_any_item_id_to_name ;
215
-
209
+ buildItemAndLocationData ( command . data ) ;
216
210
break ;
217
211
218
212
default :
@@ -289,7 +283,7 @@ const serverSync = () => {
289
283
}
290
284
} ;
291
285
292
- const updateLocationCache = ( ) => {
286
+ const requestDataPackage = ( ) => {
293
287
if ( ! serverSocket || serverSocket . readyState !== WebSocket . OPEN ) { return ; }
294
288
serverSocket . send ( JSON . stringify ( [ {
295
289
cmd : 'GetDataPackage' ,
@@ -304,14 +298,14 @@ const sendLocationChecks = (locationIds) => {
304
298
} ] ) ) ;
305
299
} ;
306
300
307
- /**
308
- * Build two global objects which are used to reference location data
309
- * @param locations An object of { locationId: locationName, ... }
310
- */
311
- const buildLocationData = ( locations ) => {
312
- locationMap = locations ;
313
- const locationIds = Object . keys ( locations ) ;
314
- const locationNames = Object . values ( locations ) ;
315
-
301
+ const buildItemAndLocationData = ( dataPackage ) => {
302
+ Object . values ( dataPackage . games ) . forEach ( ( game ) => {
303
+ Object . keys ( game . item_name_to_id ) . forEach ( ( item ) => {
304
+ apItemsById [ game . item_name_to_id [ item ] ] = item ;
305
+ } ) ;
316
306
307
+ Object . keys ( game . location_name_to_id ) . forEach ( ( location ) => {
308
+ apLocationsById [ game . location_name_to_id [ location ] ] = location ;
309
+ } ) ;
310
+ } ) ;
317
311
} ;
0 commit comments