diff --git a/assets/find_a_couple/back.png b/assets/find_a_couple/back.png new file mode 100644 index 0000000..b223292 Binary files /dev/null and b/assets/find_a_couple/back.png differ diff --git a/assets/find_a_couple/back.png.import b/assets/find_a_couple/back.png.import new file mode 100644 index 0000000..fdb6003 --- /dev/null +++ b/assets/find_a_couple/back.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yn1hkayub20t" +path="res://.godot/imported/back.png-9c1d1174dcba7f216de8d82a9ffb21e5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/find_a_couple/back.png" +dest_files=["res://.godot/imported/back.png-9c1d1174dcba7f216de8d82a9ffb21e5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/find_a_couple/envelope.png b/assets/find_a_couple/envelope.png new file mode 100644 index 0000000..27df106 Binary files /dev/null and b/assets/find_a_couple/envelope.png differ diff --git a/assets/find_a_couple/envelope.png.import b/assets/find_a_couple/envelope.png.import new file mode 100644 index 0000000..cfa8905 --- /dev/null +++ b/assets/find_a_couple/envelope.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsj2xqsrkncfw" +path="res://.godot/imported/envelope.png-e1a72c8cc7c1c8b6699de8be171c2bcf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/find_a_couple/envelope.png" +dest_files=["res://.godot/imported/envelope.png-e1a72c8cc7c1c8b6699de8be171c2bcf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/find_a_couple/home.png b/assets/find_a_couple/home.png new file mode 100644 index 0000000..4c1f9c7 Binary files /dev/null and b/assets/find_a_couple/home.png differ diff --git a/assets/find_a_couple/home.png.import b/assets/find_a_couple/home.png.import new file mode 100644 index 0000000..03e343a --- /dev/null +++ b/assets/find_a_couple/home.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkhosb3l014nu" +path="res://.godot/imported/home.png-2752292748af7c14e83f6ea9f10c841a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/find_a_couple/home.png" +dest_files=["res://.godot/imported/home.png-2752292748af7c14e83f6ea9f10c841a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/find_a_couple/user.png b/assets/find_a_couple/user.png new file mode 100644 index 0000000..fdbbd58 Binary files /dev/null and b/assets/find_a_couple/user.png differ diff --git a/assets/find_a_couple/user.png.import b/assets/find_a_couple/user.png.import new file mode 100644 index 0000000..43ba4ef --- /dev/null +++ b/assets/find_a_couple/user.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bakxisrbvoy3e" +path="res://.godot/imported/user.png-dc728d288b223856966bafd84c0b8c54.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/find_a_couple/user.png" +dest_files=["res://.godot/imported/user.png-dc728d288b223856966bafd84c0b8c54.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 1306c07..483918d 100644 --- a/project.godot +++ b/project.godot @@ -11,6 +11,7 @@ config_version=5 [application] config/name="DD" +run/main_scene="uid://bv4rxfc4hm6t7" config/features=PackedStringArray("4.4", "Mobile") config/icon="res://icon.svg" diff --git a/scenes/find_a_couple/level.tscn b/scenes/find_a_couple/level.tscn new file mode 100644 index 0000000..5eaef95 --- /dev/null +++ b/scenes/find_a_couple/level.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=3 format=3 uid="uid://b2u1412b6fugp"] + +[ext_resource type="PackedScene" uid="uid://cignc2wdaxuro" path="res://scenes/find_a_couple/level_handler.tscn" id="1_hr0pl"] +[ext_resource type="PackedScene" uid="uid://blfx4g52uaopo" path="res://scenes/find_a_couple/tile.tscn" id="2_0am66"] + +[node name="Level" type="Node2D"] + +[node name="Control" parent="." instance=ExtResource("1_hr0pl")] + +[node name="Tile" parent="." instance=ExtResource("2_0am66")] +position = Vector2(239, 223) diff --git a/scenes/find_a_couple/level_handler.tscn b/scenes/find_a_couple/level_handler.tscn new file mode 100644 index 0000000..2c9d9e0 --- /dev/null +++ b/scenes/find_a_couple/level_handler.tscn @@ -0,0 +1,27 @@ +[gd_scene format=3 uid="uid://cignc2wdaxuro"] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 0 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 +color = Color(0.787759, 0.787759, 0.787759, 1) + +[node name="Label" type="Label" parent="."] +layout_mode = 0 +offset_right = 99.0 +offset_bottom = 69.0 +theme_override_font_sizes/font_size = 50 +text = "1:00" +horizontal_alignment = 1 +vertical_alignment = 1 +justification_flags = 162 diff --git a/scenes/find_a_couple/tile.gd b/scenes/find_a_couple/tile.gd new file mode 100644 index 0000000..b6d9ceb --- /dev/null +++ b/scenes/find_a_couple/tile.gd @@ -0,0 +1,52 @@ +extends Area2D + +signal tile_clicked(tile) + +@export var front_texture: Texture2D # Изображение на лицевой стороне +@export var back_texture: Texture2D # Изображение на обратной стороне +@export var flip_duration: float = 0.3 # Длительность анимации переворота + +@onready var sprite = $Sprite2D +@onready var timer = $Timer + +var is_flipped: bool = false +var can_click: bool = true + +func _ready() -> void: + sprite.texture = back_texture + +func _on_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void: + if not can_click: return + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + emit_signal ("tile_clicked", self) + flip_tile() + +func flip_tile(): + is_flipped = true + can_click = false + + # Анимация переворота + var tween = create_tween() + tween.tween_property(self, "scale:x", 0.0, flip_duration/2) + tween.tween_callback(_change_texture) + tween.tween_property(self, "scale:x", 1.0, flip_duration/2) + timer.start() + +func _change_texture(): + sprite.texture = front_texture if is_flipped else back_texture + +func hide_tile(): + is_flipped = false + + var tween = create_tween() + tween.tween_property(self, "scale:x", 0.0, flip_duration/2) + tween.tween_callback(_change_texture) + tween.tween_property(self, "scale:x", 1.0, flip_duration/2) + tween.tween_callback(_enable_click) + +func _enable_click(): + can_click = true + + +func _on_timer_timeout() -> void: + hide_tile() diff --git a/scenes/find_a_couple/tile.gd.uid b/scenes/find_a_couple/tile.gd.uid new file mode 100644 index 0000000..fe88774 --- /dev/null +++ b/scenes/find_a_couple/tile.gd.uid @@ -0,0 +1 @@ +uid://c6slf3hspqeef diff --git a/scenes/find_a_couple/tile.tscn b/scenes/find_a_couple/tile.tscn new file mode 100644 index 0000000..892b198 --- /dev/null +++ b/scenes/find_a_couple/tile.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=3 uid="uid://blfx4g52uaopo"] + +[ext_resource type="Texture2D" uid="uid://bsj2xqsrkncfw" path="res://assets/find_a_couple/envelope.png" id="1_dgwjn"] +[ext_resource type="Script" uid="uid://c6slf3hspqeef" path="res://scenes/find_a_couple/tile.gd" id="1_kwys0"] +[ext_resource type="Texture2D" uid="uid://yn1hkayub20t" path="res://assets/find_a_couple/back.png" id="2_npifk"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_npifk"] +size = Vector2(102, 102) + +[node name="Tile" type="Area2D"] +script = ExtResource("1_kwys0") +front_texture = ExtResource("1_dgwjn") +back_texture = ExtResource("2_npifk") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_npifk") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.2, 0.2) +texture = ExtResource("1_dgwjn") + +[node name="Timer" type="Timer" parent="."] +one_shot = true + +[connection signal="input_event" from="." to="." method="_on_input_event"] +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]