From 98342796280700b915a37daff2b3f3a3d2b80eb5 Mon Sep 17 00:00:00 2001 From: Moe Poi ~ Date: Sun, 29 Oct 2023 14:26:02 +0700 Subject: [PATCH] Add FastForward feature --- assets/icons/fast-forward-active.png | Bin 0 -> 10923 bytes assets/icons/fast-forward-active.png.import | 34 ++++++++++++++++++++ assets/icons/fast-forward.png | Bin 0 -> 6144 bytes assets/icons/fast-forward.png.import | 34 ++++++++++++++++++++ scenes/ui/game_stats.tscn | 31 +++++++++++++++++- scripts/stages/1/game_manager.gd | 7 ++++ scripts/stages/2/game_manager.gd | 7 ++++ scripts/stages/3/game_manager.gd | 7 ++++ scripts/stages/4/game_manager.gd | 7 ++++ scripts/stages/5/game_manager.gd | 7 ++++ scripts/stages/6/game_manager.gd | 7 ++++ scripts/ui/game_stats.gd | 21 +++++++++++- 12 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 assets/icons/fast-forward-active.png create mode 100644 assets/icons/fast-forward-active.png.import create mode 100644 assets/icons/fast-forward.png create mode 100644 assets/icons/fast-forward.png.import diff --git a/assets/icons/fast-forward-active.png b/assets/icons/fast-forward-active.png new file mode 100644 index 0000000000000000000000000000000000000000..7d518b280e6f89d26fe286d4440fce27540952c9 GIT binary patch literal 10923 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 Ye4D5GHqN62`|qUt_PFjA?PBu(4gNtCqyPW_ literal 0 HcmV?d00001 diff --git a/assets/icons/fast-forward-active.png.import b/assets/icons/fast-forward-active.png.import new file mode 100644 index 0000000..763294b --- /dev/null +++ b/assets/icons/fast-forward-active.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvp2h27uot6em" +path="res://.godot/imported/fast-forward-active.png-d1a61c84aae4913cdafebb409a334385.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/fast-forward-active.png" +dest_files=["res://.godot/imported/fast-forward-active.png-d1a61c84aae4913cdafebb409a334385.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/icons/fast-forward.png b/assets/icons/fast-forward.png new file mode 100644 index 0000000000000000000000000000000000000000..c0288aae5eede971918b1fd494c5ca093531b439 GIT binary patch literal 6144 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 IKeYe<3*;G6Y5)KL literal 0 HcmV?d00001 diff --git a/assets/icons/fast-forward.png.import b/assets/icons/fast-forward.png.import new file mode 100644 index 0000000..1cf7540 --- /dev/null +++ b/assets/icons/fast-forward.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn8pc3vkskcny" +path="res://.godot/imported/fast-forward.png-c42cc7b642a148b0f7534c6ec8d4790f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/fast-forward.png" +dest_files=["res://.godot/imported/fast-forward.png-c42cc7b642a148b0f7534c6ec8d4790f.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/scenes/ui/game_stats.tscn b/scenes/ui/game_stats.tscn index 2b84bb8..9c78a1e 100644 --- a/scenes/ui/game_stats.tscn +++ b/scenes/ui/game_stats.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=5 format=3 uid="uid://cy88k4uxt1v37"] +[gd_scene load_steps=6 format=3 uid="uid://cy88k4uxt1v37"] [ext_resource type="Texture2D" uid="uid://d2d7ab8q2vik4" path="res://assets/icons/label_bg.png" id="1_1gxsd"] [ext_resource type="Script" path="res://scripts/ui/game_stats.gd" id="1_ui7x4"] [ext_resource type="Texture2D" uid="uid://derifasksdfub" path="res://assets/icons/pause.png" id="2_imq5h"] [ext_resource type="Texture2D" uid="uid://e8dmiy1xr5g3" path="res://assets/icons/health.png" id="3_r1i66"] +[ext_resource type="Texture2D" uid="uid://bn8pc3vkskcny" path="res://assets/icons/fast-forward.png" id="4_frnkw"] [node name="GameStats" type="Control"] layout_mode = 3 @@ -61,6 +62,31 @@ grow_vertical = 2 scale = Vector2(0.015, 0.015) texture_normal = ExtResource("2_imq5h") +[node name="FastForward" type="NinePatchRect" parent="."] +layout_mode = 0 +offset_left = 918.0 +offset_top = 9.0 +offset_right = 955.0 +offset_bottom = 44.0 +texture = ExtResource("1_1gxsd") + +[node name="FastForwardButton" type="TextureButton" parent="FastForward"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -15.5 +offset_top = -15.5 +offset_right = 2032.5 +offset_bottom = 2032.5 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(0.015, 0.015) +texture_normal = ExtResource("4_frnkw") +stretch_mode = 5 + [node name="Health" type="NinePatchRect" parent="."] layout_mode = 1 anchors_preset = 4 @@ -107,3 +133,6 @@ texture = ExtResource("3_r1i66") [connection signal="mouse_entered" from="Pause/PauseButton" to="." method="_on_pause_button_hold"] [connection signal="mouse_exited" from="Pause/PauseButton" to="." method="_on_pause_button_release"] [connection signal="pressed" from="Pause/PauseButton" to="." method="_on_pause_button_pressed"] +[connection signal="mouse_entered" from="FastForward/FastForwardButton" to="." method="_on_fast_forward_button_hold"] +[connection signal="mouse_exited" from="FastForward/FastForwardButton" to="." method="_on_fast_forward_button_release"] +[connection signal="pressed" from="FastForward/FastForwardButton" to="." method="_on_fast_forward_button_pressed"] diff --git a/scripts/stages/1/game_manager.gd b/scripts/stages/1/game_manager.gd index cad6938..efa3b5c 100644 --- a/scripts/stages/1/game_manager.gd +++ b/scripts/stages/1/game_manager.gd @@ -21,6 +21,7 @@ func _ready(): # Connect to Signal $CanvasLayer/GameStats.connect("on_paused", on_game_paused) $CanvasLayer/PauseMenu.connect("on_resume", on_game_resume) + $CanvasLayer/GameStats.connect("on_fast_forward", on_game_fast_forward) $CanvasLayer/GameStats.set_resource(data['resource']) var bases = $Bases.get_children() for base in bases: @@ -45,6 +46,12 @@ func on_game_resume(): data['paused'] = !data['paused'] get_tree().paused = data['paused'] $CanvasLayer/PauseMenu.hide_menu() + +func on_game_fast_forward(): + if Engine.get_time_scale() == 1.0: + Engine.time_scale = 2.0 + else: + Engine.time_scale = 1.0 func on_tower_placement(pos, tower_placement_id): var tower_id = null diff --git a/scripts/stages/2/game_manager.gd b/scripts/stages/2/game_manager.gd index 16d7ae8..e6b2a56 100644 --- a/scripts/stages/2/game_manager.gd +++ b/scripts/stages/2/game_manager.gd @@ -20,6 +20,7 @@ func _ready(): # Connect to Signal $CanvasLayer/GameStats.connect("on_paused", on_game_paused) $CanvasLayer/PauseMenu.connect("on_resume", on_game_resume) + $CanvasLayer/GameStats.connect("on_fast_forward", on_game_fast_forward) $CanvasLayer/GameStats.set_resource(data['resource']) var bases = $Bases.get_children() for base in bases: @@ -44,6 +45,12 @@ func on_game_resume(): data['paused'] = !data['paused'] get_tree().paused = data['paused'] $CanvasLayer/PauseMenu.hide_menu() + +func on_game_fast_forward(): + if Engine.get_time_scale() == 1.0: + Engine.time_scale = 2.0 + else: + Engine.time_scale = 1.0 func on_tower_placement(pos, tower_placement_id): var tower_id = null diff --git a/scripts/stages/3/game_manager.gd b/scripts/stages/3/game_manager.gd index c5ce368..151bac2 100644 --- a/scripts/stages/3/game_manager.gd +++ b/scripts/stages/3/game_manager.gd @@ -20,6 +20,7 @@ func _ready(): # Connect to Signal $CanvasLayer/GameStats.connect("on_paused", on_game_paused) $CanvasLayer/PauseMenu.connect("on_resume", on_game_resume) + $CanvasLayer/GameStats.connect("on_fast_forward", on_game_fast_forward) $CanvasLayer/GameStats.set_resource(data['resource']) var bases = $Bases.get_children() for base in bases: @@ -44,6 +45,12 @@ func on_game_resume(): data['paused'] = !data['paused'] get_tree().paused = data['paused'] $CanvasLayer/PauseMenu.hide_menu() + +func on_game_fast_forward(): + if Engine.get_time_scale() == 1.0: + Engine.time_scale = 2.0 + else: + Engine.time_scale = 1.0 func on_tower_placement(pos, tower_placement_id): var tower_id = null diff --git a/scripts/stages/4/game_manager.gd b/scripts/stages/4/game_manager.gd index b8dd276..31db7bd 100644 --- a/scripts/stages/4/game_manager.gd +++ b/scripts/stages/4/game_manager.gd @@ -20,6 +20,7 @@ func _ready(): # Connect to Signal $CanvasLayer/GameStats.connect("on_paused", on_game_paused) $CanvasLayer/PauseMenu.connect("on_resume", on_game_resume) + $CanvasLayer/GameStats.connect("on_fast_forward", on_game_fast_forward) $CanvasLayer/GameStats.set_resource(data['resource']) var bases = $Bases.get_children() for base in bases: @@ -44,6 +45,12 @@ func on_game_resume(): data['paused'] = !data['paused'] get_tree().paused = data['paused'] $CanvasLayer/PauseMenu.hide_menu() + +func on_game_fast_forward(): + if Engine.get_time_scale() == 1.0: + Engine.time_scale = 2.0 + else: + Engine.time_scale = 1.0 func on_tower_placement(pos, tower_placement_id): var tower_id = null diff --git a/scripts/stages/5/game_manager.gd b/scripts/stages/5/game_manager.gd index 732d558..144d156 100644 --- a/scripts/stages/5/game_manager.gd +++ b/scripts/stages/5/game_manager.gd @@ -20,6 +20,7 @@ func _ready(): # Connect to Signal $CanvasLayer/GameStats.connect("on_paused", on_game_paused) $CanvasLayer/PauseMenu.connect("on_resume", on_game_resume) + $CanvasLayer/GameStats.connect("on_fast_forward", on_game_fast_forward) $CanvasLayer/GameStats.set_resource(data['resource']) var bases = $Bases.get_children() for base in bases: @@ -44,6 +45,12 @@ func on_game_resume(): data['paused'] = !data['paused'] get_tree().paused = data['paused'] $CanvasLayer/PauseMenu.hide_menu() + +func on_game_fast_forward(): + if Engine.get_time_scale() == 1.0: + Engine.time_scale = 2.0 + else: + Engine.time_scale = 1.0 func on_tower_placement(pos, tower_placement_id): var tower_id = null diff --git a/scripts/stages/6/game_manager.gd b/scripts/stages/6/game_manager.gd index 410e36b..f876df1 100644 --- a/scripts/stages/6/game_manager.gd +++ b/scripts/stages/6/game_manager.gd @@ -20,6 +20,7 @@ func _ready(): # Connect to Signal $CanvasLayer/GameStats.connect("on_paused", on_game_paused) $CanvasLayer/PauseMenu.connect("on_resume", on_game_resume) + $CanvasLayer/GameStats.connect("on_fast_forward", on_game_fast_forward) $CanvasLayer/GameStats.set_resource(data['resource']) var bases = $Bases.get_children() for base in bases: @@ -44,6 +45,12 @@ func on_game_resume(): data['paused'] = !data['paused'] get_tree().paused = data['paused'] $CanvasLayer/PauseMenu.hide_menu() + +func on_game_fast_forward(): + if Engine.get_time_scale() == 1.0: + Engine.time_scale = 2.0 + else: + Engine.time_scale = 1.0 func on_tower_placement(pos, tower_placement_id): var tower_id = null diff --git a/scripts/ui/game_stats.gd b/scripts/ui/game_stats.gd index 30e91e5..17d85db 100644 --- a/scripts/ui/game_stats.gd +++ b/scripts/ui/game_stats.gd @@ -1,6 +1,9 @@ extends Control signal on_paused() +signal on_fast_forward() + +var is_active: bool = false func set_resource(value): $Resources/Label.text = str(value) @@ -20,4 +23,20 @@ func _on_pause_button_hold(): $Pause/PauseButton.modulate = Color(0.615686, 0.615686, 0.615686, 1) func _on_pause_button_release(): - $Pause/PauseButton.modulate = Color(1, 1, 1, 1) \ No newline at end of file + $Pause/PauseButton.modulate = Color(1, 1, 1, 1) + +func _on_fast_forward_button_pressed(): + if is_active: + $FastForward/FastForwardButton.set_texture_normal(load("res://assets/icons/fast-forward.png")) + is_active = false + else: + $FastForward/FastForwardButton.set_texture_normal(load("res://assets/icons/fast-forward-active.png")) + is_active = true + + on_fast_forward.emit() + +func _on_fast_forward_button_hold(): + $FastForward/FastForwardButton.modulate = Color(0.615686, 0.615686, 0.615686, 1) + +func _on_fast_forward_button_release(): + $FastForward/FastForwardButton.modulate = Color(1, 1, 1, 1) \ No newline at end of file