Initial scaffolding.
This commit is contained in:
parent
8e821ead28
commit
1200ac7e32
8 changed files with 78 additions and 1 deletions
|
|
@ -8,7 +8,7 @@ script = ExtResource("2_w7xlm")
|
||||||
shot_name = "vanguard"
|
shot_name = "vanguard"
|
||||||
bullet_scene = ExtResource("1_hm46f")
|
bullet_scene = ExtResource("1_hm46f")
|
||||||
damage = 5
|
damage = 5
|
||||||
speed = 500
|
speed = 550
|
||||||
projectiles = 5
|
projectiles = 5
|
||||||
spacing = 30.0
|
spacing = 30.0
|
||||||
origin = -15
|
origin = -15
|
||||||
|
|
|
||||||
6
scenes/EffectComponent.tscn
Normal file
6
scenes/EffectComponent.tscn
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene format=3 uid="uid://bq3xhbfgkt22l"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://65d3hbrpm21x" path="res://scripts/effects_component.gd" id="1_ee0kt"]
|
||||||
|
|
||||||
|
[node name="EffectsComponent" type="Node2D" unique_id=1393438576]
|
||||||
|
script = ExtResource("1_ee0kt")
|
||||||
27
scenes/effects/flash_effect.gd
Normal file
27
scenes/effects/flash_effect.gd
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
class_name FlashEffect
|
||||||
|
extends BaseEffect
|
||||||
|
|
||||||
|
@export var flash_color: Color = Color.WHITE
|
||||||
|
@export var flash_speed: float = 10.0
|
||||||
|
|
||||||
|
var _timer: float = 0.0
|
||||||
|
var _original_material: Material
|
||||||
|
|
||||||
|
func start(target: Node) -> void:
|
||||||
|
_timer = 0.0
|
||||||
|
if target is CanvasItem:
|
||||||
|
_original_material = target.material
|
||||||
|
# Apply a ShaderMaterial that handles the flash
|
||||||
|
var flash_material = ShaderMaterial.new()
|
||||||
|
flash_material.shader = preload("res://shaders/flash.gdshader")
|
||||||
|
target.material = flash_material
|
||||||
|
|
||||||
|
func process(delta: float, target: Node) -> void:
|
||||||
|
_timer += delta
|
||||||
|
if target.material is ShaderMaterial:
|
||||||
|
var intensity = (sin(_timer * flash_speed) + 1.0) / 2.0
|
||||||
|
target.material.set_shader_parameter("flash_intensity", intensity)
|
||||||
|
|
||||||
|
func stop(target: Node) -> void:
|
||||||
|
if target is CanvasItem:
|
||||||
|
target.material = _original_material
|
||||||
1
scenes/effects/flash_effect.gd.uid
Normal file
1
scenes/effects/flash_effect.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://deak7vcr7ss5l
|
||||||
16
scripts/base_effect.gd
Normal file
16
scripts/base_effect.gd
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
class_name BaseEffect
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
@export var duration: float = 0.5
|
||||||
|
|
||||||
|
# Called when the effect is applied
|
||||||
|
func start(target: Node) -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Called every frame (if needed)
|
||||||
|
func process(delta: float) -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Clean up any changes to the target
|
||||||
|
func stop(target: Node) -> void:
|
||||||
|
pass
|
||||||
1
scripts/base_effect.gd.uid
Normal file
1
scripts/base_effect.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cs7xpxd1vpl56
|
||||||
25
scripts/effects_component.gd
Normal file
25
scripts/effects_component.gd
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
class_name EffectComponent
|
||||||
|
extends Node2D
|
||||||
|
|
||||||
|
@export var target_node: Node
|
||||||
|
|
||||||
|
var active_effects: Array[BaseEffect] = []
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
# Process all active effects backwards so we can safely remove finished ones
|
||||||
|
for i in range(active_effects.size() - 1, -1, -1):
|
||||||
|
var effect = active_effects[i]
|
||||||
|
effect.process(delta, target_node)
|
||||||
|
|
||||||
|
# Example: simple time-based expiration
|
||||||
|
effect.duration -= delta
|
||||||
|
if effect.duration <= 0.0:
|
||||||
|
remove_effect(effect)
|
||||||
|
|
||||||
|
func apply_effect(effect: BaseEffect) -> void:
|
||||||
|
effect.start(target_node)
|
||||||
|
active_effects.append(effect)
|
||||||
|
|
||||||
|
func remove_effect(effect: BaseEffect) -> void:
|
||||||
|
effect.stop(target_node)
|
||||||
|
active_effects.erase(effect)
|
||||||
1
scripts/effects_component.gd.uid
Normal file
1
scripts/effects_component.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://65d3hbrpm21x
|
||||||
Loading…
Add table
Add a link
Reference in a new issue