Added PlasmaWeapon textures

This commit is contained in:
2025-11-23 19:04:34 +03:00
parent a6185d7ce1
commit 3e5e2dbe0f
15 changed files with 178 additions and 121 deletions
@@ -0,0 +1,68 @@
extends Resource
class_name GatlingReloader
@export_range(1, 1500) var firerate : int = 1:
set(value):
firerate = value
_calculate_delay()
@export_range(1, 25) var spin_out_time : int = 1:
set(value):
spin_out_time = value
_calculate_delay()
const INITIAL_DELAY = 1.0
var _target_delay : float
var _current_delay : float = INITIAL_DELAY
var _delay_decrement : float
var _cooldown : float
var _last_delta : float
func _init() -> void:
resource_local_to_scene = true
func _ready() -> void:
_calculate_delay()
func process(delta: float) -> void:
if _cooldown > 0:
_cooldown -= delta
if _current_delay < INITIAL_DELAY:
_decrease_delay(_delay_decrement * -delta)
_last_delta = delta
func can_shoot() -> bool:
_decrease_delay(_delay_decrement * 2 * _last_delta)
return _cooldown <= 0
func shoot() -> void:
_cooldown = _current_delay
func reload() -> void:
pass
func get_process_percent() -> int:
return 100 - int(_cooldown * 100 / _current_delay)
func _calculate_delay() -> void:
_target_delay = 60.0 / firerate
_delay_decrement = (INITIAL_DELAY - _target_delay)/spin_out_time
func _decrease_delay(delay_decrement: float) -> void:
_current_delay = _current_delay - delay_decrement
_current_delay = clampf(_current_delay, _target_delay, INITIAL_DELAY)
@@ -0,0 +1 @@
uid://oslebeau3f4b
@@ -1 +1,17 @@
extends AbstractWeapon
@export var reloader : GatlingReloader
func _physics_process(delta: float) -> void:
reloader.process(delta)
func shoot(ship_velocity: Vector2) -> bool:
_can_shoot = reloader.can_shoot()
var is_shot := super.shoot(ship_velocity)
if is_shot:
reloader.shoot()
return is_shot
@@ -1,12 +1,11 @@
[gd_scene load_steps=8 format=3 uid="uid://c4mlppn5i55bp"]
[gd_scene load_steps=7 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_weapon.gd" id="1_kg6du"]
[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://oslebeau3f4b" path="res://game/entities/weapons/gatling/gatling_reloader.gd" id="4_g81jq"]
[sub_resource type="Resource" id="Resource_kg6du"]
[sub_resource type="Resource" id="Resource_oppha"]
script = ExtResource("4_g81jq")
firerate = 600
spin_out_time = 3
@@ -17,9 +16,9 @@ size = Vector2(10, 7)
[node name="GatlingWeapon" instance=ExtResource("1_gblx7")]
script = ExtResource("1_kg6du")
reloader = SubResource("Resource_oppha")
sector_angle = 5
Projectile = ExtResource("2_ylc0n")
reloaders = Array[ExtResource("3_uucc4")]([SubResource("Resource_kg6du")])
[node name="Sprite2D" type="Sprite2D" parent="." index="0"]
texture = SubResource("PlaceholderTexture2D_dra6h")