2025-03-02 12:00:42 -07:00
|
|
|
class_name PointSpray extends Spray
|
|
|
|
## Simple single-point spraygun
|
|
|
|
|
2025-03-09 16:40:19 -06:00
|
|
|
@export var spray_scale := 1.5
|
2025-03-13 11:25:11 -06:00
|
|
|
@export var damage := 0.3334
|
2025-03-02 12:00:42 -07:00
|
|
|
|
2025-03-06 14:57:57 -07:00
|
|
|
@onready var laser: LaserCast = %LaserCast
|
2025-03-29 12:31:23 -06:00
|
|
|
@onready var spray_sfx: SpraySFX = %SpraySFX
|
2025-03-02 12:00:42 -07:00
|
|
|
|
|
|
|
|
2025-03-12 11:03:41 -06:00
|
|
|
func _spray() -> void:
|
2025-03-06 14:57:57 -07:00
|
|
|
if laser.is_colliding():
|
2025-03-29 12:31:23 -06:00
|
|
|
spray_sfx.activate()
|
2025-04-03 12:49:53 -06:00
|
|
|
spray_sfx.set_angle_from_normal(laser.get_collision_normal())
|
2025-03-29 12:31:23 -06:00
|
|
|
|
2025-03-06 14:57:57 -07:00
|
|
|
var collider := laser.get_collider()
|
2025-07-03 18:05:06 -06:00
|
|
|
var gunk_component := Gunkable.get_component(collider)
|
|
|
|
if gunk_component:
|
2025-03-06 14:57:57 -07:00
|
|
|
var point := laser.get_collision_point()
|
|
|
|
var point_scale := point.distance_to(global_position) * spray_scale
|
2025-07-03 18:05:06 -06:00
|
|
|
gunk_component.paint_continuous(point, laser.get_collision_normal(), point_scale)
|
2025-06-28 17:43:19 -06:00
|
|
|
if collider is Sprayable:
|
|
|
|
(collider as Sprayable).hit(damage)
|