@@ -243,6 +243,7 @@ func _on_edit_server_zone_socket_logged_in() -> void:
243243 push_error ("Critical: cannot start server: " , promise .get_error_message ())
244244 return
245245 _on_zone_socket_space_received (promise .get_result ())
246+ print ("Started getting space objects: " , Time .get_datetime_string_from_system ())
246247 Net .zone_socket .get_space_objects_page (space_id , 1 )
247248
248249
@@ -272,31 +273,41 @@ func _handle_zone_socket_error(request: Dictionary) -> void:
272273 push_error (error_msg , " " , request )
273274 print (error_msg )
274275
275-
276+ var _loaded_pages = 0
277+ var _queued_assets = []
276278func _on_zone_socket_space_object_page_received (space_objects_page : Dictionary ) -> void :
277279 var page = space_objects_page .get ("page" , 1 )
278280 var total_pages = space_objects_page .get ("totalPage" , 1 )
279281 var space_objects_arr = space_objects_page .get ("result" , [])
280- for obj in space_objects_arr :
281- # if we already have the asset in memory, no need to get it again
282- if not Net .asset_client .get_asset_json (obj ["asset" ]).is_empty ():
283- continue
284- Net .zone_socket .queue_download_asset (obj ["asset" ])
282+ _loaded_pages += 1
283+ print ("Loaded page: " , page , " time: " , Time .get_datetime_string_from_system ())
284+ print ("Total pages loaded: " , _loaded_pages , " total pages " , total_pages )
285285
286- for space_obj in space_objects_arr :
287- # assert(not space_obj.has("receipt"), "May happen with old spaces, but should not happen with new spaces.")
288- if space_obj .has ("receipt" ):
289- space_obj ["creator" ] = space_obj ["receipt" ].get ("created_by_user" , "" )
290- space_obj .erase ("receipt" )
291286 Zone .space_objects .append_array (space_objects_arr )
292287 # if we've reached the final page, we're done getting all the data
293- if page >= total_pages :
294- print ("All Space Objects Received" )
288+ if _loaded_pages >= total_pages :
289+ print ("All Space Objects Received: " , Time .get_datetime_string_from_system ())
290+ print ("Downloading assets for space objects" )
291+ for obj in Zone .space_objects :
292+ if obj .has ("receipt" ):
293+ obj ["creator" ] = obj ["receipt" ].get ("created_by_user" , "" )
294+ obj .erase ("receipt" )
295+ # if we already have the asset in memory, no need to get it again
296+ if not Net .asset_client .get_asset_json (obj ["asset" ]).is_empty ():
297+ continue
298+ var asset_id = obj ["asset" ]
299+ if not _queued_assets .has (asset_id ):
300+ Net .zone_socket .queue_download_asset (asset_id )
301+ _queued_assets .push_back (asset_id )
302+ print ("All assets have been queued: " , Time .get_datetime_string_from_system ())
303+
295304 Zone .instance_manager .setup_space_objects ()
296305 _server_data_received = true
297306 return
298307 # get the next page
299- Net .zone_socket .get_space_objects_page (space_id , page + 1 )
308+ if page == 1 :
309+ for page_id in range (2 , total_pages + 1 ):
310+ Net .zone_socket .get_space_objects_page (space_id , page_id )
300311
301312
302313func _on_zone_socket_asset_received (asset : Variant ) -> void :
0 commit comments