@@ -397,6 +397,41 @@ def get_x_map_region_for_room(self, location_id):
397397 None ,
398398 )
399399
400+ def x_map_region_needs_update (
401+ self , map_region , original_map_region , location_id
402+ ):
403+ """
404+ Compare the new map region data to the original map region data, and
405+ return True if we need to update.
406+ """
407+ if original_map_region ["location" ]["id" ] != location_id :
408+ self .logger .info (
409+ "Map region needs update because location changed: %s != %s" ,
410+ original_map_region ["location" ]["id" ],
411+ location_id ,
412+ )
413+ return True
414+
415+ fields_to_check = [
416+ ("relative_x" , map_region ["x" ]),
417+ ("relative_y" , map_region ["y" ]),
418+ ("relative_width" , map_region ["w" ]),
419+ ("relative_height" , map_region ["h" ]),
420+ ]
421+
422+ for field_name , new_value in fields_to_check :
423+ original_value = original_map_region [field_name ]
424+ if new_value != original_value :
425+ self .logger .info (
426+ "Map region needs update because '%s' changed: %s != %s" ,
427+ field_name ,
428+ new_value ,
429+ original_value ,
430+ )
431+ return True
432+
433+ return False
434+
400435 def setup_x_map_regions (self ):
401436 for room , map_region in self .ROOM_TO_MAP_REGION .items ():
402437 if room not in self .x_rooms :
@@ -412,6 +447,16 @@ def setup_x_map_regions(self):
412447 location_id = self .x_rooms [room ]["id" ]
413448 guidebook_map_region = self .get_x_map_region_for_room (location_id )
414449 if guidebook_map_region :
450+ # Check if the map region actually needs updating
451+ if not self .x_map_region_needs_update (
452+ map_region , guidebook_map_region , location_id
453+ ):
454+ self .logger .debug (
455+ "Map region for room '%s' exists in Guidebook and has "
456+ "correct coordinates. No update needed." ,
457+ room ,
458+ )
459+ continue
415460 update = True
416461 rid = guidebook_map_region ["id" ]
417462
0 commit comments