From 81b01b7508965e3781dd7741840c7c1cc237b7d4 Mon Sep 17 00:00:00 2001 From: pennyrigate Date: Wed, 31 Dec 2025 17:29:49 -0500 Subject: [PATCH] gover man! --- globals/currentgame.gd | 19 ++++- globals/currentgame.tscn | 1 + gui/hud.tscn | 1 + menus/game_over.tscn | 154 +++++++++++++++++++++++++++++++++++ objects/player/player.gd | 13 +-- objects/player/player.tscn | 23 +----- project.godot | 2 + scenes/test_scene_penny.tscn | 8 +- 8 files changed, 185 insertions(+), 36 deletions(-) create mode 100644 menus/game_over.tscn diff --git a/globals/currentgame.gd b/globals/currentgame.gd index e606696..1eb6f7d 100644 --- a/globals/currentgame.gd +++ b/globals/currentgame.gd @@ -6,19 +6,30 @@ extends Node @export var lives = 2 @export var bombs = 3 +#func _process(delta: float) -> void: + #print(Display.current_scene) + func change_score(amount): score += amount - Hud.score_label = str("SCORE: ") + str(score) + Hud.score_label.text = str("SCORE: ") + str(score) func change_graze(amount): graze += amount level_graze += amount - Hud.graze_label = str("GRAZE: ") + str(level_graze) + Hud.graze_label.text = str("GRAZE: ") + str(level_graze) func change_lives(amount): lives += amount - Hud.lives_label = str("LIVES: ") + str(lives) + lives = clamp(lives,-1,9) + Hud.lives_label.text = str("LIVES: ") + str(lives) + if lives < 0: + Hud.lives_label.text = str("LIVES: ") + str(0) + var Gover = load("res://menus/game_over.tscn") + var gover = Gover.instantiate() + #TODO implement properly + get_tree().paused = true + Display.viewport.add_child(gover) func change_bombs(amount): bombs += amount - Hud.bombs_label = str("BOMB: ") + str(bombs) + Hud.bombs_label.text = str("BOMB: ") + str(bombs) diff --git a/globals/currentgame.tscn b/globals/currentgame.tscn index 17ea3dc..7ec61b2 100644 --- a/globals/currentgame.tscn +++ b/globals/currentgame.tscn @@ -3,4 +3,5 @@ [ext_resource type="Script" uid="uid://4lh6pskiiq1c" path="res://globals/currentgame.gd" id="1_0tn8j"] [node name="CurrentGame" type="Node"] +process_mode = 3 script = ExtResource("1_0tn8j") diff --git a/gui/hud.tscn b/gui/hud.tscn index 801f560..f73cf0c 100644 --- a/gui/hud.tscn +++ b/gui/hud.tscn @@ -4,6 +4,7 @@ [ext_resource type="Script" uid="uid://p8hkie00rjtx" path="res://gui/hud.gd" id="1_u7rvv"] [node name="Hud" type="CanvasLayer" groups=["viewport_autoload"]] +process_mode = 3 script = ExtResource("1_u7rvv") [node name="Score" type="Label" parent="."] diff --git a/menus/game_over.tscn b/menus/game_over.tscn new file mode 100644 index 0000000..6046d48 --- /dev/null +++ b/menus/game_over.tscn @@ -0,0 +1,154 @@ +[gd_scene load_steps=5 format=3 uid="uid://caiqjh3ff6rym"] + +[ext_resource type="FontFile" uid="uid://dseq0eyk0say1" path="res://fonts/Super Mario Bros. NES.ttf" id="1_v8xbx"] + +[sub_resource type="Animation" id="Animation_mq8lb"] +resource_name = "gover" +length = 2.0 +step = 0.0333333 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ColorRect:size") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.56666666), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(240, 0), Vector2(240, 320)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("GameOver:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1, 1.5333333), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, 0), Vector2(1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("GameOver:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1, 1.5333333), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 0.0, 6.283185307179586] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Retry?:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(1.7333333, 1.9333333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(1, 1)] +} + +[sub_resource type="Animation" id="Animation_slp2k"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ColorRect:size") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(240, 320)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("GameOver:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("GameOver:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Retry?:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hl86a"] +_data = { +&"RESET": SubResource("Animation_slp2k"), +&"gover": SubResource("Animation_mq8lb") +} + +[node name="GameOver" type="Control" groups=["viewport_autoload"]] +process_mode = 3 +layout_mode = 3 +anchors_preset = 0 + +[node name="ColorRect" type="ColorRect" parent="."] +layout_mode = 0 +offset_right = 240.0 +offset_bottom = 320.0 +color = Color(0, 0, 0, 1) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_hl86a") +} +autoplay = "gover" + +[node name="GameOver" type="Label" parent="."] +modulate = Color(1, 0, 0, 1) +layout_mode = 0 +offset_left = 50.0 +offset_top = 139.0 +offset_right = 194.0 +offset_bottom = 157.0 +theme_override_fonts/font = ExtResource("1_v8xbx") +theme_override_font_sizes/font_size = 16 +text = "GAME OVER" + +[node name="Retry?" type="Label" parent="."] +layout_mode = 0 +offset_left = 98.0 +offset_top = 167.0 +offset_right = 146.0 +offset_bottom = 190.0 +rotation = 6.2831855 +theme_override_fonts/font = ExtResource("1_v8xbx") +theme_override_font_sizes/font_size = 8 +text = "Retry?" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/objects/player/player.gd b/objects/player/player.gd index d42acac..02d9c4b 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -7,23 +7,24 @@ extends CharacterBody2D @export var move_focused_speed: float @onready var startpos = position +var can_die = true + var focused: bool: get(): return Input.is_action_pressed(&"focus") func _physics_process(delta: float) -> void: var input_dir = Input.get_vector(&"move_left", &"move_right", &"move_up", &"move_down").sign() - velocity = input_dir.normalized() * (move_focused_speed if focused else move_normal_speed) move_and_slide() func _on_hurtbox_area_entered(area: Area2D) -> void: - %DeathSound.play() - position = startpos - CurrentGame.change_lives(-1) - if CurrentGame.lives < 0: - gover() + if can_die: + %DeathSound.play() + position = startpos + CurrentGame.change_lives(-1) + can_die = false func gover(): print("yeeeowtch!!!") diff --git a/objects/player/player.tscn b/objects/player/player.tscn index e15a3f3..4d4638a 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://c714s5d7d5765"] +[gd_scene load_steps=12 format=3 uid="uid://c714s5d7d5765"] [ext_resource type="Script" uid="uid://bpo15kuxdmulu" path="res://objects/player/player.gd" id="1_cqmt1"] [ext_resource type="Texture2D" uid="uid://cre6i8tsdlt7j" path="res://graphics/player/player_1.png" id="2_jnjyq"] @@ -33,11 +33,7 @@ size = Vector2(22, 22) [sub_resource type="CircleShape2D" id="CircleShape2D_gnkmh"] radius = 13.038404 -[sub_resource type="Gradient" id="Gradient_aeam7"] -offsets = PackedFloat32Array(0, 0.513333, 1) -colors = PackedColorArray(0, 0.647059, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1) - -[node name="Player" type="CharacterBody2D"] +[node name="Player" type="CharacterBody2D" groups=["player"]] collision_layer = 2 script = ExtResource("1_cqmt1") move_normal_speed = 200.0 @@ -84,21 +80,10 @@ debug_color = Color(0.7740294, 0.14773864, 0.99999994, 0.41960785) unique_name_in_owner = true stream = ExtResource("5_gnkmh") -[node name="GrazeParticles" type="CPUParticles2D" parent="." instance=ExtResource("6_xkryw")] +[node name="GrazeParticles" parent="." instance=ExtResource("6_xkryw")] unique_name_in_owner = true -emitting = false amount = 10 -lifetime = 0.15 -one_shot = true -speed_scale = 0.5 -explosiveness = 0.6 -randomness = 1.0 -lifetime_randomness = 1.0 -spread = 154.09 -gravity = Vector2(0, 630) -initial_velocity_min = 251.99 -initial_velocity_max = 484.86 -color_ramp = SubResource("Gradient_aeam7") +script = null [connection signal="area_entered" from="Hurtbox" to="." method="_on_hurtbox_area_entered"] [connection signal="area_entered" from="GrazeBox" to="." method="_on_graze_box_area_entered"] diff --git a/project.godot b/project.godot index a5e37ae..b06bb92 100644 --- a/project.godot +++ b/project.godot @@ -28,6 +28,7 @@ Hud="*res://gui/hud.tscn" window/size/viewport_width=240 window/size/viewport_height=320 +window/vsync/vsync_mode=0 [editor_plugins] @@ -46,6 +47,7 @@ folder_colors={ [global_group] viewport_autoload="" +player="" [input] diff --git a/scenes/test_scene_penny.tscn b/scenes/test_scene_penny.tscn index 920bda5..f7665ed 100644 --- a/scenes/test_scene_penny.tscn +++ b/scenes/test_scene_penny.tscn @@ -32,7 +32,7 @@ position = Vector2(124, 280) [node name="StaticBody2D" type="StaticBody2D" parent="."] [node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2(246, 160) +position = Vector2(245, 160) shape = SubResource("RectangleShape2D_ikr60") [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] @@ -53,9 +53,3 @@ position = Vector2(124, 81) [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource("5_wcm38") autoplay = true - -[node name="Label" type="Label" parent="."] -offset_right = 40.0 -offset_bottom = 23.0 -text = "SCORE: 000000000 -GRAZE: 0"