From 8f7e7aa78fd192cfae6d15e0fb507565be7d3b32 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Sat, 8 Nov 2025 02:23:42 +0300 Subject: [PATCH] Fixed weapons scenes inheritance --- game/entities/player.tscn | 6 +- game/entities/ship.gd | 3 +- game/entities/weapons/abstract_projectile.gd | 67 +++++-------------- .../entities/weapons/abstract_projectile.tscn | 17 +++++ game/entities/weapons/abstract_weapon.gd | 19 ++++-- game/entities/weapons/abstract_weapon.tscn | 25 ++----- game/entities/weapons/cannon/cannon.gd | 11 --- game/entities/weapons/cannon/cannon.tscn | 18 +++-- .../weapons/cannon/cannon_projectile.tscn | 22 +++--- game/entities/weapons/gatling/gatling.gd | 11 --- game/entities/weapons/gatling/gatling.tscn | 18 +++-- .../weapons/gatling/gatling_projectile.tscn | 25 +++---- game/entities/weapons/laser/laser.gd | 11 --- game/entities/weapons/laser/laser.tscn | 25 ++++--- .../weapons/laser/laser_projectile.tscn | 25 ++++--- game/entities/weapons/launcher/launcher.gd | 11 --- game/entities/weapons/launcher/launcher.tscn | 16 ++--- .../weapons/launcher/launcher_projectile.tscn | 22 +++--- game/entities/weapons/minelayer/minelayer.gd | 11 --- .../entities/weapons/minelayer/minelayer.tscn | 18 +++-- .../weapons/minelayer/minelayer_projectile.gd | 28 ++++++++ .../minelayer/minelayer_projectile.tscn | 19 +++--- game/entities/weapons/plasma/plasma.gd | 11 --- game/entities/weapons/plasma/plasma.tscn | 20 +++--- .../weapons/plasma/plasma_projectile.tscn | 15 ++--- game/entities/weapons/railgun/railgun.gd | 11 --- game/entities/weapons/railgun/railgun.tscn | 16 ++--- .../weapons/railgun/railgun_projectile.tscn | 21 +++--- game/entities/weapons/shrapnel/shrapnel.gd | 11 --- game/entities/weapons/shrapnel/shrapnel.tscn | 20 +++--- .../weapons/shrapnel/shrapnel_projectile.gd | 17 +++++ .../weapons/shrapnel/shrapnel_projectile.tscn | 25 ++++--- game/entities/weapons/tesla/tesla.gd | 11 --- game/entities/weapons/tesla/tesla.tscn | 20 +++--- .../weapons/tesla/tesla_projectile.tscn | 19 +++--- game/passage.tscn | 27 -------- game/reloaders/energy_reloader.gd | 6 +- game/reloaders/firerate_reloader.gd | 2 +- game/reloaders/gatling_reloader.gd | 4 +- game/reloaders/magazine_reloader.gd | 5 +- 40 files changed, 277 insertions(+), 412 deletions(-) create mode 100644 game/entities/weapons/abstract_projectile.tscn diff --git a/game/entities/player.tscn b/game/entities/player.tscn index be7ad5f..028b702 100644 --- a/game/entities/player.tscn +++ b/game/entities/player.tscn @@ -10,6 +10,6 @@ script = ExtResource("1_3a8sv") collision_layer = 2 collision_mask = 21 size = Vector2(48, 32) -acceleration = 46 -deceleration = 23 -max_speed = 46 +acceleration = 92 +deceleration = 46 +max_speed = 92 diff --git a/game/entities/ship.gd b/game/entities/ship.gd index 77efb11..f8384f4 100644 --- a/game/entities/ship.gd +++ b/game/entities/ship.gd @@ -17,6 +17,7 @@ extends CharacterBody2D @export var deceleration : int @export var max_speed : int + @onready var weapons : Array[AbstractWeapon]: set(value): pass @@ -73,7 +74,7 @@ func _get_new_speed(accel: float, decel: float, current_speed: float) -> float: func shoot(weapon: Node) -> void: if weapon in weapons: - weapon.shoot() + weapon.shoot(velocity) func reload(weapon: Node) -> void: diff --git a/game/entities/weapons/abstract_projectile.gd b/game/entities/weapons/abstract_projectile.gd index 33fc556..1e35fe1 100644 --- a/game/entities/weapons/abstract_projectile.gd +++ b/game/entities/weapons/abstract_projectile.gd @@ -1,83 +1,45 @@ class_name AbstractProjectile -extends CharacterBody2D +extends Area2D const PLAYER_LAYER = 2 const ENEMY_LAYER = 4 const PLAYER_PROJECTILE_LAYER = 8 const ENEMY_PROJECTILE_LAYER = 16 -const PROJECTILE_BORDER_LAYER = 32 -signal destroyed +@export_range(0, 250) var damage : int +@export_range(0, 1000) var speed : int +@export_range(0, 10) var piercing: int -@export var damage : int -@export var speed : int -@export var direction : Vector2 -@export var acceleration : int -@export var max_distance : int -@export var max_livetime : int -@export var piercing: int +var direction : Vector2 +var ship_velocity: Vector2 -@export var collide_player: bool: +var collide_player: bool: set(value): collide_player = value _apply_collision_mask() - get: - return collide_player -@export var collide_enemies: bool: +var collide_enemies: bool: set(value): collide_enemies = value _apply_collision_mask() - get: - return collide_enemies -var _traveled_distance: float -var _livetime: float +var _velocity: Vector2 func _ready() -> void: - velocity = direction.normalized() * speed + _velocity = direction.normalized() * speed + ship_velocity _apply_collision_mask() -func _physics_process(_delta: float) -> void: - var was_collided := move_and_slide() - if was_collided: - destroyed.emit() - queue_free() +func _physics_process(delta: float) -> void: + position += _velocity * delta -func process_acceleration(delta: float) -> void: - var current_acceleration := acceleration * delta - if current_acceleration > 0: - velocity += velocity.normalized() * current_acceleration - elif current_acceleration < 0: - if velocity.length() > current_acceleration: - velocity += velocity.normalized() * current_acceleration - else: - velocity = Vector2.ZERO - - -func process_distance(delta: float) -> void: - _traveled_distance += velocity.length() * delta - if max_distance > 0 and _traveled_distance > max_distance: - destroyed.emit() - queue_free() - - -func process_livetime(delta: float) -> void: - _livetime += delta - if _livetime > max_livetime: - destroyed.emit() - queue_free() - func _apply_collision_mask() -> void: - collision_mask |= PROJECTILE_BORDER_LAYER - if collide_player: collision_layer |= ENEMY_PROJECTILE_LAYER collision_mask |= PLAYER_LAYER @@ -91,4 +53,7 @@ func _apply_collision_mask() -> void: else: collision_layer &= ~PLAYER_PROJECTILE_LAYER collision_mask &= ~ENEMY_LAYER - + + +func _on_screen_exited() -> void: + queue_free() diff --git a/game/entities/weapons/abstract_projectile.tscn b/game/entities/weapons/abstract_projectile.tscn new file mode 100644 index 0000000..1b39b46 --- /dev/null +++ b/game/entities/weapons/abstract_projectile.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://ybkqaynvpcjm"] + +[ext_resource type="Script" uid="uid://ctmjb3nkxrepu" path="res://game/entities/weapons/abstract_projectile.gd" id="1_4b2nh"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_4b2nh"] + +[node name="AbstrastProjectile" type="Area2D"] +script = ExtResource("1_4b2nh") + +[node name="Sprite2D" type="Sprite2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_4b2nh") + +[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] + +[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_screen_exited"] diff --git a/game/entities/weapons/abstract_weapon.gd b/game/entities/weapons/abstract_weapon.gd index 830e018..c10f0c2 100644 --- a/game/entities/weapons/abstract_weapon.gd +++ b/game/entities/weapons/abstract_weapon.gd @@ -5,14 +5,16 @@ extends Node2D enum Belonging { PLAYER, ENEMY } -@export var belonging: Belonging +@export_range(1, 100) var bullet_per_shot : int = 1 +@export_range(0, 360) var sector_angle : int -@export var bullet_per_shot : int = 1 -@export var sector_angle : int = 0 @export var Projectile : PackedScene @export var reloaders : Array[AbstractReloader] +var belonging: Belonging + + var _reloaders : Array[AbstractReloader] @@ -26,28 +28,31 @@ func _physics_process(delta: float) -> void: reloader.process(delta) -func shoot() -> void: +func shoot(ship_velocity: Vector2) -> void: if not _can_shoot(): return for i in range(bullet_per_shot): - var projectile := _create_projectile() + var projectile := _create_projectile(ship_velocity) get_tree().current_scene.add_child(projectile) for reloader in _reloaders: reloader.shoot() -func _create_projectile() -> Node: - var projectile := Projectile.instantiate() +func _create_projectile(ship_velocity: Vector2) -> Node: + var projectile : AbstractProjectile = Projectile.instantiate() projectile.global_position = global_position + projectile.ship_velocity = ship_velocity match belonging: Belonging.PLAYER: projectile.direction = Vector2.RIGHT projectile.collide_enemies = true + projectile.rotation_degrees = 90 Belonging.ENEMY: projectile.direction = Vector2.LEFT projectile.collide_player = true + projectile.rotation_degrees = -90 if sector_angle > 0: var sector_rad := deg_to_rad(sector_angle) diff --git a/game/entities/weapons/abstract_weapon.tscn b/game/entities/weapons/abstract_weapon.tscn index 1cec0c7..b186ff9 100644 --- a/game/entities/weapons/abstract_weapon.tscn +++ b/game/entities/weapons/abstract_weapon.tscn @@ -1,23 +1,12 @@ -[gd_scene load_steps=8 format=3 uid="uid://1o2ta17yc5bp"] +[gd_scene load_steps=3 format=3 uid="uid://1o2ta17yc5bp"] [ext_resource type="Script" uid="uid://dpqxs8hlql2o0" path="res://game/entities/weapons/abstract_weapon.gd" id="1_x30ps"] -[ext_resource type="PackedScene" uid="uid://cnoiv8hdgossf" path="res://game/entities/weapons/gatling/gatling_projectile.tscn" id="2_7kmqt"] -[ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_x30ps"] -[ext_resource type="Script" uid="uid://d2gfhnlbqxsoq" path="res://game/reloaders/magazine_reloader.gd" id="4_7kmqt"] -[ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="5_jj42u"] -[sub_resource type="Resource" id="Resource_xi513"] -script = ExtResource("4_7kmqt") -magazine_size = 5 -reload_time = 2 -metadata/_custom_type_script = "uid://d2gfhnlbqxsoq" +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_dra6h"] +size = Vector2(10, 7) -[sub_resource type="Resource" id="Resource_kq1js"] -script = ExtResource("5_jj42u") -firerate = 120 -metadata/_custom_type_script = "uid://b255rb32vc6co" - -[node name="Weapon" type="Node2D"] +[node name="AbstractWeapon" type="Node2D"] script = ExtResource("1_x30ps") -Projectile = ExtResource("2_7kmqt") -reloaders = Array[ExtResource("3_x30ps")]([SubResource("Resource_xi513"), SubResource("Resource_kq1js")]) + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = SubResource("PlaceholderTexture2D_dra6h") diff --git a/game/entities/weapons/cannon/cannon.gd b/game/entities/weapons/cannon/cannon.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/cannon/cannon.gd +++ b/game/entities/weapons/cannon/cannon.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/cannon/cannon.tscn b/game/entities/weapons/cannon/cannon.tscn index 720a795..187029d 100644 --- a/game/entities/weapons/cannon/cannon.tscn +++ b/game/entities/weapons/cannon/cannon.tscn @@ -1,20 +1,18 @@ -[gd_scene load_steps=6 format=3 uid="uid://3isnru3m6f84"] +[gd_scene load_steps=7 format=3 uid="uid://bccaoirwdkp7n"] -[ext_resource type="Script" uid="uid://db24dm76b1am7" path="res://game/entities/weapons/cannon/cannon.gd" id="1_xnbws"] -[ext_resource type="PackedScene" uid="uid://c6b8qbeaqpni8" path="res://game/entities/weapons/cannon/cannon_projectile.tscn" id="2_2bjeu"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_xnbws"] +[ext_resource type="PackedScene" uid="uid://cgi7wd84kjnyw" path="res://game/entities/weapons/cannon/cannon_projectile.tscn" id="2_2bjeu"] +[ext_resource type="Script" uid="uid://db24dm76b1am7" path="res://game/entities/weapons/cannon/cannon.gd" id="2_ew5um"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_7e2aj"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_bv8g1"] -[sub_resource type="Resource" id="Resource_xyug2"] +[sub_resource type="Resource" id="Resource_7e2aj"] script = ExtResource("4_bv8g1") firerate = 50 metadata/_custom_type_script = "uid://b255rb32vc6co" -[node name="Cannon" type="Node2D"] -script = ExtResource("1_xnbws") +[node name="Cannon" instance=ExtResource("1_xnbws")] +script = ExtResource("2_ew5um") sector_angle = 1 Projectile = ExtResource("2_2bjeu") -reloaders = Array[ExtResource("3_7e2aj")]([SubResource("Resource_xyug2")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_7e2aj")]([SubResource("Resource_7e2aj")]) diff --git a/game/entities/weapons/cannon/cannon_projectile.tscn b/game/entities/weapons/cannon/cannon_projectile.tscn index f6e11ea..09d324b 100644 --- a/game/entities/weapons/cannon/cannon_projectile.tscn +++ b/game/entities/weapons/cannon/cannon_projectile.tscn @@ -1,21 +1,21 @@ -[gd_scene load_steps=4 format=3 uid="uid://c6b8qbeaqpni8"] +[gd_scene load_steps=5 format=3 uid="uid://cgi7wd84kjnyw"] -[ext_resource type="Script" uid="uid://dfdh0o88as054" path="res://game/entities/weapons/cannon/cannon_projectile.gd" id="1_20qwt"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_20qwt"] +[ext_resource type="Script" uid="uid://dfdh0o88as054" path="res://game/entities/weapons/cannon/cannon_projectile.gd" id="2_x3axw"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_20qwt"] +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_x3axw"] size = Vector2(6, 6) -[sub_resource type="CircleShape2D" id="CircleShape2D_20qwt"] +[sub_resource type="CircleShape2D" id="CircleShape2D_lb11p"] radius = 2.0 -[node name="CannonProjectile" type="CharacterBody2D"] -script = ExtResource("1_20qwt") +[node name="CannonProjectile" instance=ExtResource("1_20qwt")] +script = ExtResource("2_x3axw") damage = 50 speed = 600 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = SubResource("PlaceholderTexture2D_20qwt") +[node name="Sprite2D" parent="." index="0"] +texture = SubResource("PlaceholderTexture2D_x3axw") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_20qwt") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CircleShape2D_lb11p") diff --git a/game/entities/weapons/gatling/gatling.gd b/game/entities/weapons/gatling/gatling.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/gatling/gatling.gd +++ b/game/entities/weapons/gatling/gatling.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/gatling/gatling.tscn b/game/entities/weapons/gatling/gatling.tscn index bd73f55..e130b4d 100644 --- a/game/entities/weapons/gatling/gatling.tscn +++ b/game/entities/weapons/gatling/gatling.tscn @@ -1,28 +1,26 @@ -[gd_scene load_steps=8 format=3 uid="uid://c4vvw741175tj"] +[gd_scene load_steps=9 format=3 uid="uid://c4mlppn5i55bp"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_gblx7"] [ext_resource type="Script" uid="uid://c1bsvmj7xhnxe" path="res://game/entities/weapons/gatling/gatling.gd" id="1_kg6du"] -[ext_resource type="PackedScene" uid="uid://cnoiv8hdgossf" path="res://game/entities/weapons/gatling/gatling_projectile.tscn" id="2_ylc0n"] +[ext_resource type="PackedScene" uid="uid://yfvluap3uy1r" path="res://game/entities/weapons/gatling/gatling_projectile.tscn" id="2_ylc0n"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_uucc4"] [ext_resource type="Script" uid="uid://oslebeau3f4b" path="res://game/reloaders/gatling_reloader.gd" id="4_g81jq"] [ext_resource type="Script" uid="uid://d2gfhnlbqxsoq" path="res://game/reloaders/magazine_reloader.gd" id="5_tjfs0"] -[sub_resource type="Resource" id="Resource_kifyy"] +[sub_resource type="Resource" id="Resource_kg6du"] script = ExtResource("4_g81jq") firerate = 600 spin_out_time = 3 metadata/_custom_type_script = "uid://oslebeau3f4b" -[sub_resource type="Resource" id="Resource_6px3v"] +[sub_resource type="Resource" id="Resource_ylc0n"] script = ExtResource("5_tjfs0") -magazine_size = 300 +magazine_size = 150 reload_time = 2 metadata/_custom_type_script = "uid://d2gfhnlbqxsoq" -[node name="GatlingGun" type="Node2D"] +[node name="Gatling" instance=ExtResource("1_gblx7")] script = ExtResource("1_kg6du") sector_angle = 5 Projectile = ExtResource("2_ylc0n") -reloaders = Array[ExtResource("3_uucc4")]([SubResource("Resource_kifyy"), SubResource("Resource_6px3v")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_uucc4")]([SubResource("Resource_kg6du"), SubResource("Resource_ylc0n")]) diff --git a/game/entities/weapons/gatling/gatling_projectile.tscn b/game/entities/weapons/gatling/gatling_projectile.tscn index 389681b..9745d9d 100644 --- a/game/entities/weapons/gatling/gatling_projectile.tscn +++ b/game/entities/weapons/gatling/gatling_projectile.tscn @@ -1,24 +1,21 @@ -[gd_scene load_steps=4 format=3 uid="uid://cnoiv8hdgossf"] +[gd_scene load_steps=5 format=3 uid="uid://yfvluap3uy1r"] -[ext_resource type="Script" uid="uid://rtsf1n0djorp" path="res://game/entities/weapons/gatling/gatling_projectile.gd" id="1_xq7oi"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_3tgt7"] +[ext_resource type="Script" uid="uid://rtsf1n0djorp" path="res://game/entities/weapons/gatling/gatling_projectile.gd" id="2_hbgoq"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_xq7oi"] +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_hbgoq"] size = Vector2(4, 4) -[sub_resource type="CircleShape2D" id="CircleShape2D_xq7oi"] +[sub_resource type="CircleShape2D" id="CircleShape2D_2tbeq"] radius = 1.0 -[node name="GatlingProjectile" type="CharacterBody2D"] -collision_layer = 0 -collision_mask = 0 -motion_mode = 1 -script = ExtResource("1_xq7oi") +[node name="GatlingProjectile" instance=ExtResource("1_3tgt7")] +script = ExtResource("2_hbgoq") damage = 6 speed = 600 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = SubResource("PlaceholderTexture2D_xq7oi") +[node name="Sprite2D" parent="." index="0"] +texture = SubResource("PlaceholderTexture2D_hbgoq") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_xq7oi") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CircleShape2D_2tbeq") diff --git a/game/entities/weapons/laser/laser.gd b/game/entities/weapons/laser/laser.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/laser/laser.gd +++ b/game/entities/weapons/laser/laser.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/laser/laser.tscn b/game/entities/weapons/laser/laser.tscn index 56f41b1..45b40c7 100644 --- a/game/entities/weapons/laser/laser.tscn +++ b/game/entities/weapons/laser/laser.tscn @@ -1,27 +1,26 @@ -[gd_scene load_steps=8 format=3 uid="uid://c67jhwocoevkv"] +[gd_scene load_steps=9 format=3 uid="uid://def1alrel4ioo"] -[ext_resource type="Script" uid="uid://bxr150at8ul2a" path="res://game/entities/weapons/laser/laser.gd" id="1_pki4x"] -[ext_resource type="PackedScene" uid="uid://d31js2vi7dlit" path="res://game/entities/weapons/laser/laser_projectile.tscn" id="2_fecho"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_pki4x"] +[ext_resource type="PackedScene" uid="uid://cmni0xrbbfcy5" path="res://game/entities/weapons/laser/laser_projectile.tscn" id="2_fecho"] +[ext_resource type="Script" uid="uid://bxr150at8ul2a" path="res://game/entities/weapons/laser/laser.gd" id="2_lbdvb"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_c1wcw"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_cl0br"] [ext_resource type="Script" uid="uid://dxk56xdihfw4m" path="res://game/reloaders/energy_reloader.gd" id="5_l3tgo"] -[sub_resource type="Resource" id="Resource_77vow"] +[sub_resource type="Resource" id="Resource_fecho"] script = ExtResource("4_cl0br") -firerate = 3000 +firerate = 1500 metadata/_custom_type_script = "uid://b255rb32vc6co" -[sub_resource type="Resource" id="Resource_nwpae"] +[sub_resource type="Resource" id="Resource_c1wcw"] script = ExtResource("5_l3tgo") -heat_per_shot = 2 +heat_per_shot = 4 heat_capacity = 1000 cooling_down_rate = 2500 metadata/_custom_type_script = "uid://dxk56xdihfw4m" -[node name="Laser" type="Node2D"] -script = ExtResource("1_pki4x") +[node name="Laser" instance=ExtResource("1_pki4x")] +script = ExtResource("2_lbdvb") +bullet_per_shot = 2 Projectile = ExtResource("2_fecho") -reloaders = Array[ExtResource("3_c1wcw")]([SubResource("Resource_77vow"), SubResource("Resource_nwpae")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_c1wcw")]([SubResource("Resource_fecho"), SubResource("Resource_c1wcw")]) diff --git a/game/entities/weapons/laser/laser_projectile.tscn b/game/entities/weapons/laser/laser_projectile.tscn index 40e82a2..f771d74 100644 --- a/game/entities/weapons/laser/laser_projectile.tscn +++ b/game/entities/weapons/laser/laser_projectile.tscn @@ -1,22 +1,21 @@ -[gd_scene load_steps=4 format=3 uid="uid://d31js2vi7dlit"] +[gd_scene load_steps=5 format=3 uid="uid://cmni0xrbbfcy5"] -[ext_resource type="Script" uid="uid://bdxq4aflhc8vd" path="res://game/entities/weapons/laser/laser_projectile.gd" id="1_3a8fg"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_3a8fg"] +[ext_resource type="Script" uid="uid://bdxq4aflhc8vd" path="res://game/entities/weapons/laser/laser_projectile.gd" id="2_je1a2"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_3a8fg"] +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_je1a2"] size = Vector2(4, 4) -[sub_resource type="CircleShape2D" id="CircleShape2D_3a8fg"] +[sub_resource type="CircleShape2D" id="CircleShape2D_ylokk"] radius = 1.0 -[node name="LaserProjectile" type="CharacterBody2D"] -motion_mode = 1 -script = ExtResource("1_3a8fg") +[node name="LaserProjectile" instance=ExtResource("1_3a8fg")] +script = ExtResource("2_je1a2") damage = 1 -speed = 240 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" +speed = 500 -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = SubResource("PlaceholderTexture2D_3a8fg") +[node name="Sprite2D" parent="." index="0"] +texture = SubResource("PlaceholderTexture2D_je1a2") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_3a8fg") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CircleShape2D_ylokk") diff --git a/game/entities/weapons/launcher/launcher.gd b/game/entities/weapons/launcher/launcher.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/launcher/launcher.gd +++ b/game/entities/weapons/launcher/launcher.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/launcher/launcher.tscn b/game/entities/weapons/launcher/launcher.tscn index 4b6e1a9..e85304e 100644 --- a/game/entities/weapons/launcher/launcher.tscn +++ b/game/entities/weapons/launcher/launcher.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=6 format=3 uid="uid://da5hpi3py7hhx"] +[gd_scene load_steps=7 format=3 uid="uid://c3l866fdqt7pf"] -[ext_resource type="Script" uid="uid://lauvvj5xhbud" path="res://game/entities/weapons/launcher/launcher.gd" id="1_sk5u1"] -[ext_resource type="PackedScene" uid="uid://du60nb1ni0bco" path="res://game/entities/weapons/launcher/launcher_projectile.tscn" id="2_q88o8"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_sk5u1"] +[ext_resource type="Script" uid="uid://lauvvj5xhbud" path="res://game/entities/weapons/launcher/launcher.gd" id="2_mxjpe"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_1rkeb"] +[ext_resource type="PackedScene" uid="uid://dukgbg13ujkv2" path="res://game/entities/weapons/launcher/launcher_projectile.tscn" id="3_fsoo2"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_fsoo2"] [sub_resource type="Resource" id="Resource_8arbu"] @@ -10,11 +11,8 @@ script = ExtResource("4_fsoo2") firerate = 120 metadata/_custom_type_script = "uid://b255rb32vc6co" -[node name="Launcher" type="Node2D"] -script = ExtResource("1_sk5u1") +[node name="Launcher" instance=ExtResource("1_sk5u1")] +script = ExtResource("2_mxjpe") sector_angle = 5 -Projectile = ExtResource("2_q88o8") +Projectile = ExtResource("3_fsoo2") reloaders = Array[ExtResource("3_1rkeb")]([SubResource("Resource_8arbu")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/game/entities/weapons/launcher/launcher_projectile.tscn b/game/entities/weapons/launcher/launcher_projectile.tscn index bf0ede2..0f29428 100644 --- a/game/entities/weapons/launcher/launcher_projectile.tscn +++ b/game/entities/weapons/launcher/launcher_projectile.tscn @@ -1,24 +1,22 @@ -[gd_scene load_steps=4 format=3 uid="uid://du60nb1ni0bco"] +[gd_scene load_steps=5 format=3 uid="uid://dukgbg13ujkv2"] -[ext_resource type="Script" uid="uid://dkvur5bdwg3sr" path="res://game/entities/weapons/launcher/launcher_projectile.gd" id="1_0mcat"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_0mcat"] +[ext_resource type="Script" uid="uid://dkvur5bdwg3sr" path="res://game/entities/weapons/launcher/launcher_projectile.gd" id="2_6hdsf"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_0mcat"] -size = Vector2(8, 4) +size = Vector2(4, 8) -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_0mcat"] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_6hdsf"] radius = 1.0 height = 6.0 -[node name="LauncherProjectile" type="CharacterBody2D"] -motion_mode = 1 -script = ExtResource("1_0mcat") +[node name="LauncherProjectile" instance=ExtResource("1_0mcat")] +script = ExtResource("2_6hdsf") damage = 24 speed = 300 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Sprite2D" parent="." index="0"] texture = SubResource("PlaceholderTexture2D_0mcat") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -rotation = 1.5707964 -shape = SubResource("CapsuleShape2D_0mcat") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CapsuleShape2D_6hdsf") diff --git a/game/entities/weapons/minelayer/minelayer.gd b/game/entities/weapons/minelayer/minelayer.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/minelayer/minelayer.gd +++ b/game/entities/weapons/minelayer/minelayer.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/minelayer/minelayer.tscn b/game/entities/weapons/minelayer/minelayer.tscn index 47607aa..f147eed 100644 --- a/game/entities/weapons/minelayer/minelayer.tscn +++ b/game/entities/weapons/minelayer/minelayer.tscn @@ -1,20 +1,18 @@ -[gd_scene load_steps=6 format=3 uid="uid://beddohbuop7d0"] +[gd_scene load_steps=7 format=3 uid="uid://j3yht6q4ru4e"] -[ext_resource type="Script" uid="uid://c3ckkpjaef5jn" path="res://game/entities/weapons/minelayer/minelayer.gd" id="1_12l3k"] -[ext_resource type="PackedScene" uid="uid://dh46vqucky3bo" path="res://game/entities/weapons/minelayer/minelayer_projectile.tscn" id="2_7y446"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_12l3k"] +[ext_resource type="PackedScene" uid="uid://4mkklqt1g14f" path="res://game/entities/weapons/minelayer/minelayer_projectile.tscn" id="2_7y446"] +[ext_resource type="Script" uid="uid://c3ckkpjaef5jn" path="res://game/entities/weapons/minelayer/minelayer.gd" id="2_mmhtn"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_uotj8"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_fbmxv"] -[sub_resource type="Resource" id="Resource_vl21o"] +[sub_resource type="Resource" id="Resource_uotj8"] script = ExtResource("4_fbmxv") firerate = 40 metadata/_custom_type_script = "uid://b255rb32vc6co" -[node name="Minelayer" type="Node2D"] -script = ExtResource("1_12l3k") +[node name="Minelayer" instance=ExtResource("1_12l3k")] +script = ExtResource("2_mmhtn") sector_angle = 10 Projectile = ExtResource("2_7y446") -reloaders = Array[ExtResource("3_uotj8")]([SubResource("Resource_vl21o")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_uotj8")]([SubResource("Resource_uotj8")]) diff --git a/game/entities/weapons/minelayer/minelayer_projectile.gd b/game/entities/weapons/minelayer/minelayer_projectile.gd index f4d8c80..3863731 100644 --- a/game/entities/weapons/minelayer/minelayer_projectile.gd +++ b/game/entities/weapons/minelayer/minelayer_projectile.gd @@ -1 +1,29 @@ extends AbstractProjectile + + +@export var deceleration : int +@export var livetime : int + + +func _ready() -> void: + super._ready() + + var livetime_timer := Timer.new() + add_child(livetime_timer) + livetime_timer.wait_time = livetime + livetime_timer.one_shot = true + livetime_timer.timeout.connect(queue_free) + livetime_timer.start() + + +func _physics_process(delta: float) -> void: + _process_acceleration(delta) + super._physics_process(delta) + + +func _process_acceleration(delta: float) -> void: + var current_deceleration := deceleration * delta + if _velocity.length() > current_deceleration: + _velocity -= _velocity.normalized() * current_deceleration + else: + _velocity = Vector2.ZERO diff --git a/game/entities/weapons/minelayer/minelayer_projectile.tscn b/game/entities/weapons/minelayer/minelayer_projectile.tscn index 3c0de0f..af21262 100644 --- a/game/entities/weapons/minelayer/minelayer_projectile.tscn +++ b/game/entities/weapons/minelayer/minelayer_projectile.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=4 format=3 uid="uid://dh46vqucky3bo"] +[gd_scene load_steps=5 format=3 uid="uid://4mkklqt1g14f"] -[ext_resource type="Script" uid="uid://76swcukelnii" path="res://game/entities/weapons/minelayer/minelayer_projectile.gd" id="1_ufc4r"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_ufc4r"] +[ext_resource type="Script" uid="uid://76swcukelnii" path="res://game/entities/weapons/minelayer/minelayer_projectile.gd" id="2_hwwfa"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_ufc4r"] size = Vector2(16, 16) @@ -8,17 +9,15 @@ size = Vector2(16, 16) [sub_resource type="CircleShape2D" id="CircleShape2D_ufc4r"] radius = 7.0 -[node name="MinelayerProjectile" type="CharacterBody2D"] -motion_mode = 1 -script = ExtResource("1_ufc4r") +[node name="MinelayerProjectile" instance=ExtResource("1_ufc4r")] +script = ExtResource("2_hwwfa") +deceleration = 100 +livetime = 60 damage = 100 speed = 200 -acceleration = -10 -max_livetime = 60 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Sprite2D" parent="." index="0"] texture = SubResource("PlaceholderTexture2D_ufc4r") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +[node name="CollisionShape2D" parent="." index="1"] shape = SubResource("CircleShape2D_ufc4r") diff --git a/game/entities/weapons/plasma/plasma.gd b/game/entities/weapons/plasma/plasma.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/plasma/plasma.gd +++ b/game/entities/weapons/plasma/plasma.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/plasma/plasma.tscn b/game/entities/weapons/plasma/plasma.tscn index 6f42770..3e730b4 100644 --- a/game/entities/weapons/plasma/plasma.tscn +++ b/game/entities/weapons/plasma/plasma.tscn @@ -1,28 +1,26 @@ -[gd_scene load_steps=8 format=3 uid="uid://mhar8dm1ni73"] +[gd_scene load_steps=9 format=3 uid="uid://cj1jclfterepm"] -[ext_resource type="Script" uid="uid://cu6ck2oqqdem8" path="res://game/entities/weapons/plasma/plasma.gd" id="1_pkk8e"] -[ext_resource type="PackedScene" uid="uid://b2sd3ur65gpwh" path="res://game/entities/weapons/plasma/plasma_projectile.tscn" id="2_yluvp"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_pkk8e"] +[ext_resource type="Script" uid="uid://cu6ck2oqqdem8" path="res://game/entities/weapons/plasma/plasma.gd" id="2_fnsb7"] +[ext_resource type="PackedScene" uid="uid://cgvb0hjrl5h4s" path="res://game/entities/weapons/plasma/plasma_projectile.tscn" id="2_yluvp"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_fnsb7"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_gpth1"] [ext_resource type="Script" uid="uid://dxk56xdihfw4m" path="res://game/reloaders/energy_reloader.gd" id="5_daaq0"] -[sub_resource type="Resource" id="Resource_d5x03"] +[sub_resource type="Resource" id="Resource_yluvp"] script = ExtResource("4_gpth1") firerate = 150 metadata/_custom_type_script = "uid://b255rb32vc6co" -[sub_resource type="Resource" id="Resource_028m2"] +[sub_resource type="Resource" id="Resource_fnsb7"] script = ExtResource("5_daaq0") heat_per_shot = 35 heat_capacity = 1000 cooling_down_rate = 1000 metadata/_custom_type_script = "uid://dxk56xdihfw4m" -[node name="Plasma" type="Node2D"] -script = ExtResource("1_pkk8e") +[node name="Plasma" instance=ExtResource("1_pkk8e")] +script = ExtResource("2_fnsb7") sector_angle = 2 Projectile = ExtResource("2_yluvp") -reloaders = Array[ExtResource("3_fnsb7")]([SubResource("Resource_d5x03"), SubResource("Resource_028m2")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_fnsb7")]([SubResource("Resource_yluvp"), SubResource("Resource_fnsb7")]) diff --git a/game/entities/weapons/plasma/plasma_projectile.tscn b/game/entities/weapons/plasma/plasma_projectile.tscn index 82eef84..6e27fb3 100644 --- a/game/entities/weapons/plasma/plasma_projectile.tscn +++ b/game/entities/weapons/plasma/plasma_projectile.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=4 format=3 uid="uid://b2sd3ur65gpwh"] +[gd_scene load_steps=5 format=3 uid="uid://cgvb0hjrl5h4s"] -[ext_resource type="Script" uid="uid://bu5sjoh4hwkhn" path="res://game/entities/weapons/plasma/plasma_projectile.gd" id="1_x58hw"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_x58hw"] +[ext_resource type="Script" uid="uid://bu5sjoh4hwkhn" path="res://game/entities/weapons/plasma/plasma_projectile.gd" id="2_0deih"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_x58hw"] size = Vector2(6, 6) @@ -8,15 +9,13 @@ size = Vector2(6, 6) [sub_resource type="CircleShape2D" id="CircleShape2D_x58hw"] radius = 2.0 -[node name="PlasmaProjectile" type="CharacterBody2D"] -motion_mode = 1 -script = ExtResource("1_x58hw") +[node name="PlasmaProjectile" instance=ExtResource("1_x58hw")] +script = ExtResource("2_0deih") damage = 20 speed = 450 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Sprite2D" parent="." index="0"] texture = SubResource("PlaceholderTexture2D_x58hw") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +[node name="CollisionShape2D" parent="." index="1"] shape = SubResource("CircleShape2D_x58hw") diff --git a/game/entities/weapons/railgun/railgun.gd b/game/entities/weapons/railgun/railgun.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/railgun/railgun.gd +++ b/game/entities/weapons/railgun/railgun.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/railgun/railgun.tscn b/game/entities/weapons/railgun/railgun.tscn index b14a16a..0fcb0f5 100644 --- a/game/entities/weapons/railgun/railgun.tscn +++ b/game/entities/weapons/railgun/railgun.tscn @@ -1,26 +1,24 @@ -[gd_scene load_steps=8 format=3 uid="uid://4ikdkhxoiwox"] +[gd_scene load_steps=9 format=3 uid="uid://do6h77gmnreho"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_0nxvu"] [ext_resource type="Script" uid="uid://drnofu4ium56e" path="res://game/entities/weapons/railgun/railgun.gd" id="1_5nhwg"] -[ext_resource type="PackedScene" uid="uid://dpd6qm3e3wbjx" path="res://game/entities/weapons/railgun/railgun_projectile.tscn" id="2_cbsia"] +[ext_resource type="PackedScene" uid="uid://bab3bopsw74cb" path="res://game/entities/weapons/railgun/railgun_projectile.tscn" id="2_cbsia"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_qxka8"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_igknv"] [ext_resource type="Script" uid="uid://d2gfhnlbqxsoq" path="res://game/reloaders/magazine_reloader.gd" id="5_buejq"] -[sub_resource type="Resource" id="Resource_6wi8i"] +[sub_resource type="Resource" id="Resource_5nhwg"] script = ExtResource("4_igknv") firerate = 60 metadata/_custom_type_script = "uid://b255rb32vc6co" -[sub_resource type="Resource" id="Resource_2gq2l"] +[sub_resource type="Resource" id="Resource_cbsia"] script = ExtResource("5_buejq") magazine_size = 30 reload_time = 7 metadata/_custom_type_script = "uid://d2gfhnlbqxsoq" -[node name="Railgun" type="Node2D"] +[node name="Railgun" instance=ExtResource("1_0nxvu")] script = ExtResource("1_5nhwg") Projectile = ExtResource("2_cbsia") -reloaders = Array[ExtResource("3_qxka8")]([SubResource("Resource_6wi8i"), SubResource("Resource_2gq2l")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_qxka8")]([SubResource("Resource_5nhwg"), SubResource("Resource_cbsia")]) diff --git a/game/entities/weapons/railgun/railgun_projectile.tscn b/game/entities/weapons/railgun/railgun_projectile.tscn index 9932239..921311b 100644 --- a/game/entities/weapons/railgun/railgun_projectile.tscn +++ b/game/entities/weapons/railgun/railgun_projectile.tscn @@ -1,25 +1,22 @@ -[gd_scene load_steps=4 format=3 uid="uid://dpd6qm3e3wbjx"] +[gd_scene load_steps=5 format=3 uid="uid://bab3bopsw74cb"] [ext_resource type="Script" uid="uid://n3h1e3pj02g0" path="res://game/entities/weapons/railgun/railgun_projectile.gd" id="1_hycpq"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_rfd1j"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_rfd1j"] +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_an7sy"] size = Vector2(6, 6) -[sub_resource type="CircleShape2D" id="CircleShape2D_hycpq"] +[sub_resource type="CircleShape2D" id="CircleShape2D_rfd1j"] radius = 2.0 -[node name="RailgunProjectile" type="CharacterBody2D"] -collision_layer = 0 -collision_mask = 0 -motion_mode = 1 +[node name="RailgunProjectile" instance=ExtResource("1_rfd1j")] script = ExtResource("1_hycpq") damage = 45 speed = 900 piercing = 1 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = SubResource("PlaceholderTexture2D_rfd1j") +[node name="Sprite2D" parent="." index="0"] +texture = SubResource("PlaceholderTexture2D_an7sy") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_hycpq") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CircleShape2D_rfd1j") diff --git a/game/entities/weapons/shrapnel/shrapnel.gd b/game/entities/weapons/shrapnel/shrapnel.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/shrapnel/shrapnel.gd +++ b/game/entities/weapons/shrapnel/shrapnel.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/shrapnel/shrapnel.tscn b/game/entities/weapons/shrapnel/shrapnel.tscn index 179af65..a1c4e23 100644 --- a/game/entities/weapons/shrapnel/shrapnel.tscn +++ b/game/entities/weapons/shrapnel/shrapnel.tscn @@ -1,28 +1,26 @@ -[gd_scene load_steps=8 format=3 uid="uid://cy7g35uoq3ts"] +[gd_scene load_steps=9 format=3 uid="uid://r7wnk762jbfy"] -[ext_resource type="Script" uid="uid://gxwbsiicuqh5" path="res://game/entities/weapons/shrapnel/shrapnel.gd" id="1_xk300"] -[ext_resource type="PackedScene" uid="uid://7pe0un48uedn" path="res://game/entities/weapons/shrapnel/shrapnel_projectile.tscn" id="2_xvd4y"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_xk300"] +[ext_resource type="Script" uid="uid://gxwbsiicuqh5" path="res://game/entities/weapons/shrapnel/shrapnel.gd" id="2_1bd18"] +[ext_resource type="PackedScene" uid="uid://bsx23u3a2obbj" path="res://game/entities/weapons/shrapnel/shrapnel_projectile.tscn" id="2_xvd4y"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_tyrw7"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_nfmol"] [ext_resource type="Script" uid="uid://d2gfhnlbqxsoq" path="res://game/reloaders/magazine_reloader.gd" id="5_mw83u"] -[sub_resource type="Resource" id="Resource_8lwl1"] +[sub_resource type="Resource" id="Resource_tyrw7"] script = ExtResource("4_nfmol") firerate = 100 metadata/_custom_type_script = "uid://b255rb32vc6co" -[sub_resource type="Resource" id="Resource_xcpx0"] +[sub_resource type="Resource" id="Resource_nfmol"] script = ExtResource("5_mw83u") magazine_size = 35 reload_time = 5 metadata/_custom_type_script = "uid://d2gfhnlbqxsoq" -[node name="Shrapnel" type="Node2D"] -script = ExtResource("1_xk300") +[node name="Shrapnel" instance=ExtResource("1_xk300")] +script = ExtResource("2_1bd18") bullet_per_shot = 20 sector_angle = 30 Projectile = ExtResource("2_xvd4y") -reloaders = Array[ExtResource("3_tyrw7")]([SubResource("Resource_8lwl1"), SubResource("Resource_xcpx0")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_tyrw7")]([SubResource("Resource_tyrw7"), SubResource("Resource_nfmol")]) diff --git a/game/entities/weapons/shrapnel/shrapnel_projectile.gd b/game/entities/weapons/shrapnel/shrapnel_projectile.gd index f4d8c80..8499277 100644 --- a/game/entities/weapons/shrapnel/shrapnel_projectile.gd +++ b/game/entities/weapons/shrapnel/shrapnel_projectile.gd @@ -1 +1,18 @@ extends AbstractProjectile + + +@export var max_distance : int + + +var _traveled_distance: float + + +func _physics_process(delta: float) -> void: + super._physics_process(delta) + _process_distance(delta) + + +func _process_distance(delta: float) -> void: + _traveled_distance += _velocity.length() * delta + if max_distance > 0 and _traveled_distance > max_distance: + queue_free() diff --git a/game/entities/weapons/shrapnel/shrapnel_projectile.tscn b/game/entities/weapons/shrapnel/shrapnel_projectile.tscn index c41bee3..519affc 100644 --- a/game/entities/weapons/shrapnel/shrapnel_projectile.tscn +++ b/game/entities/weapons/shrapnel/shrapnel_projectile.tscn @@ -1,23 +1,22 @@ -[gd_scene load_steps=4 format=3 uid="uid://7pe0un48uedn"] +[gd_scene load_steps=5 format=3 uid="uid://bsx23u3a2obbj"] -[ext_resource type="Script" uid="uid://ctnje7pjanaws" path="res://game/entities/weapons/shrapnel/shrapnel_projectile.gd" id="1_yu2c6"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_yu2c6"] +[ext_resource type="Script" uid="uid://ctnje7pjanaws" path="res://game/entities/weapons/shrapnel/shrapnel_projectile.gd" id="2_2jiy6"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_yu2c6"] +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2jiy6"] size = Vector2(4, 4) -[sub_resource type="CircleShape2D" id="CircleShape2D_yu2c6"] +[sub_resource type="CircleShape2D" id="CircleShape2D_2jiy6"] radius = 1.0 -[node name="ShrapnelProjectile" type="CharacterBody2D"] -motion_mode = 1 -script = ExtResource("1_yu2c6") +[node name="ShrapnelProjectile" instance=ExtResource("1_yu2c6")] +script = ExtResource("2_2jiy6") +max_distance = 350 damage = 2 speed = 500 -max_distance = 120 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = SubResource("PlaceholderTexture2D_yu2c6") +[node name="Sprite2D" parent="." index="0"] +texture = SubResource("PlaceholderTexture2D_2jiy6") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_yu2c6") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CircleShape2D_2jiy6") diff --git a/game/entities/weapons/tesla/tesla.gd b/game/entities/weapons/tesla/tesla.gd index a3c01cf..b209331 100644 --- a/game/entities/weapons/tesla/tesla.gd +++ b/game/entities/weapons/tesla/tesla.gd @@ -1,12 +1 @@ extends AbstractWeapon - - -@onready var sprite := $Sprite2D - - -func _ready() -> void: - var texture := PlaceholderTexture2D.new() - texture.size = Vector2(10, 7) - sprite.texture = texture - - super._ready() diff --git a/game/entities/weapons/tesla/tesla.tscn b/game/entities/weapons/tesla/tesla.tscn index bf7d189..690177a 100644 --- a/game/entities/weapons/tesla/tesla.tscn +++ b/game/entities/weapons/tesla/tesla.tscn @@ -1,28 +1,26 @@ -[gd_scene load_steps=8 format=3 uid="uid://dpwdl7kcf0sng"] +[gd_scene load_steps=9 format=3 uid="uid://dyebeblayioji"] -[ext_resource type="Script" uid="uid://ctv408wdwvttc" path="res://game/entities/weapons/tesla/tesla.gd" id="1_rpud7"] -[ext_resource type="PackedScene" uid="uid://dmvxynbo5bpyw" path="res://game/entities/weapons/tesla/tesla_projectile.tscn" id="2_1rrdy"] +[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_rpud7"] +[ext_resource type="PackedScene" uid="uid://bi64687wtxi4d" path="res://game/entities/weapons/tesla/tesla_projectile.tscn" id="2_1rrdy"] +[ext_resource type="Script" uid="uid://ctv408wdwvttc" path="res://game/entities/weapons/tesla/tesla.gd" id="2_08si3"] [ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_08si3"] [ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_rqarv"] [ext_resource type="Script" uid="uid://dxk56xdihfw4m" path="res://game/reloaders/energy_reloader.gd" id="5_j5i31"] -[sub_resource type="Resource" id="Resource_jo1m1"] +[sub_resource type="Resource" id="Resource_1rrdy"] script = ExtResource("4_rqarv") firerate = 45 metadata/_custom_type_script = "uid://b255rb32vc6co" -[sub_resource type="Resource" id="Resource_7s0el"] +[sub_resource type="Resource" id="Resource_08si3"] script = ExtResource("5_j5i31") heat_per_shot = 150 heat_capacity = 1000 cooling_down_rate = 2500 metadata/_custom_type_script = "uid://dxk56xdihfw4m" -[node name="Tesla" type="Node2D"] -script = ExtResource("1_rpud7") +[node name="Tesla" instance=ExtResource("1_rpud7")] +script = ExtResource("2_08si3") sector_angle = 180 Projectile = ExtResource("2_1rrdy") -reloaders = Array[ExtResource("3_08si3")]([SubResource("Resource_jo1m1"), SubResource("Resource_7s0el")]) -metadata/_custom_type_script = "uid://dpqxs8hlql2o0" - -[node name="Sprite2D" type="Sprite2D" parent="."] +reloaders = Array[ExtResource("3_08si3")]([SubResource("Resource_1rrdy"), SubResource("Resource_08si3")]) diff --git a/game/entities/weapons/tesla/tesla_projectile.tscn b/game/entities/weapons/tesla/tesla_projectile.tscn index c29a6d5..510d6c0 100644 --- a/game/entities/weapons/tesla/tesla_projectile.tscn +++ b/game/entities/weapons/tesla/tesla_projectile.tscn @@ -1,22 +1,21 @@ -[gd_scene load_steps=4 format=3 uid="uid://dmvxynbo5bpyw"] +[gd_scene load_steps=5 format=3 uid="uid://bi64687wtxi4d"] -[ext_resource type="Script" uid="uid://bxcoa2eps0tt1" path="res://game/entities/weapons/tesla/tesla_projectile.gd" id="1_1oexk"] +[ext_resource type="PackedScene" uid="uid://ybkqaynvpcjm" path="res://game/entities/weapons/abstract_projectile.tscn" id="1_1oexk"] +[ext_resource type="Script" uid="uid://bxcoa2eps0tt1" path="res://game/entities/weapons/tesla/tesla_projectile.gd" id="2_q73is"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_1oexk"] size = Vector2(12, 12) -[sub_resource type="CircleShape2D" id="CircleShape2D_1oexk"] +[sub_resource type="CircleShape2D" id="CircleShape2D_q73is"] radius = 5.0 -[node name="TeslaProjectile" type="CharacterBody2D"] -motion_mode = 1 -script = ExtResource("1_1oexk") +[node name="TeslaProjectile" instance=ExtResource("1_1oexk")] +script = ExtResource("2_q73is") damage = 45 speed = 900 -metadata/_custom_type_script = "uid://ctmjb3nkxrepu" -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Sprite2D" parent="." index="0"] texture = SubResource("PlaceholderTexture2D_1oexk") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_1oexk") +[node name="CollisionShape2D" parent="." index="1"] +shape = SubResource("CircleShape2D_q73is") diff --git a/game/passage.tscn b/game/passage.tscn index 3479b5e..65523a4 100644 --- a/game/passage.tscn +++ b/game/passage.tscn @@ -32,30 +32,3 @@ position = Vector2(640, 180) rotation = -1.5707964 shape = SubResource("WorldBoundaryShape2D_ltkyg") one_way_collision = true - -[node name="ProjectileBorder" type="StaticBody2D" parent="."] -collision_layer = 32 -collision_mask = 0 - -[node name="CollisionTop" type="CollisionShape2D" parent="ProjectileBorder"] -position = Vector2(320, -50) -rotation = 3.1415927 -shape = SubResource("WorldBoundaryShape2D_ltkyg") -one_way_collision = true - -[node name="CollisionBottom" type="CollisionShape2D" parent="ProjectileBorder"] -position = Vector2(320, 410) -shape = SubResource("WorldBoundaryShape2D_ltkyg") -one_way_collision = true - -[node name="CollisionLeft" type="CollisionShape2D" parent="ProjectileBorder"] -position = Vector2(-50, 180) -rotation = 1.5707964 -shape = SubResource("WorldBoundaryShape2D_ltkyg") -one_way_collision = true - -[node name="CollisionRight" type="CollisionShape2D" parent="ProjectileBorder"] -position = Vector2(690, 180) -rotation = -1.5707964 -shape = SubResource("WorldBoundaryShape2D_ltkyg") -one_way_collision = true diff --git a/game/reloaders/energy_reloader.gd b/game/reloaders/energy_reloader.gd index 5215b36..44f959a 100644 --- a/game/reloaders/energy_reloader.gd +++ b/game/reloaders/energy_reloader.gd @@ -2,19 +2,19 @@ extends AbstractReloader class_name EnergyReloader -@export var heat_per_shot : int: +@export_range(1, 250) var heat_per_shot : int = 1: set(value): heat_per_shot = value _calculate_critical_heat() -@export var heat_capacity : int: +@export_range(1, 2500) var heat_capacity : int = 1: set(value): heat_capacity = value _calculate_critical_heat() -@export var cooling_down_rate : int: +@export_range(1, 5000) var cooling_down_rate : int = 1: set(value): cooling_down_rate = value _calculate_cool() diff --git a/game/reloaders/firerate_reloader.gd b/game/reloaders/firerate_reloader.gd index d150d51..b49083a 100644 --- a/game/reloaders/firerate_reloader.gd +++ b/game/reloaders/firerate_reloader.gd @@ -2,7 +2,7 @@ extends AbstractReloader class_name FirerateReloader -@export var firerate : int: +@export_range(1, 1500) var firerate : int = 1: set(value): firerate = value _calculate_delay() diff --git a/game/reloaders/gatling_reloader.gd b/game/reloaders/gatling_reloader.gd index 1fd39ee..0c6fc67 100644 --- a/game/reloaders/gatling_reloader.gd +++ b/game/reloaders/gatling_reloader.gd @@ -2,12 +2,12 @@ extends AbstractReloader class_name GatlingReloader -@export var firerate : int: +@export_range(1, 1500) var firerate : int = 1: set(value): firerate = value _calculate_delay() -@export var spin_out_time : int: +@export_range(1, 25) var spin_out_time : int = 1: set(value): spin_out_time = value _calculate_delay() diff --git a/game/reloaders/magazine_reloader.gd b/game/reloaders/magazine_reloader.gd index 7c7789c..13b49fd 100644 --- a/game/reloaders/magazine_reloader.gd +++ b/game/reloaders/magazine_reloader.gd @@ -2,13 +2,13 @@ extends AbstractReloader class_name MagazineReloader -@export var magazine_size : int: +@export_range(1, 500) var magazine_size : int = 1: set(value): magazine_size = value _calculate_bullets_in_magazine() -@export var reload_time : int: +@export_range(1, 60) var reload_time : int = 1: set(value): reload_time = value _calculate_reload_time_tenth() @@ -47,7 +47,6 @@ func reload() -> void: if _countdown > 0 or _bullets_in_magazine == magazine_size: return var random_delay := _random.randf_range(-_reload_time_tenth, _reload_time_tenth) _countdown = reload_time + random_delay - print("reload") func get_process_percent() -> int: