enabled enforced static typing
This commit is contained in:
@ -1,8 +1,7 @@
|
||||
extends Tower
|
||||
class_name HitscanTower
|
||||
class_name HitscanTower extends Tower
|
||||
|
||||
|
||||
func shoot():
|
||||
func shoot() -> void:
|
||||
super.shoot()
|
||||
if targeted_enemy and is_instance_valid(targeted_enemy) and targeted_enemy.alive:
|
||||
targeted_enemy.damage(damage)
|
||||
@ -11,5 +10,5 @@ func shoot():
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_shoot():
|
||||
func networked_shoot() -> void:
|
||||
super.networked_shoot()
|
||||
|
@ -1,26 +1,25 @@
|
||||
extends Tower
|
||||
class_name ProjectileTower
|
||||
class_name ProjectileTower extends Tower
|
||||
|
||||
@export var projectile_scene : PackedScene
|
||||
@export var projectile_scene: PackedScene
|
||||
|
||||
var force := 150.0
|
||||
var projectile_id := 0
|
||||
var force: float = 150.0
|
||||
var projectile_id: int = 0
|
||||
|
||||
|
||||
func shoot():
|
||||
func shoot() -> void:
|
||||
if is_multiplayer_authority():
|
||||
networked_spawn_projectile.rpc(multiplayer.get_unique_id())
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_shoot():
|
||||
func networked_shoot() -> void:
|
||||
super.networked_shoot()
|
||||
shoot()
|
||||
|
||||
|
||||
@rpc("reliable", "call_local")
|
||||
func networked_spawn_projectile(peer_id):
|
||||
var projectile = projectile_scene.instantiate() as Projectile
|
||||
func networked_spawn_projectile(peer_id: int) -> Projectile:
|
||||
var projectile: Projectile = projectile_scene.instantiate() as Projectile
|
||||
projectile.position = yaw_model.global_position
|
||||
projectile.damage = damage
|
||||
projectile.direction = -yaw_model.global_transform.basis.z
|
||||
|
@ -1,27 +1,26 @@
|
||||
extends StatusApplyingTower
|
||||
class_name RangeAffectingTower
|
||||
class_name RangeAffectingTower extends StatusApplyingTower
|
||||
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if !is_multiplayer_authority():
|
||||
return
|
||||
var enemies_in_range = []
|
||||
for enemy in get_tree().get_nodes_in_group("Enemies"):
|
||||
var enemies_in_range: Array = []
|
||||
for enemy: EnemyController in get_tree().get_nodes_in_group("Enemies"):
|
||||
if !is_instance_valid(enemy) or !enemy.alive or global_position.distance_to(enemy.global_position) > target_range:
|
||||
continue
|
||||
if enemy.stats.target_type & stats.target_type:
|
||||
enemies_in_range.append(enemy)
|
||||
if time_since_firing >= time_between_shots:
|
||||
time_since_firing -= time_between_shots
|
||||
for enemy in enemies_in_range:
|
||||
for enemy: EnemyController in enemies_in_range:
|
||||
fire(enemy)
|
||||
|
||||
|
||||
func aim():
|
||||
func aim() -> void:
|
||||
pass
|
||||
|
||||
|
||||
func fire(target):
|
||||
func fire(target: EnemyController) -> void:
|
||||
if is_instance_valid(target) and target.alive:
|
||||
target.damage(damage)
|
||||
target.status_manager.add_effect(build_status_object())
|
||||
@ -32,6 +31,6 @@ func fire(target):
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_fire(target_node_path):
|
||||
var target = get_tree().root.get_node(target_node_path)
|
||||
func networked_fire(target_node_path: String) -> void:
|
||||
var target: EnemyController = get_tree().root.get_node(target_node_path)
|
||||
fire(target)
|
||||
|
@ -1,9 +1,8 @@
|
||||
extends Tower
|
||||
class_name ShapecastTower
|
||||
class_name ShapecastTower extends Tower
|
||||
|
||||
@export var shapecast : ShapeCast3D
|
||||
@export var particlesystem : GPUParticles3D
|
||||
@export var status_stats : StatusStats
|
||||
@export var shapecast: ShapeCast3D
|
||||
@export var particlesystem: GPUParticles3D
|
||||
@export var status_stats: StatusStats
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
@ -14,19 +13,19 @@ func _process(delta: float) -> void:
|
||||
particlesystem.emitting = false
|
||||
|
||||
|
||||
func shoot():
|
||||
for index in shapecast.get_collision_count():
|
||||
var target = shapecast.get_collider(index) as CharacterBody3D
|
||||
func shoot() -> void:
|
||||
for index: int in shapecast.get_collision_count():
|
||||
var target: CharacterBody3D = shapecast.get_collider(index) as CharacterBody3D
|
||||
hit(target)
|
||||
|
||||
|
||||
func aim():
|
||||
func aim() -> void:
|
||||
yaw_model.look_at(targeted_enemy.global_position)
|
||||
pitch_model.look_at(targeted_enemy.global_position)
|
||||
pitch_model.rotation.x = 0.0
|
||||
|
||||
|
||||
func hit(target):
|
||||
func hit(target: CharacterBody3D) -> void:
|
||||
if is_instance_valid(target) and target.alive:
|
||||
target.damage(damage)
|
||||
if Data.preferences.display_tower_damage_indicators:
|
||||
@ -37,12 +36,12 @@ func hit(target):
|
||||
|
||||
|
||||
func build_status_object() -> StatusEffect:
|
||||
var status = StatusEffect.new()
|
||||
var status: StatusEffect = StatusEffect.new()
|
||||
status.stats = status_stats
|
||||
return status
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_hit(target_node_path):
|
||||
var target = get_tree().root.get_node(target_node_path)
|
||||
func networked_hit(target_node_path: String) -> void:
|
||||
var target: CharacterBody3D = get_tree().root.get_node(target_node_path) as CharacterBody3D
|
||||
hit(target)
|
||||
|
@ -1,10 +1,9 @@
|
||||
extends HitscanTower
|
||||
class_name StatusApplyingTower
|
||||
class_name StatusApplyingTower extends HitscanTower
|
||||
|
||||
@export var status_stats : StatusStats
|
||||
@export var status_stats: StatusStats
|
||||
|
||||
|
||||
func shoot():
|
||||
func shoot() -> void:
|
||||
super.shoot()
|
||||
if targeted_enemy and is_instance_valid(targeted_enemy) and targeted_enemy.alive:
|
||||
targeted_enemy.damage(damage)
|
||||
@ -12,11 +11,11 @@ func shoot():
|
||||
|
||||
|
||||
func build_status_object() -> StatusEffect:
|
||||
var status = StatusEffect.new()
|
||||
var status: StatusEffect = StatusEffect.new()
|
||||
status.stats = status_stats
|
||||
return status
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_shoot():
|
||||
func networked_shoot() -> void:
|
||||
super.networked_shoot()
|
||||
|
@ -1,21 +1,20 @@
|
||||
extends Node3D
|
||||
class_name Tower
|
||||
class_name Tower extends Node3D
|
||||
|
||||
@export var stats : CardText
|
||||
@export var animator : AnimationPlayer
|
||||
@export var pitch_model : MeshInstance3D
|
||||
@export var yaw_model : MeshInstance3D
|
||||
@export var range_indicator : CSGSphere3D
|
||||
@export var audio_player : AudioStreamPlayer3D
|
||||
@export var stats: CardText
|
||||
@export var animator: AnimationPlayer
|
||||
@export var pitch_model: MeshInstance3D
|
||||
@export var yaw_model: MeshInstance3D
|
||||
@export var range_indicator: CSGSphere3D
|
||||
@export var audio_player: AudioStreamPlayer3D
|
||||
|
||||
var owner_id : int
|
||||
var damage_particle_scene = preload("res://Scenes/damage_particle.tscn")
|
||||
var base_name
|
||||
var targeted_enemy
|
||||
var time_since_firing := 0.0
|
||||
var time_between_shots := 0.0
|
||||
var damage := 0.0
|
||||
var target_range := 0.0
|
||||
var owner_id: int
|
||||
var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn")
|
||||
var base_name: String
|
||||
var targeted_enemy: EnemyController
|
||||
var time_since_firing: float = 0.0
|
||||
var time_between_shots: float = 0.0
|
||||
var damage: float = 0.0
|
||||
var target_range: float = 0.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@ -25,7 +24,7 @@ func _ready() -> void:
|
||||
range_indicator.radius = target_range
|
||||
|
||||
|
||||
func preview_range(value):
|
||||
func preview_range(value: bool) -> void:
|
||||
range_indicator.set_visible(value)
|
||||
|
||||
|
||||
@ -57,19 +56,19 @@ func _physics_process(_delta: float) -> void:
|
||||
shoot()
|
||||
|
||||
|
||||
func aim():
|
||||
func aim() -> void:
|
||||
yaw_model.look_at(targeted_enemy.global_position)
|
||||
pitch_model.look_at(targeted_enemy.global_position)
|
||||
pitch_model.rotation.x = 0.0
|
||||
|
||||
|
||||
func acquire_target():
|
||||
var most_progressed_enemy = null
|
||||
for enemy in get_tree().get_nodes_in_group("Enemies"):
|
||||
func acquire_target() -> void:
|
||||
var most_progressed_enemy: EnemyController = null
|
||||
for enemy: EnemyController in get_tree().get_nodes_in_group("Enemies"):
|
||||
if global_position.distance_to(enemy.global_position) > target_range:
|
||||
continue
|
||||
var em_1 = enemy.movement_controller as EnemyMovement
|
||||
var em_2 : EnemyMovement
|
||||
var em_1: EnemyMovement = enemy.movement_controller as EnemyMovement
|
||||
var em_2: EnemyMovement
|
||||
if most_progressed_enemy != null:
|
||||
em_2 = most_progressed_enemy.movement_controller as EnemyMovement
|
||||
if (most_progressed_enemy == null or em_1.distance_remaining < em_2.distance_remaining) and enemy.stats.target_type & stats.target_type:
|
||||
@ -79,26 +78,26 @@ func acquire_target():
|
||||
networked_acquire_target.rpc(get_tree().root.get_path_to(most_progressed_enemy))
|
||||
|
||||
|
||||
func shoot():
|
||||
func shoot() -> void:
|
||||
animator.play("shoot")
|
||||
audio_player.play()
|
||||
if is_multiplayer_authority():
|
||||
networked_shoot.rpc()
|
||||
|
||||
|
||||
func spawn_damage_indicator(pos):
|
||||
func spawn_damage_indicator(pos: Vector3) -> void:
|
||||
if damage > 0:
|
||||
var marker = damage_particle_scene.instantiate()
|
||||
var marker: Sprite3D = damage_particle_scene.instantiate()
|
||||
get_tree().root.add_child(marker)
|
||||
marker.set_number(damage)
|
||||
marker.position = pos
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_shoot():
|
||||
func networked_shoot() -> void:
|
||||
shoot()
|
||||
|
||||
|
||||
@rpc("reliable")
|
||||
func networked_acquire_target(target_node_path):
|
||||
func networked_acquire_target(target_node_path: String) -> void:
|
||||
targeted_enemy = get_tree().root.get_node(target_node_path)
|
||||
|
Reference in New Issue
Block a user