extends Camera2D onready var player = get_tree().get_nodes_in_group("player").front() onready var last_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) onready var off_level_indicator = $OffLevelIndicator onready var msx_off_level_indicator = $MsxOffLevelIndicator #Scroll direction export var scroll_h = true export var scroll_v = false export var respawn_h = true var msx = null var msx_exists = false func _ready(): set_as_toplevel(true) Game.current_sector = last_sector if get_tree().get_nodes_in_group("msx").size() > 0: msx = get_tree().get_nodes_in_group("msx").pop_front() msx_exists = true func _process(delta): # use pop_front() instead of [0] so that will not crash without player if not is_instance_valid(player): player = get_tree().get_nodes_in_group("player").pop_front() else: var current_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) if scroll_h && current_sector.x != last_sector.x: position.x = current_sector.x * Game.RESOLUTION.x if respawn_h: # TODO: decide whether to use offset with horizontal respawn # var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0) Game.respawn_point = player.global_position last_sector.x = current_sector.x if scroll_v && current_sector.y != last_sector.y: position.y = current_sector.y * Game.RESOLUTION.y last_sector.y = current_sector.y Game.current_sector = last_sector #Off level indicator if player.global_position.y - global_position.y <= 16.0: off_level_indicator.visible = true off_level_indicator.global_position.x = player.global_position.x else: off_level_indicator.visible = false #Ms.X off level indicator if msx_exists && is_instance_valid(msx): if msx.get_parent().is_free: msx_off_level_indicator.visible = true var msx_sector = Game.get_sector(msx.global_position) if msx_sector == current_sector: msx_off_level_indicator.anims.play("onscreen") if msx_sector < current_sector: msx_off_level_indicator.position.y = msx.global_position.y msx_off_level_indicator.position.x = 16 msx_off_level_indicator.anims.play("left") if msx_sector > current_sector: msx_off_level_indicator.position.y = msx.global_position.y msx_off_level_indicator.position.x = 240 msx_off_level_indicator.anims.play("right")