added first theme progress and switched all files to use static typing

This commit is contained in:
Luca 2024-10-10 15:26:56 +02:00
parent c9458f3627
commit b5ace17da9
2665 changed files with 50249 additions and 476 deletions

View file

@ -1,7 +1,7 @@
class_name MonsterSpawnpoint
extends Node3D
@onready var monster_tscn = preload("res://entities/monster/monster.tscn")
@onready var monster_tscn: PackedScene = preload("res://entities/monster/monster.tscn")
# a spawnpoint that can spawn monsters
# monsters are only spawned, if the player is not looking
@ -10,10 +10,10 @@ extends Node3D
@export var spawnable_monsters: Array[MonsterSpawnpointProbability]
## Minimum Level the spawnable monsters have
@export var min_level = 1
@export var min_level: int = 1
## Maximum level the spawnable monsters can have
@export var max_level = 1
@export var max_level: int = 1
## Ignore spawning only if visible
@export var ignore_visibility: bool = false
@ -46,15 +46,15 @@ var active_monsters: Array[Monster] = []
func _ready() -> void:
if spawnable_monsters.is_empty():
printerr("Spawnpoint (%s) does not have monsters to spawn." % self.name)
spawn_timer.wait_time = spawn_cooldown
spawn_timer.autostart = true
spawn_timer.timeout.connect(spawn)
add_child(spawn_timer)
spawn_timer.start()
spawn_point = position
label.text = "%s / %s" % [len(active_monsters), max_monsters]
@ -62,42 +62,42 @@ func spawn() -> void:
if len(active_monsters) >= max_monsters:
#print("Spawnpoint reached maximum amount of monsters")
return
if ignore_visibility == false and $VisibleOnScreenNotifier3D.is_on_screen():
#print("Spawnpoint is visible on screen. Not spawning a monster.")
return
# TODO: Add a check to not spawn enemies X units near the player
# instantiate a monster .tscn scene
var monster_to_spawn = monster_tscn.instantiate()
var monster_to_spawn: Node = monster_tscn.instantiate()
# Create a new MonsterData for the monster to spawn
var monster_data: MonsterData = MonsterData.new()
# Get a random monster data as a template
var random := randi() % spawnable_monsters.size()
var random: int = randi() % spawnable_monsters.size()
var template_data : MonsterData = spawnable_monsters[random].monster_data
monster_data.set_values(template_data.unique_id, {}, randi_range(min_level, max_level))
## Heal the wild monster fully
monster_data.heal(9999)
## Set the data of the Node3D monster to spawn
monster_to_spawn.data = monster_data
# keep track of the current monster
active_monsters.append(monster_to_spawn)
label.text = "%s / %s" % [len(active_monsters), max_monsters]
# calculate the position of the monster and add the offset of the spawnpoint itself
var monster_position = Vector3(position.x, position.y + 1, position.z)
var monster_position: Vector3 = Vector3(position.x, position.y + 1, position.z)
monster_to_spawn.position = monster_position
var debug_level_node = get_parent_node_3d()
var debug_level_node: Node3D = get_parent_node_3d()
debug_level_node.add_child(monster_to_spawn)
#print("Spawning Mob \"%s\"" % monster_to_spawn.data.display_name)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
time += delta