way too many changes to list, oops. big rewrite.
This commit is contained in:
14
Scripts/Affectors/affector.gd
Normal file
14
Scripts/Affectors/affector.gd
Normal file
@ -0,0 +1,14 @@
|
||||
class_name Affector extends Node
|
||||
|
||||
var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn")
|
||||
|
||||
|
||||
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func spawn_damage_indicator(damage: int, pos: Vector3) -> void:
|
||||
var marker: Sprite3D = damage_particle_scene.instantiate()
|
||||
get_tree().root.add_child(marker)
|
||||
marker.set_number(damage)
|
||||
marker.position = pos
|
1
Scripts/Affectors/affector.gd.uid
Normal file
1
Scripts/Affectors/affector.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://5gl7yyrvjeow
|
13
Scripts/Affectors/area_affector.gd
Normal file
13
Scripts/Affectors/area_affector.gd
Normal file
@ -0,0 +1,13 @@
|
||||
class_name AreaAffector extends Affector
|
||||
|
||||
@export var shapecast: ShapeCast3D
|
||||
|
||||
|
||||
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
|
||||
for i: int in shapecast.get_collision_count():
|
||||
var enemy: EnemyController = shapecast.get_collider(i) as EnemyController
|
||||
#print(shapecast.get_collider(i))
|
||||
if targets.has(enemy):
|
||||
enemy.apply_effect(effect)
|
||||
if Data.preferences.display_tower_damage_indicators and effect.damage > 0:
|
||||
spawn_damage_indicator(effect.damage, enemy.sprite.global_position)
|
1
Scripts/Affectors/area_affector.gd.uid
Normal file
1
Scripts/Affectors/area_affector.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://duvfverjdqodj
|
8
Scripts/Affectors/direct_affect.gd
Normal file
8
Scripts/Affectors/direct_affect.gd
Normal file
@ -0,0 +1,8 @@
|
||||
class_name DirectAffect extends Affector
|
||||
|
||||
|
||||
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
|
||||
for enemy: EnemyController in targets:
|
||||
enemy.apply_effect(effect)
|
||||
if Data.preferences.display_tower_damage_indicators and effect.damage > 0:
|
||||
spawn_damage_indicator(effect.damage, enemy.sprite.global_position)
|
1
Scripts/Affectors/direct_affect.gd.uid
Normal file
1
Scripts/Affectors/direct_affect.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://8d0a4uc2i0ti
|
21
Scripts/Affectors/spawn_affect.gd
Normal file
21
Scripts/Affectors/spawn_affect.gd
Normal file
@ -0,0 +1,21 @@
|
||||
class_name SpawnAffect extends Affector
|
||||
|
||||
@export var spawn_scene: PackedScene
|
||||
@export var tower: Tower
|
||||
|
||||
var force: float = 150.0
|
||||
var projectile_id: int = 0
|
||||
|
||||
|
||||
func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void:
|
||||
for target: EnemyController in targets:
|
||||
var projectile: Projectile = spawn_scene.instantiate() as Projectile
|
||||
if projectile is HomingProjectile:
|
||||
projectile.target = target
|
||||
projectile.position = tower.yaw_model.global_position
|
||||
projectile.effect = effect
|
||||
projectile.direction = -tower.yaw_model.global_transform.basis.z
|
||||
projectile.force = force
|
||||
projectile.name = tower.base_name + str(tower.owner_id) + str(projectile_id)
|
||||
get_tree().root.add_child(projectile)
|
||||
projectile_id += 1
|
1
Scripts/Affectors/spawn_affect.gd.uid
Normal file
1
Scripts/Affectors/spawn_affect.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://ccu1u6nqkjxki
|
Reference in New Issue
Block a user