From d3affaca7d9b11783e46e0685bb21558c36a007f Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Mon, 19 Jun 2023 14:18:22 +0200 Subject: [PATCH] feat: DVD Logo like moving thing --- src/Actors/BlobbyCam.tscn | 3 +- src/Levels/1 Tut Level.tscn | 31 +++++++++++++++-- src/Levels/TutorialThingy.gd | 34 +++++++++++++++++++ .../Screens/InGameMenu/ControlsMenuIngame.gd | 7 +--- .../Screens/InGameMenu/PauseScreen.gd | 3 +- .../Screens/InGameMenu/PauseScreen.tscn | 32 +++++------------ .../MainMenu/ControlsMenu/KeySelectMenu.gd | 8 +++-- 7 files changed, 82 insertions(+), 36 deletions(-) create mode 100644 src/Levels/TutorialThingy.gd diff --git a/src/Actors/BlobbyCam.tscn b/src/Actors/BlobbyCam.tscn index 0c0f818..bac55d1 100644 --- a/src/Actors/BlobbyCam.tscn +++ b/src/Actors/BlobbyCam.tscn @@ -971,9 +971,10 @@ texture = ExtResource( 8 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] frames = SubResource( 7 ) +frame = 3 playing = true [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] frames = SubResource( 8 ) -frame = 5 +frame = 8 playing = true diff --git a/src/Levels/1 Tut Level.tscn b/src/Levels/1 Tut Level.tscn index ebd09ed..878fc1d 100644 --- a/src/Levels/1 Tut Level.tscn +++ b/src/Levels/1 Tut Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=18 format=2] [ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=1] [ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=2] @@ -10,6 +10,10 @@ [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=8] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=9] [ext_resource path="res://src/Levels/Level 1.gd" type="Script" id=10] +[ext_resource path="res://addons/controller_icons/objects/Button.gd" type="Script" id=11] +[ext_resource path="res://src/Levels/TutorialThingy.gd" type="Script" id=12] + +[sub_resource type="RectangleShape2D" id=14] [sub_resource type="AnimationNodeStateMachinePlayback" id=4] @@ -99,6 +103,26 @@ unique_name_in_owner = true [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] wait_time = 20.0 +[node name="TutorialButton" type="StaticBody2D" parent="."] +z_index = 4 +z_as_relative = false +collision_layer = 0 +collision_mask = 0 +script = ExtResource( 12 ) + +[node name="Sprite" type="Sprite" parent="TutorialButton"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="TutorialButton"] +shape = SubResource( 14 ) + +[node name="ControllerButton" type="Button" parent="TutorialButton"] +visible = false +margin_left = -10.0 +margin_top = -10.0 +margin_right = 10.0 +margin_bottom = 10.0 +script = ExtResource( 11 ) + [node name="BlobbyCam" parent="." instance=ExtResource( 3 )] unique_name_in_owner = true drag_margin_bottom = 0.3 @@ -107,7 +131,10 @@ drag_margin_bottom = 0.3 visible = true [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] -frame = 12 +frame = 3 + +[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] +frame = 10 [node name="Blobby" parent="." instance=ExtResource( 9 )] unique_name_in_owner = true diff --git a/src/Levels/TutorialThingy.gd b/src/Levels/TutorialThingy.gd new file mode 100644 index 0000000..665f0ce --- /dev/null +++ b/src/Levels/TutorialThingy.gd @@ -0,0 +1,34 @@ +extends StaticBody2D +var screen_size: Vector2 +var velocity = Vector2(1,1) +onready var blobby = $"%Blobby" +onready var cam = $"%BlobbyCam" + +func _ready() -> void: + $ControllerButton.path = "jump" + screen_size = cam.screen_rect + +func _process(delta: float) -> void: + $Sprite.texture = $ControllerButton.icon + var tex_size = Vector2(20,20) + var up_left_pos = cam.get_global_transform().affine_inverse() * (position - tex_size/2) + var down_right_pos = cam.get_global_transform().affine_inverse() * (position + tex_size/2) + + var screen_stretch_factor = get_tree().root.size / screen_size + var blobby_screen_pos = (blobby.get_viewport_transform() * (blobby.position))/screen_stretch_factor + var corrected_screen = screen_size - blobby_screen_pos + print(get_tree().root.get_visible_rect().position) + + if up_left_pos.x + blobby_screen_pos.x <= 0: + velocity.x = 1 + elif down_right_pos.x >= corrected_screen.x: + velocity.x = -1 + + if up_left_pos.y + blobby_screen_pos.y <= 0: + velocity.y = 1 + elif down_right_pos.y >= corrected_screen.y: + velocity.y = -1 + + self.position += velocity + + diff --git a/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd b/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd index fcec98d..c6f4b63 100644 --- a/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd +++ b/src/UserInterface/Screens/InGameMenu/ControlsMenuIngame.gd @@ -4,11 +4,10 @@ onready var _action_list = $"%ActionKeyList" onready var changes_made := false onready var changes_saved := false -func on_start(): +func _ready() -> void: $InputMapper.connect('profile_changed', self, 'rebuild') $InputMapper.initialize_profiles() $ProfilesMenu.initialize($InputMapper) - $ProfilesMenu.grab_focus() $InputMapper.change_profile($ProfilesMenu.selected) func rebuild(input_profile): @@ -43,7 +42,3 @@ func _on_InputLine_change_button_pressed(action_name, line): changes_made = true changes_saved = false line.update_key(event) - - -func _on_Back_button_up() -> void: - pass # Replace with function body. diff --git a/src/UserInterface/Screens/InGameMenu/PauseScreen.gd b/src/UserInterface/Screens/InGameMenu/PauseScreen.gd index e6ec352..7404505 100644 --- a/src/UserInterface/Screens/InGameMenu/PauseScreen.gd +++ b/src/UserInterface/Screens/InGameMenu/PauseScreen.gd @@ -19,6 +19,7 @@ func _on_GlobalState_player_died() -> void: func _unhandled_input(event: InputEvent) -> void: + # TODO don't match for specific text... why did i even consider that... did I pull that from the tutorial??? if event.is_action_pressed("pause") && pause_title.text != "You lost" && !$ControlsMenu.visible: #not oder ! schaltet einen boolean um #Ist self hier notwendig? @@ -35,6 +36,6 @@ func set_paused(value: bool) -> void: func _on_Controls_button_up() -> void: - $ControlsMenu.on_start() $ControlsMenu.visible = true $PauseOverlay.visible = false + $ControlsMenu/ProfilesMenu.grab_focus() diff --git a/src/UserInterface/Screens/InGameMenu/PauseScreen.tscn b/src/UserInterface/Screens/InGameMenu/PauseScreen.tscn index f5ab3fb..a9be5c9 100644 --- a/src/UserInterface/Screens/InGameMenu/PauseScreen.tscn +++ b/src/UserInterface/Screens/InGameMenu/PauseScreen.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=29 format=2] +[gd_scene load_steps=27 format=2] [ext_resource path="res://assets/meta/ui_theme.tres" type="Theme" id=1] [ext_resource path="res://src/UserInterface/Buttons/ChangeSceneButton.tscn" type="PackedScene" id=3] @@ -16,8 +16,6 @@ [ext_resource path="res://src/UserInterface/Screens/MainMenu/ControlsMenu/Reset.gd" type="Script" id=15] [ext_resource path="res://src/UserInterface/Screens/MainMenu/ControlsMenu/SaveButton.gd" type="Script" id=16] [ext_resource path="res://src/UserInterface/Screens/MainMenu/ControlsMenu/ProfilesMenu.gd" type="Script" id=17] -[ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=18] -[ext_resource path="res://assets/environment/background/starry-space.png" type="Texture" id=19] [ext_resource path="res://assets/sounds/EpsonStart.ogg" type="AudioStream" id=20] [ext_resource path="res://assets/ui/Screenshot 2023-05-23 160521.png" type="Texture" id=21] [ext_resource path="res://assets/meta/montserrat_extrabold.otf" type="DynamicFontData" id=22] @@ -59,6 +57,7 @@ script = ExtResource( 5 ) pause_mode = 2 physics_interpolation_mode = 1 unique_name_in_owner = true +visible = false anchor_right = 1.0 anchor_bottom = 1.0 input_pass_on_modal_close_click = false @@ -67,28 +66,15 @@ size_flags_vertical = 0 theme = ExtResource( 1 ) script = ExtResource( 10 ) +[node name="PauseOverlay" type="ColorRect" parent="ControlsMenu"] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 0.156863 ) + [node name="InputMapper" type="Node" parent="ControlsMenu"] unique_name_in_owner = true script = ExtResource( 13 ) -[node name="background" type="TextureRect" parent="ControlsMenu"] -visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_top = 46.0 -margin_bottom = 46.0 -texture = ExtResource( 19 ) -expand = true -stretch_mode = 1 - -[node name="background2" type="TextureRect" parent="ControlsMenu"] -visible = false -anchor_right = 1.0 -anchor_bottom = 1.0 -texture = ExtResource( 18 ) -expand = true -stretch_mode = 1 - [node name="ProfilesMenu" type="OptionButton" parent="ControlsMenu"] unique_name_in_owner = true anchor_left = 0.5 @@ -266,7 +252,6 @@ text = "Save" script = ExtResource( 16 ) [node name="KeySelectMenu" type="Panel" parent="ControlsMenu"] -pause_mode = 2 unique_name_in_owner = true process_priority = 1 visible = false @@ -274,6 +259,7 @@ material = SubResource( 8 ) anchor_right = 1.0 anchor_bottom = 1.0 focus_mode = 2 +mouse_filter = 2 input_pass_on_modal_close_click = false script = ExtResource( 12 ) @@ -420,7 +406,7 @@ color = Color( 0, 0, 0, 0.235294 ) [node name="Title" type="Label" parent="PauseOverlay"] margin_right = 170.0 margin_bottom = 45.0 -text = "Wumper" +text = "BOBBI!" [node name="VBoxContainer" type="VBoxContainer" parent="PauseOverlay"] anchor_left = 0.5 diff --git a/src/UserInterface/Screens/MainMenu/ControlsMenu/KeySelectMenu.gd b/src/UserInterface/Screens/MainMenu/ControlsMenu/KeySelectMenu.gd index a44d3e1..de67139 100644 --- a/src/UserInterface/Screens/MainMenu/ControlsMenu/KeySelectMenu.gd +++ b/src/UserInterface/Screens/MainMenu/ControlsMenu/KeySelectMenu.gd @@ -9,13 +9,15 @@ func _ready() -> void: func _process(delta: float) -> void: $Prompt2.text = ("(ESC to cancel or wait: %s" % round($Timer.time_left)) + " sec)" -func _input(event): - if !event.is_pressed(): +func _input(event: InputEvent) -> void: + if !self.visible || !event.is_pressed(): return + # TODO Static quit button esc if "scancode" in event && event.scancode == 16777217: event = null - emit_signal("key_selected", event) + accept_event() get_tree().set_input_as_handled() + emit_signal("key_selected", event) close() func open():