From be5de281c0557eb9c41c8e84fd86714a401ecc8b Mon Sep 17 00:00:00 2001 From: Tomasz Boruc Date: Fri, 9 Oct 2026 15:50:19 +0200 Subject: [PATCH] Poprawka obrazen --- scenes/game/damage_popup.tscn | 13 +++++++++++ scenes/game/game.tscn | 6 ++++- scenes/game/weapon_test_target.tscn | 31 ++++++++++++++++++++++++++ scripts/game/damage_popup.gd | 15 +++++++++++++ scripts/game/damage_popup.gd.uid | 1 + scripts/game/weapon_projectile.gd | 15 ++++++++++++- scripts/game/weapon_test_target.gd | 17 ++++++++++++++ scripts/game/weapon_test_target.gd.uid | 1 + 8 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 scenes/game/damage_popup.tscn create mode 100644 scenes/game/weapon_test_target.tscn create mode 100644 scripts/game/damage_popup.gd create mode 100644 scripts/game/damage_popup.gd.uid create mode 100644 scripts/game/weapon_test_target.gd create mode 100644 scripts/game/weapon_test_target.gd.uid diff --git a/scenes/game/damage_popup.tscn b/scenes/game/damage_popup.tscn new file mode 100644 index 0000000..5b766df --- /dev/null +++ b/scenes/game/damage_popup.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://scripts/game/damage_popup.gd" id="1_script"] + +[node name="DamagePopup" type="Label"] +offset_left = -48.0 +offset_top = -18.0 +offset_right = 48.0 +offset_bottom = 18.0 +horizontal_alignment = 1 +vertical_alignment = 1 +mouse_filter = 2 +script = ExtResource("1_script") diff --git a/scenes/game/game.tscn b/scenes/game/game.tscn index d85121f..5220a6b 100644 --- a/scenes/game/game.tscn +++ b/scenes/game/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3] +[gd_scene load_steps=12 format=3] [ext_resource type="Script" path="res://scripts/game/game.gd" id="1_game"] [ext_resource type="Script" path="res://scripts/game/space_level_background.gd" id="2_background"] @@ -6,6 +6,7 @@ [ext_resource type="Script" path="res://scripts/game/flight_hud.gd" id="4_hud"] [ext_resource type="PackedScene" path="res://scenes/ui/ship_equipment_panel.tscn" id="5_equipment"] [ext_resource type="PackedScene" path="res://scenes/ui/ship_inventory_panel.tscn" id="6_inventory"] +[ext_resource type="PackedScene" path="res://scenes/game/weapon_test_target.tscn" id="7_target"] [sub_resource type="RectangleShape2D" id="TopWall"] size = Vector2(5200, 40) @@ -48,6 +49,9 @@ shape = SubResource("RightWall") [node name="PlayerShip" parent="." instance=ExtResource("3_player")] +[node name="WeaponTestTarget" parent="." instance=ExtResource("7_target")] +position = Vector2(240, 0) + [node name="HUD" type="CanvasLayer" parent="."] script = ExtResource("4_hud") diff --git a/scenes/game/weapon_test_target.tscn b/scenes/game/weapon_test_target.tscn new file mode 100644 index 0000000..eaa357c --- /dev/null +++ b/scenes/game/weapon_test_target.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Script" path="res://scripts/game/weapon_test_target.gd" id="1_script"] +[ext_resource type="Texture2D" path="res://assets/Ships/Spaceship_0.png" id="2_texture"] + +[sub_resource type="CircleShape2D" id="TargetCollision"] +radius = 34.0 + +[node name="WeaponTestTarget" type="StaticBody2D"] +collision_layer = 4 +collision_mask = 0 +script = ExtResource("1_script") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_texture") +scale = Vector2(0.25, 0.25) +texture_filter = 1 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("TargetCollision") + +[node name="NameLabel" type="Label" parent="."] +offset_left = -90.0 +offset_top = 42.0 +offset_right = 90.0 +offset_bottom = 66.0 +theme_override_colors/font_color = Color(0.65, 0.9, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "CEL TESTOWY" +horizontal_alignment = 1 +mouse_filter = 2 diff --git a/scripts/game/damage_popup.gd b/scripts/game/damage_popup.gd new file mode 100644 index 0000000..a048d30 --- /dev/null +++ b/scripts/game/damage_popup.gd @@ -0,0 +1,15 @@ +extends Label + +func _ready() -> void: + z_index = 30 + add_theme_color_override("font_color", Color(1.0, 0.78, 0.28, 1.0)) + add_theme_color_override("font_shadow_color", Color(0.05, 0.08, 0.12, 0.95)) + add_theme_constant_override("shadow_offset_x", 2) + add_theme_constant_override("shadow_offset_y", 2) + add_theme_font_size_override("font_size", 22) + var tween := create_tween() + tween.set_parallel(true) + tween.tween_property(self, "position:y", position.y - 48.0, 0.8).set_ease(Tween.EASE_OUT) + tween.tween_property(self, "modulate:a", 0.0, 0.8).set_ease(Tween.EASE_IN) + tween.set_parallel(false) + tween.tween_callback(queue_free) diff --git a/scripts/game/damage_popup.gd.uid b/scripts/game/damage_popup.gd.uid new file mode 100644 index 0000000..a48baf6 --- /dev/null +++ b/scripts/game/damage_popup.gd.uid @@ -0,0 +1 @@ +uid://d2jviog5nrx6l diff --git a/scripts/game/weapon_projectile.gd b/scripts/game/weapon_projectile.gd index 7ef2b40..4640c72 100644 --- a/scripts/game/weapon_projectile.gd +++ b/scripts/game/weapon_projectile.gd @@ -30,7 +30,20 @@ func configure( func _physics_process(delta: float) -> void: var step := projectile_speed * delta - global_position += direction * step + var previous_position := global_position + var next_position := previous_position + direction * step + var query := PhysicsRayQueryParameters2D.create( + previous_position, + next_position, + collision_mask, + [get_rid()] + ) + var result := get_world_2d().direct_space_state.intersect_ray(query) + if not result.is_empty(): + global_position = result["position"] + _hit_target(result.get("collider")) + return + global_position = next_position _distance_travelled += step if _distance_travelled >= max_range: queue_free() diff --git a/scripts/game/weapon_test_target.gd b/scripts/game/weapon_test_target.gd new file mode 100644 index 0000000..b99a6d6 --- /dev/null +++ b/scripts/game/weapon_test_target.gd @@ -0,0 +1,17 @@ +extends StaticBody2D + +const DAMAGE_POPUP_SCENE := preload("res://scenes/game/damage_popup.tscn") + +var total_damage_received := 0.0 + +func take_damage(amount: float) -> void: + total_damage_received += amount + var popup := DAMAGE_POPUP_SCENE.instantiate() as Label + popup.text = "-%s DMG" % _format_damage(amount) + popup.global_position = global_position + Vector2(randf_range(-18.0, 18.0), -34.0) + get_parent().add_child(popup) + +func _format_damage(amount: float) -> String: + if is_equal_approx(amount, roundf(amount)): + return str(int(roundf(amount))) + return "%.1f" % amount diff --git a/scripts/game/weapon_test_target.gd.uid b/scripts/game/weapon_test_target.gd.uid new file mode 100644 index 0000000..e0fc823 --- /dev/null +++ b/scripts/game/weapon_test_target.gd.uid @@ -0,0 +1 @@ +uid://bdgposd5781st