diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-05-03 13:59:15 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-05-03 13:59:15 +0200 |
commit | 8c0e8b5bf73caaf2fd6f04fb97b9c13f2970c431 (patch) | |
tree | 990b6e09eb2f6b3cb494cca17726ceae1bc7891f /Scenes/Components/MapArea.gd | |
parent | 516d22c1737a9c94026b5ff0c9856bc5549aa416 (diff) |
update
Diffstat (limited to 'Scenes/Components/MapArea.gd')
-rw-r--r-- | Scenes/Components/MapArea.gd | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/Scenes/Components/MapArea.gd b/Scenes/Components/MapArea.gd index 4a69815..31e567a 100644 --- a/Scenes/Components/MapArea.gd +++ b/Scenes/Components/MapArea.gd @@ -40,11 +40,21 @@ func _on_body_entered(body): func _on_player_entered(player: Player): var exited_area = Global.last_area + if Global.last_area == self: + return + + if exited_area: + exited_area.set_collision_mask_value(Utilities.Collision.Layer.PLAYER, false) + $TileMap.process_mode = PROCESS_MODE_INHERIT $TileMap.visible = true self.adjust_camera_to_area(player) + if not player.get_parent() == $TileMap: + (func(): player.reparent($TileMap)).call_deferred() + + var position_tween: Tween if exited_area: exited_area.get_node("TileMap").process_mode = PROCESS_MODE_DISABLED @@ -53,13 +63,13 @@ func _on_player_entered(player: Player): var bounds: Rect2 = Utilities.get_collision_shape_bounds($CollisionShape2D) var sprite_direction = "" - if player.position.x <= bounds.position.x: + if player.global_position.x <= bounds.position.x: sprite_direction = "right" - elif player.position.x >= bounds.end.x: + elif player.global_position.x >= bounds.end.x: sprite_direction = "left" - elif player.position.y <= bounds.position.y: + elif player.global_position.y <= bounds.position.y: sprite_direction = "down" - elif player.position.y >= bounds.end.y: + elif player.global_position.y >= bounds.end.y: sprite_direction = "up" var sprite_tween = get_tree().create_tween().set_loops(5) @@ -68,16 +78,17 @@ func _on_player_entered(player: Player): sprite.play(sprite_direction) ) - var tween = get_tree().create_tween() - tween.tween_property( - player, "position", player.position + player.DIRECTION * 16, 1.25 + position_tween = get_tree().create_tween() + position_tween.tween_property( + player, "global_position", player.global_position + player.DIRECTION * 16, 1.25 ) - tween.tween_callback(func(): + position_tween.tween_callback(func(): exited_area.get_node("TileMap").visible = false sprite_tween.kill() sprite.play("idle_" + sprite_direction) + exited_area.set_collision_mask_value(Utilities.Collision.Layer.PLAYER, true) ) - + Global.last_area = self # TODO: handle different child entity groups inside TileMap |