Skip to content
Snippets Groups Projects
Commit e2fae936 authored by Fabian Keßler's avatar Fabian Keßler
Browse files

Add hud elements

parent 4515a8ce
No related branches found
No related tags found
No related merge requests found
......@@ -10,6 +10,7 @@ var penguin_scene: PackedScene = load("res://NPC/penguin/penguin.tscn")
var penguins : Array[Penguin] = []
func _ready() -> void:
Globals.pengu_group = self
timer.connect("timeout", Callable(self, "_on_timer_timeout"))
start_random_timer()
......
......@@ -64,6 +64,8 @@ func _process(delta: float) -> void:
var dir = (target - position).normalized()
var bump_dir = Vector2.ZERO
self.rotation = -get_parent().rotation
var near_areas: Array[Area2D] = $Area2D.get_overlapping_areas();
cluster_score = 0
for area in near_areas:
......
[gd_scene load_steps=22 format=3 uid="uid://cwmunv68b7txk"]
[gd_scene load_steps=23 format=3 uid="uid://cwmunv68b7txk"]
[ext_resource type="Script" uid="uid://babk78kqf724a" path="res://Player/PlayerMovement.gd" id="1_ihrqt"]
[ext_resource type="PackedScene" uid="uid://dfe8d0dg2yioj" path="res://Player/FishScene.tscn" id="2_rded7"]
......@@ -11,6 +11,7 @@
[ext_resource type="Texture2D" uid="uid://c771pbnvtsr6t" path="res://Player/bird_up_2.png" id="9_dplev"]
[ext_resource type="Texture2D" uid="uid://0il2dq67vsbg" path="res://Player/bird_down.png" id="10_7d6og"]
[ext_resource type="Texture2D" uid="uid://uc2v17mafr6n" path="res://Player/bird_down_2.png" id="11_183bc"]
[ext_resource type="PackedScene" uid="uid://bx2qxdfk08ti8" path="res://Player/camera/camera_2d.tscn" id="12_183bc"]
[sub_resource type="GDScript" id="GDScript_yjw77"]
......@@ -311,8 +312,6 @@ area2D = NodePath("Area2D")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_ihrqt")
[node name="AudioListener2D" type="AudioListener2D" parent="."]
[node name="FishCooldownTimer" type="Timer" parent="."]
one_shot = true
......@@ -342,6 +341,8 @@ libraries = {
}
speed_scale = 1.5
[node name="Camera" parent="." instance=ExtResource("12_183bc")]
[connection signal="timeout" from="FishCooldownTimer" to="." method="_on_fish_cooldown_timer_timeout"]
[connection signal="timeout" from="FishDespawnTimer" to="." method="_on_fish_despawn_timer_timeout"]
[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
......
......@@ -5,9 +5,6 @@
[node name="TestScene" type="Node2D"]
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(591, 335)
[node name="SchollenSpektakel" parent="." instance=ExtResource("2_oh42m")]
position = Vector2(-17, 66)
......
[gd_scene load_steps=3 format=3 uid="uid://bx2qxdfk08ti8"]
[ext_resource type="PackedScene" uid="uid://coryu5r8revlm" path="res://hud/hud.tscn" id="1_hmhh6"]
[sub_resource type="GDScript" id="GDScript_etdkj"]
script/source = "extends Node
@onready var player = get_parent()
@onready var base_zoom: Vector2 = %Cam.zoom
@onready var min_zoom := Vector2(0.5, 0.5)
@onready var max_zoom := Vector2(0.9, 0.9)
# ScreenShake logic
@export var max_offset: float = 5.0
@export var max_roll: float = 10.0
@export var shakeReduction: float = 2.5
@export var move_factor := 30.0
var stress: float = 0.0
var shake: float = 0.0
var extra_zoom := Vector2.ZERO
var zoom_accel := Vector2.ZERO
func _ready() -> void:
Globals.camera = self
func _physics_process(delta: float) -> void:
if not Globals.level_center:
return
# Position
var pos = Globals.level_center.global_position + (player.global_position + Globals.level_center.global_position) / move_factor
%Cam.offset = pos -Vector2.ONE * 50
#print(%Cam.global_position)
# Zoom
zoom_accel = zoom_accel / 2.0
zoom_accel += Vector2(player.velocity.length(), player.velocity.length()) / 1000000 - Vector2.ONE / 2000
var distance = player.global_position.distance_to(Globals.level_center.global_position)
extra_zoom = -Vector2(distance, distance) / 100000
extra_zoom = clamp(extra_zoom + zoom_accel, min_zoom - base_zoom, max_zoom - base_zoom)
#print(extra_zoom, zoom_accel, distance, pos, %Cam.global_position)
%Cam.zoom = base_zoom + extra_zoom
_process_shake(delta)
func _process_shake(delta) -> void:
# Lerp to normal position/rotation
%Cam.rotation_degrees = lerp( %Cam.rotation_degrees, 0.0, delta * 5.0)
%Cam.position.x = lerp( %Cam.position.x, 0.0, delta * 5.0)
%Cam.position.y = lerp( %Cam.position.y, 0.0, delta * 5.0)
# Shake logic
shake = stress * stress
# Rotation
%Cam.rotation_degrees += max_roll * shake * _get_noise(randi(), delta) * 100
# Position
var offset_x = max_offset * shake * _get_noise(randi(), delta + 1.0)
var offset_y = max_offset * shake * _get_noise(randi(), delta + 2.0)
%Cam.position = Vector2(offset_x, offset_y) * 10
# Shake reduction
stress -= shakeReduction * delta
stress = max(0, stress)
func _get_noise(noise_seed, time) -> float:
var n = FastNoiseLite.new()
n.seed = noise_seed
return n.get_noise_1d(time)
func add_stress(amount: float) -> void:
stress += amount
stress = max(0, stress)
"
[node name="Camera" type="Node"]
script = SubResource("GDScript_etdkj")
[node name="Cam" type="Camera2D" parent="."]
unique_name_in_owner = true
[node name="CanvasLayer" type="CanvasLayer" parent="Cam"]
[node name="HUD" parent="Cam/CanvasLayer" instance=ExtResource("1_hmhh6")]
pulsjam2025/Screenshot 2025-03-15 at 22.17.23.png

14.8 KiB

[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bgcrh2gh8dd7d"
path="res://.godot/imported/Screenshot 2025-03-15 at 22.17.23.png-d8fba5094fe8ec212930d27b8114ca90.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Screenshot 2025-03-15 at 22.17.23.png"
dest_files=["res://.godot/imported/Screenshot 2025-03-15 at 22.17.23.png-d8fba5094fe8ec212930d27b8114ca90.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
extends Node
signal score_changed
signal highscore_changed
var level_center: Node2D = null
var ice_floes: Array[IceFloe] = []
var camera: Node = null
var score: int = 0:
set(val):
score = val
emit_signal("score_changed", val)
var highscore: int = 0:
set(val):
score = val
emit_signal("highscore_changed", val)
var pengu_group: Node
var _score_timer := Timer.new()
func start_round():
if not pengu_group:
printerr("Cant start - No pengu group")
return
add_child(_score_timer)
_score_timer.timeout.connect(func(): score += 1)
_score_timer.timeout.connect(func(): score += pengu_group.n_penguins)
_score_timer.start(1.0)
[gd_scene load_steps=4 format=3 uid="uid://coryu5r8revlm"]
[gd_scene load_steps=6 format=3 uid="uid://coryu5r8revlm"]
[ext_resource type="FontFile" uid="uid://2c10u3pux7je" path="res://Winter Minie.ttf" id="1_6ca3a"]
[ext_resource type="Texture2D" uid="uid://bgcrh2gh8dd7d" path="res://Screenshot 2025-03-15 at 22.17.23.png" id="2_2gk58"]
[sub_resource type="GDScript" id="GDScript_6ca3a"]
script/source = "extends Control
func _ready() -> void:
Globals.score_changed.connect(update_score)
Globals.highscore_changed.connect(update_highscore)
func update_score(score) -> void:
$MarginContainer/ScoreLabel.text = str(score)
%ScoreLabel.text = str(score)
%SCORE.text = str(score)
func update_highscore(score) -> void:
%HIGHSCORE.text = str(score)
"
[sub_resource type="LabelSettings" id="LabelSettings_2gk58"]
font = ExtResource("1_6ca3a")
font_size = 86
shadow_size = 5
shadow_color = Color(0, 0, 0, 0.21)
[sub_resource type="LabelSettings" id="LabelSettings_318vg"]
font = ExtResource("1_6ca3a")
font_size = 36
shadow_size = 11
shadow_color = Color(0, 0, 0, 0.21)
[node name="HUD" type="Control"]
layout_mode = 3
......@@ -27,7 +41,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
script = SubResource("GDScript_6ca3a")
[node name="MarginContainer" type="MarginContainer" parent="."]
[node name="Gameplay" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
......@@ -37,9 +51,124 @@ grow_vertical = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
[node name="ScoreLabel" type="Label" parent="MarginContainer"]
[node name="ScoreLabel" type="Label" parent="Gameplay"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 0
text = "0"
label_settings = SubResource("LabelSettings_2gk58")
[node name="Start" type="MarginContainer" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
[node name="TextureRect" type="TextureRect" parent="Start"]
layout_mode = 2
size_flags_vertical = 0
texture = ExtResource("2_2gk58")
stretch_mode = 3
[node name="CenterContainer" type="CenterContainer" parent="Start"]
layout_mode = 2
[node name="label" type="Label" parent="Start/CenterContainer"]
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 0
text = "
Press any key to
Start"
label_settings = SubResource("LabelSettings_2gk58")
horizontal_alignment = 1
[node name="GameOver" type="MarginContainer" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
[node name="CenterContainer" type="CenterContainer" parent="GameOver"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="GameOver/CenterContainer"]
layout_mode = 2
alignment = 1
[node name="ScoreLabel" type="Label" parent="GameOver/CenterContainer/VBoxContainer"]
modulate = Color(0.999969, 0.614075, 0.555964, 1)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
text = "-Game Over-"
label_settings = SubResource("LabelSettings_2gk58")
horizontal_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="GameOver/CenterContainer/VBoxContainer"]
layout_mode = 2
[node name="ScoreLabel2" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer2"]
modulate = Color(0.819655, 0.819655, 0.819655, 1)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
text = "Score:"
label_settings = SubResource("LabelSettings_2gk58")
horizontal_alignment = 1
[node name="SCORE" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 10
size_flags_vertical = 0
text = "0"
label_settings = SubResource("LabelSettings_2gk58")
horizontal_alignment = 2
[node name="HBoxContainer" type="HBoxContainer" parent="GameOver/CenterContainer/VBoxContainer"]
layout_mode = 2
[node name="ScoreLabel2" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer"]
modulate = Color(0.819655, 0.819655, 0.819655, 1)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
text = "Highscore:"
label_settings = SubResource("LabelSettings_2gk58")
horizontal_alignment = 1
[node name="HIGHSCORE" type="Label" parent="GameOver/CenterContainer/VBoxContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 10
size_flags_vertical = 0
text = "0"
label_settings = SubResource("LabelSettings_2gk58")
horizontal_alignment = 2
[node name="HSeparator" type="HSeparator" parent="GameOver/CenterContainer/VBoxContainer"]
layout_mode = 2
[node name="ScoreLabel2" type="Label" parent="GameOver/CenterContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
text = "
Press SPACE to continue"
label_settings = SubResource("LabelSettings_318vg")
horizontal_alignment = 1
......@@ -11,7 +11,7 @@ config_version=5
[application]
config/name="PulsJam2025"
run/main_scene="uid://ch1i0q8d6r4f0"
run/main_scene="uid://byb21wlyercnu"
config/features=PackedStringArray("4.4")
[autoload]
......
[gd_scene load_steps=10 format=3 uid="uid://ch1i0q8d6r4f0"]
[gd_scene load_steps=9 format=3 uid="uid://ch1i0q8d6r4f0"]
[ext_resource type="Script" uid="uid://cik8umdfv5587" path="res://schollen_spektakel.gd" id="1_ij3xc"]
[ext_resource type="PackedScene" uid="uid://d1vv1o7g2lp01" path="res://water/water.tscn" id="2_hycu0"]
[ext_resource type="PackedScene" uid="uid://diilm3qbp1tly" path="res://ice_floe/ice_floe.tscn" id="2_ij3xc"]
[ext_resource type="PackedScene" uid="uid://b23bxmjrcknm3" path="res://center_pos.tscn" id="4_6ndi4"]
[ext_resource type="PackedScene" uid="uid://cgkfkbiyl02yl" path="res://ice_floe/floe_area.tscn" id="5_doghl"]
[ext_resource type="PackedScene" uid="uid://coryu5r8revlm" path="res://hud/hud.tscn" id="6_2ljra"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_doghl"]
resource_local_to_scene = true
......@@ -55,11 +54,3 @@ script = SubResource("GDScript_2ljra")
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FloeArea"]
polygon = PackedVector2Array(-7071, -5132, 10762, -5282, 9681, 5706, -7101, 5466, -24, 690, 1193, 681, 1196, -60, -43, -63, -41, 697, -7131, 5464)
[node name="Camera2D" type="Camera2D" parent="."]
position = Vector2(591, 335)
[node name="CanvasLayer" type="CanvasLayer" parent="Camera2D"]
[node name="HUD" parent="Camera2D/CanvasLayer" instance=ExtResource("6_2ljra")]
metadata/_edit_use_anchors_ = true
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment