From 16b089223805fc2a5578c6bb56fa6039607d5cca Mon Sep 17 00:00:00 2001 From: myin Date: Fri, 17 Nov 2023 20:07:58 +0100 Subject: [PATCH] reflect player actions in mirror --- godot/assets/Screen_Start.png | Bin 13659 -> 13771 bytes .../base-system/RelativeRemoteTransform2D.gd | 5 ++++- godot/src/character/PlayerMirrorSprite2D.gd | 7 +++++++ godot/src/character/player_reflection.tscn | 2 ++ godot/src/game.gd | 3 +++ godot/src/game.tscn | 3 ++- godot/src/player.gd | 5 +++++ godot/src/start.tscn | 1 + 8 files changed, 24 insertions(+), 2 deletions(-) diff --git a/godot/assets/Screen_Start.png b/godot/assets/Screen_Start.png index 1be8b576230303bd05e9c6f11b30f3a675cc5933..444caf7aecc03ff819465394e5482c8a78de3bab 100644 GIT binary patch literal 13771 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⋘^a|m{UNy`2j_v~47%uLy9<_5LFY9t0L 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 diff --git a/godot/src/base-system/RelativeRemoteTransform2D.gd b/godot/src/base-system/RelativeRemoteTransform2D.gd index f088f2d..c41bde9 100644 --- a/godot/src/base-system/RelativeRemoteTransform2D.gd +++ b/godot/src/base-system/RelativeRemoteTransform2D.gd @@ -3,6 +3,9 @@ extends Node2D @export var remote_node: Node2D @export var relative_to_origin := 1.1 +@export var center := Vector2.ZERO func _process(delta): - remote_node.global_position = global_position * relative_to_origin + if remote_node: + var dir = global_position - center + remote_node.global_position = dir * relative_to_origin diff --git a/godot/src/character/PlayerMirrorSprite2D.gd b/godot/src/character/PlayerMirrorSprite2D.gd index 2386b5f..81047c6 100644 --- a/godot/src/character/PlayerMirrorSprite2D.gd +++ b/godot/src/character/PlayerMirrorSprite2D.gd @@ -1,6 +1,7 @@ class_name PlayerMirrorSprite2D extends MirrorSprite2D +@export var clone := false @export var player: Player @export var normal_trident_texture: Texture2D @export var mirror_trident_texture: Texture2D @@ -15,3 +16,9 @@ func update(): super.update() else: texture = mirror_trident_texture if GameManager.mirror else normal_trident_texture + +func _process(_d): + if not clone: return + + frame = player.get_frame() + scale.x = player.get_body_scale().y diff --git a/godot/src/character/player_reflection.tscn b/godot/src/character/player_reflection.tscn index d480946..6a682b5 100644 --- a/godot/src/character/player_reflection.tscn +++ b/godot/src/character/player_reflection.tscn @@ -8,8 +8,10 @@ [node name="PlayerMirrorSprite2D" type="Sprite2D"] texture = ExtResource("5_h6dwk") +offset = Vector2(3, -2) hframes = 4 script = ExtResource("4_j7uc5") +clone = true normal_trident_texture = ExtResource("1_awrgi") mirror_trident_texture = ExtResource("3_4mtbe") mirror_texture = ExtResource("1_m2o5t") diff --git a/godot/src/game.gd b/godot/src/game.gd index 952bc08..8bdae25 100644 --- a/godot/src/game.gd +++ b/godot/src/game.gd @@ -6,6 +6,7 @@ const ROOM = preload("res://src/props/room.tscn") @onready var player = $Player @onready var music_player = $MusicPlayer @onready var mirror_viewport = $MirrorViewport +@onready var relative_remote_transform_2d = $Player/RelativeRemoteTransform2D @export var enemy_value := 5.0 @export var enemy_kills := 5.0 @@ -54,6 +55,8 @@ func _create_room() -> Room: _logger.debug("Player entered in direction %s" % dir) var new_room = room.rooms[dir] cam.global_position = new_room.global_position + relative_remote_transform_2d.center = cam.global_position + player.velocity = Vector2.ZERO player.global_position = new_room.get_door(-dir).global_position + dir * 10 player.immediate_return_trident() diff --git a/godot/src/game.tscn b/godot/src/game.tscn index 15f3fb2..682171c 100644 --- a/godot/src/game.tscn +++ b/godot/src/game.tscn @@ -155,9 +155,10 @@ position_smoothing_enabled = true z_index = 10 [node name="RelativeRemoteTransform2D" type="Node2D" parent="Player" node_paths=PackedStringArray("remote_node")] +position = Vector2(0, -2) script = ExtResource("3_vvprc") remote_node = NodePath("../../MirrorViewport/PlayerReflection") -relative_to_origin = 1.05 +relative_to_origin = 1.06 [node name="BGM" type="AudioStreamPlayer" parent="."] process_mode = 3 diff --git a/godot/src/player.gd b/godot/src/player.gd index fef04f5..156dc53 100644 --- a/godot/src/player.gd +++ b/godot/src/player.gd @@ -120,3 +120,8 @@ func immediate_return_trident(): trident = null _update_throw() +func get_frame(): + return sprite.frame + +func get_body_scale(): + return body.scale diff --git a/godot/src/start.tscn b/godot/src/start.tscn index cde2f49..28801dc 100644 --- a/godot/src/start.tscn +++ b/godot/src/start.tscn @@ -37,6 +37,7 @@ stretch_mode = 5 [node name="ScreenBubbles" parent="MarginContainer2" instance=ExtResource("3_8tvo4")] [node name="Background2" type="TextureRect" parent="MarginContainer2"] +modulate = Color(1, 1, 1, 0.721569) layout_mode = 2 texture = ExtResource("5_ao30t") expand_mode = 5