43 lines
1.3 KiB
GDScript
43 lines
1.3 KiB
GDScript
extends Node
|
|
|
|
var player_health: float = -1.0
|
|
var player_max_health: float = -1.0
|
|
var player_shield: float = -1.0
|
|
var player_max_shield: float = -1.0
|
|
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 health: Node = player.get_node("Health")
|
|
var shield: Node = player.get_node("Shield")
|
|
var role: Node = player.get_node("Role")
|
|
player_health = health.current_health
|
|
player_max_health = health.max_health
|
|
player_shield = shield.current_shield
|
|
player_max_shield = shield.max_shield
|
|
player_role = role.current_role
|
|
|
|
func restore_player(player: Node) -> void:
|
|
if player_health < 0:
|
|
return
|
|
var health: Node = player.get_node("Health")
|
|
var shield: Node = player.get_node("Shield")
|
|
var role: Node = player.get_node("Role")
|
|
health.current_health = player_health
|
|
shield.current_shield = player_shield
|
|
role.set_role(player_role)
|
|
EventBus.health_changed.emit(player, health.current_health, health.max_health)
|
|
EventBus.shield_changed.emit(player, shield.current_shield, shield.max_shield)
|
|
|
|
func clear_player() -> void:
|
|
player_health = -1.0
|
|
player_shield = -1.0
|
|
|
|
func clear() -> void:
|
|
clear_player()
|
|
portal_position = Vector3.ZERO
|
|
returning_from_dungeon = false
|
|
dungeon_cleared = false
|