Shield wave

This commit is contained in:
R34nd0 2024-01-14 03:01:58 +05:00
commit 0eecd651e4
14 changed files with 341 additions and 13 deletions

View file

@ -8,16 +8,32 @@ class_name Shield
@export var laser_timer : Timer
@export var laser_charge_rate : float = 20
@export var id : String = "startershield"
@onready var ship = get_parent()
@onready var capacity : float = max_capacity
var can_recharge : bool = false
var laser_recharge : bool = true
var wave_distances = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]
var wave_positions = [Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO,Vector2.ZERO]
func _ready():
recharge_timer.timeout.connect(recharging_timer_out)
laser_timer.timeout.connect(laser_timer_out)
func deal_damage(damage : float):
func deal_damage(damage : float,hit_position : Vector2):
# Shield wave
var shield_tween = create_tween()
var wave_index = find_free_index()
shield_tween.tween_method(set_wave_distance.bind(wave_index),0,material.get_shader_parameter("max_distance"),0.5)
shield_tween.tween_callback(reset_wave_distance.bind(wave_index))
shield_tween.custom_step(0.1)
wave_positions[wave_index] = hit_position
material.set_shader_parameter("wave_centers",wave_positions)
material.set_shader_parameter("wave_distances",wave_distances)
capacity -= damage
if capacity < 0:
ship.hull.hp += capacity
@ -26,6 +42,20 @@ func deal_damage(damage : float):
recharge_timer.start()
laser_timer.start()
func set_wave_distance(value,index):
wave_distances[index] = value
material.set_shader_parameter("wave_distances",wave_distances)
func reset_wave_distance(index):
wave_distances[index] = -1
material.set_shader_parameter("wave_distances",wave_distances)
func find_free_index() -> int:
for i in range(wave_distances.size()):
if wave_distances[i] == -1:
return i
return 0
func recharging_timer_out():
can_recharge = true