garden touch scrolling and animations

This commit is contained in:
BimDav
2024-01-16 15:46:54 +01:00
parent a24609e2c1
commit e32bc8090b
4 changed files with 63 additions and 3 deletions
+20
View File
@@ -53,6 +53,7 @@ func set_flowers(p_flowers: Array[GardenLayout.Flower]) -> void:
flower_control.texture = load(flower_path_model % [flower.color+1, flower.type+1, "Large"])
flower_control.position = flower.position
flower_control.size = flower_control.get_combined_minimum_size() * 3
flower_control.pivot_offset = flower_control.size / 2
func set_lesson_buttons(p_lesson_buttons: Array[GardenLayout.LessonButton]) -> void:
@@ -68,6 +69,7 @@ func set_lesson_buttons(p_lesson_buttons: Array[GardenLayout.LessonButton]) -> v
lesson_button_control.size = lesson_button_control.get_combined_minimum_size() * 3
lesson_button_control.position = Vector2(lesson_button.position) - lesson_button_control.size / 4
lesson_button_control.visible = true
lesson_button_control.pivot_offset = lesson_button_control.size / 2
func set_background(p_color: int) -> void:
@@ -83,3 +85,21 @@ func _ready() -> void:
func set_lesson_label(ind: int, text: String) -> void:
assert(ind < lesson_labels.size())
lesson_labels[ind].text = text
func pop_animation() -> void:
var tween: = create_tween()
tween.set_parallel(true)
for flower_control in flower_controls:
tween.tween_property(flower_control, "scale", Vector2(0, 0), 0.1)
for lesson_button_control in lesson_button_controls:
tween.tween_property(lesson_button_control, "scale", Vector2(0.7, 0.7), 0.1)
await tween.finished
tween = create_tween()
tween.set_parallel(true)
tween.set_ease(Tween.EASE_OUT)
tween.set_trans(Tween.TRANS_BOUNCE)
for flower_control in flower_controls:
tween.tween_property(flower_control, "scale", Vector2(1., 1.), 0.9)
for lesson_button_control in lesson_button_controls:
tween.tween_property(lesson_button_control, "scale", Vector2(1., 1.), 0.9)
+4 -1
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=3 uid="uid://mf4fc4l3dkrn"]
[gd_scene load_steps=7 format=3 uid="uid://btg3qd8eld1mm"]
[ext_resource type="Script" path="res://resources/gardens/garden.gd" id="1_5owem"]
[ext_resource type="Script" path="res://resources/gardens/garden_layout.gd" id="2_8g7o4"]
@@ -100,6 +100,7 @@ vertical_alignment = 1
[node name="Button2" type="TextureRect" parent="Buttons"]
unique_name_in_owner = true
visible = false
z_index = 1
layout_mode = 0
offset_left = 500.0
@@ -142,6 +143,7 @@ vertical_alignment = 1
[node name="Button3" type="TextureRect" parent="Buttons"]
unique_name_in_owner = true
visible = false
z_index = 1
layout_mode = 0
offset_left = 500.0
@@ -184,6 +186,7 @@ vertical_alignment = 1
[node name="Button4" type="TextureRect" parent="Buttons"]
unique_name_in_owner = true
visible = false
z_index = 1
layout_mode = 0
offset_left = 500.0
+36 -1
View File
@@ -1,7 +1,7 @@
@tool
extends Control
const garden_scene: = preload("res://resources/gardens/garden.tscn")
const garden_size: = 2400
@export var gardens_layout: GardensLayout:
set = set_gardens_layout
@@ -12,6 +12,9 @@ const garden_scene: = preload("res://resources/gardens/garden.tscn")
var curve: Curve2D
var lessons: = {}
var is_scrolling: = false
var scroll_beginning_garden: = 0
var tween: Tween
func set_gardens_layout(p_gardens_layout: GardensLayout) -> void:
@@ -82,3 +85,35 @@ func _ready() -> void:
set_gardens_layout(gardens_layout)
get_gardens_db_data()
set_up_lessons_text()
func _on_scroll_container_gui_input(event: InputEvent) -> void:
if event.is_action_pressed("left_click"):
is_scrolling = true
scroll_beginning_garden = scroll_container.scroll_horizontal / garden_size
if tween:
tween.stop()
tween = null
elif event.is_action_released("left_click"):
is_scrolling = false
var shift_value: int = scroll_container.scroll_horizontal - scroll_beginning_garden * garden_size
var target_scroll: int = scroll_beginning_garden * garden_size
var is_garden_changed: = false
if shift_value < - 400:
target_scroll -= garden_size
is_garden_changed = true
elif shift_value > 400:
target_scroll += garden_size
is_garden_changed = true
tween = create_tween()
tween.set_ease(Tween.EASE_OUT)
tween.set_trans(Tween.TRANS_SPRING)
tween.tween_property(scroll_container, "scroll_horizontal", target_scroll, 1)
if is_garden_changed:
var garden_ind: int = target_scroll / garden_size
garden_parent.get_child(garden_ind).pop_animation()
if is_scrolling and event is InputEventMouseMotion:
scroll_container.scroll_horizontal -= event.relative.x
File diff suppressed because one or more lines are too long