aboutsummaryrefslogtreecommitdiff
path: root/game/src
diff options
context:
space:
mode:
author Spartan322 <Megacake1234@gmail.com>2023-03-10 01:43:50 +0100
committer Spartan322 <Megacake1234@gmail.com>2023-03-11 22:00:10 +0100
commit046725ee047be93695b99fdbc9dc46e3146d9ce8 (patch)
tree5308b33af43c31f6e37769edb1a36638fa7f4be3 /game/src
parentdfd6d33a9bd1fda56589efa66a9ca0f63f5e46f8 (diff)
Add splash opener functionality
Add boot splash screen Implement splash skip on interaction
Diffstat (limited to 'game/src')
-rw-r--r--game/src/GameMenu.gd5
-rw-r--r--game/src/GameStart.tscn52
-rw-r--r--game/src/SplashContainer.gd30
3 files changed, 87 insertions, 0 deletions
diff --git a/game/src/GameMenu.gd b/game/src/GameMenu.gd
index 3a4c88f..a5390d5 100644
--- a/game/src/GameMenu.gd
+++ b/game/src/GameMenu.gd
@@ -39,3 +39,8 @@ func _on_credits_back_button_pressed():
func _on_main_menu_credits_button_pressed():
$Credits.show()
$MainMenu.hide()
+
+
+
+func _on_splash_container_splash_end():
+ show()
diff --git a/game/src/GameStart.tscn b/game/src/GameStart.tscn
new file mode 100644
index 0000000..2046bb5
--- /dev/null
+++ b/game/src/GameStart.tscn
@@ -0,0 +1,52 @@
+[gd_scene load_steps=6 format=3 uid="uid://1udsn4mggep2"]
+
+[ext_resource type="PackedScene" uid="uid://o4u142w4qkln" path="res://src/GameMenu.tscn" id="1_wlojq"]
+[ext_resource type="Script" path="res://src/SplashContainer.gd" id="2_xmcgv"]
+[ext_resource type="Texture2D" uid="uid://deef5hufq0j61" path="res://splash_assets/splash_end.png" id="3_qfv12"]
+[ext_resource type="Texture2D" uid="uid://cgdnixsyh7bja" path="res://splash_assets/splash_image.png" id="4_5b6yq"]
+[ext_resource type="VideoStream" path="res://splash_assets/splash_startup.ogv" id="5_8euyy"]
+
+[node name="GameStartup" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="GameMenu" parent="." instance=ExtResource("1_wlojq")]
+visible = false
+layout_mode = 1
+
+[node name="SplashContainer" type="AspectRatioContainer" parent="." node_paths=PackedStringArray("_splash_finish", "_splash_image", "_splash_video")]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+ratio = 1.7778
+stretch_mode = 3
+script = ExtResource("2_xmcgv")
+_splash_finish = NodePath("SplashFinish")
+_splash_image = NodePath("SplashImage")
+_splash_video = NodePath("SplashVideo")
+
+[node name="SplashFinish" type="TextureRect" parent="SplashContainer"]
+layout_mode = 2
+texture = ExtResource("3_qfv12")
+expand_mode = 1
+
+[node name="SplashImage" type="TextureRect" parent="SplashContainer"]
+layout_mode = 2
+texture = ExtResource("4_5b6yq")
+expand_mode = 1
+
+[node name="SplashVideo" type="VideoStreamPlayer" parent="SplashContainer"]
+layout_mode = 2
+stream = ExtResource("5_8euyy")
+autoplay = true
+expand = true
+
+[connection signal="splash_end" from="SplashContainer" to="GameMenu" method="_on_splash_container_splash_end"]
+[connection signal="finished" from="SplashContainer/SplashVideo" to="SplashContainer" method="_on_splash_startup_finished"]
diff --git a/game/src/SplashContainer.gd b/game/src/SplashContainer.gd
new file mode 100644
index 0000000..524d314
--- /dev/null
+++ b/game/src/SplashContainer.gd
@@ -0,0 +1,30 @@
+extends Control
+
+signal splash_end
+
+@export var _splash_finish : TextureRect
+@export var _splash_image : TextureRect
+@export var _splash_video : VideoStreamPlayer
+
+func _process(_delta):
+ var stream_texture := _splash_video.get_video_texture()
+ if stream_texture != null and not stream_texture.get_image().is_invisible():
+ _splash_image.hide()
+ _splash_finish.show()
+ set_process(false)
+
+func _input(event):
+ if (event is InputEventKey\
+ or event is InputEventMouse\
+ or event is InputEventScreenTouch\
+ or event is InputEventJoypadButton) and event.is_pressed():
+ _splash_finish.hide()
+ _on_splash_startup_finished()
+ accept_event()
+
+func _on_splash_startup_finished():
+ set_process_input(false)
+ splash_end.emit()
+ var tween := create_tween()
+ tween.tween_property(self, "modulate:a", 0, 0.5)
+ tween.tween_callback(self.queue_free)