update
This commit is contained in:
46
autoload/event_bus.gd
Normal file
46
autoload/event_bus.gd
Normal file
@@ -0,0 +1,46 @@
|
||||
extends Node
|
||||
|
||||
# Intentionen (Input → System)
|
||||
signal ability_use_requested(player, ability_index)
|
||||
signal auto_attack_tick(attacker)
|
||||
signal target_requested(player, target)
|
||||
signal enemy_detected(enemy, player)
|
||||
|
||||
# Ergebnisse (System → Node)
|
||||
signal combat_state_changed(player, in_combat)
|
||||
signal enemy_state_changed(enemy, new_state)
|
||||
signal enemy_target_changed(enemy, target)
|
||||
|
||||
# Kampf
|
||||
signal attack_executed(attacker, position, direction, damage)
|
||||
signal damage_dealt(attacker, target, damage)
|
||||
signal damage_requested(attacker, target, amount)
|
||||
signal heal_requested(healer, target, amount)
|
||||
|
||||
# Entity
|
||||
signal entity_died(entity)
|
||||
signal health_changed(entity, current, max_val)
|
||||
signal shield_changed(entity, current, max_val)
|
||||
signal shield_broken(entity)
|
||||
signal shield_regenerated(entity)
|
||||
signal regeneration_changed(entity, current, max_val)
|
||||
|
||||
# Spieler
|
||||
signal target_changed(player, target)
|
||||
signal player_respawned(player)
|
||||
signal role_changed(player, role_type)
|
||||
signal respawn_tick(timer)
|
||||
signal cooldown_tick(cooldowns, max_cooldowns, gcd_timer)
|
||||
|
||||
# Buff
|
||||
signal buff_changed(entity, stat, value)
|
||||
|
||||
# Gegner
|
||||
signal enemy_engaged(enemy, target)
|
||||
|
||||
# Portal
|
||||
signal portal_spawn(portal, enemies)
|
||||
signal portal_defeated(portal)
|
||||
|
||||
# Dungeon
|
||||
signal dungeon_cleared()
|
||||
1
autoload/event_bus.gd.uid
Normal file
1
autoload/event_bus.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://g7a7xkg1pgb4
|
||||
20
autoload/game_state.gd
Normal file
20
autoload/game_state.gd
Normal file
@@ -0,0 +1,20 @@
|
||||
extends Node
|
||||
|
||||
var player_role: int = 1
|
||||
var portal_position: Vector3 = Vector3.ZERO
|
||||
var returning_from_dungeon := false
|
||||
var dungeon_cleared := false
|
||||
|
||||
func save_player(player: Node) -> void:
|
||||
var role: Node = player.get_node("Role")
|
||||
player_role = role.current_role
|
||||
|
||||
func restore_player(player: Node) -> void:
|
||||
var role: Node = player.get_node("Role")
|
||||
role.set_role(player_role)
|
||||
|
||||
func clear() -> void:
|
||||
Stats.clear_player_cache()
|
||||
portal_position = Vector3.ZERO
|
||||
returning_from_dungeon = false
|
||||
dungeon_cleared = false
|
||||
1
autoload/game_state.gd.uid
Normal file
1
autoload/game_state.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cp2vadwcd12sm
|
||||
53
autoload/stats.gd
Normal file
53
autoload/stats.gd
Normal file
@@ -0,0 +1,53 @@
|
||||
extends Node
|
||||
|
||||
var entities: Dictionary = {}
|
||||
var player_cache: Dictionary = {}
|
||||
|
||||
func register(entity: Node, base: BaseStats) -> void:
|
||||
if entity.is_in_group("player") and not player_cache.is_empty():
|
||||
entities[entity] = player_cache.duplicate()
|
||||
entities[entity]["base_stats"] = base
|
||||
player_cache.clear()
|
||||
else:
|
||||
entities[entity] = {
|
||||
"base_stats": base,
|
||||
"health": base.max_health,
|
||||
"max_health": base.max_health,
|
||||
"health_regen": base.health_regen,
|
||||
"shield": base.max_shield,
|
||||
"max_shield": base.max_shield,
|
||||
"shield_regen_delay": base.shield_regen_delay,
|
||||
"shield_regen_time": base.shield_regen_time,
|
||||
"shield_regen_timer": 0.0,
|
||||
"alive": true,
|
||||
"buff_damage": 1.0,
|
||||
"buff_heal": 1.0,
|
||||
"buff_shield": 1.0,
|
||||
}
|
||||
|
||||
func deregister(entity: Node) -> void:
|
||||
if entity.is_in_group("player") and entity in entities:
|
||||
player_cache = entities[entity].duplicate()
|
||||
entities.erase(entity)
|
||||
|
||||
func clear_player_cache() -> void:
|
||||
player_cache.clear()
|
||||
|
||||
func get_stat(entity: Node, key: String) -> Variant:
|
||||
if entity in entities:
|
||||
return entities[entity].get(key)
|
||||
return null
|
||||
|
||||
func set_stat(entity: Node, key: String, value: Variant) -> void:
|
||||
if entity in entities:
|
||||
entities[entity][key] = value
|
||||
|
||||
func get_base(entity: Node) -> BaseStats:
|
||||
if entity in entities:
|
||||
return entities[entity]["base_stats"]
|
||||
return null
|
||||
|
||||
func is_alive(entity: Node) -> bool:
|
||||
if entity in entities:
|
||||
return entities[entity]["alive"]
|
||||
return false
|
||||
1
autoload/stats.gd.uid
Normal file
1
autoload/stats.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cyxmpeib7pcw7
|
||||
Reference in New Issue
Block a user