grunk/src/equipment/spray.gd

40 lines
907 B
GDScript3
Raw Permalink Normal View History

class_name Spray extends Tool
## Base class for spraygun tools
2025-03-12 12:19:09 -06:00
const RUMBLE_INTENSITY = 0.002
const RUMBLE_DROPOFF = 0.8
@onready var spray_effect: MeshInstance3D = %SprayEffect
@onready var beam_particles_1: GPUParticles3D = %BeamParticles1
@onready var beam_particles_2: GPUParticles3D = %BeamParticles2
2025-03-12 12:19:09 -06:00
@onready var rumbler: Rumbler3D = %Rumbler
2025-03-29 11:51:18 -06:00
@onready var beam_sfx: BeamSFX = %BeamSFX
2025-03-06 14:57:57 -07:00
func _spray() -> void:
pass ## Implemented in derived type
2025-03-06 14:57:57 -07:00
func _fire() -> void:
2025-03-20 22:45:19 -06:00
rumbler.intensity = RUMBLE_INTENSITY
if Game.manager.is_tank_full():
Player.instance.hud.play_tank_full_alert()
idle()
return
_spray()
spray_effect.visible = true
beam_particles_1.emitting = true
beam_particles_2.emitting = true
2025-03-29 11:51:18 -06:00
beam_sfx.activate()
func _idle() -> void:
spray_effect.visible = false
beam_particles_1.emitting = false
beam_particles_2.emitting = false
2025-03-12 12:19:09 -06:00
rumbler.intensity *= RUMBLE_DROPOFF