57 lines
1.5 KiB
GDScript
57 lines
1.5 KiB
GDScript
extends Node
|
|
|
|
signal player_spawned(player: Player)
|
|
signal player_dead(player: Player)
|
|
|
|
var _cached_player_controller: PlayerController
|
|
var _cached_player: Player
|
|
|
|
var _camera_follower : Node = null
|
|
|
|
## player controller進入tree會注冊自己到Global
|
|
func register_player_controller(pc: PlayerController) -> PlayerController:
|
|
if not pc: return null
|
|
|
|
_cached_player_controller = pc
|
|
return _cached_player_controller
|
|
|
|
## player進入tree會注冊自己到Global
|
|
func register_player(player: Player) -> Player:
|
|
if not player: return null
|
|
|
|
_cached_player = player
|
|
|
|
##如果我们缓存了一个camera_follower,在玩家重生的时候我们会让follower自动绑定
|
|
if _camera_follower:
|
|
_camera_follower.register_follower(_cached_player)
|
|
return _cached_player
|
|
|
|
## 外部快速获取Player
|
|
func get_player() -> Player:
|
|
return _cached_player
|
|
|
|
## 外部快速获取Player Controller
|
|
func get_player_controller() -> PlayerController:
|
|
return _cached_player_controller
|
|
|
|
func player_follow_camera() -> void:
|
|
var cam := ReedCameraSystem.get_current_camera_pointer() as CameraPointer
|
|
if not cam:return
|
|
|
|
var follower := cam.get_tool_by_type(CameraPointer.ToolType.FOLLOWER)
|
|
if not follower:return
|
|
|
|
_camera_follower = follower
|
|
|
|
if not _cached_player:return
|
|
follower.register_follower(_cached_player)
|
|
|
|
func player_unfollow_camera() -> void:
|
|
if _camera_follower:
|
|
_camera_follower.unregister_follower()
|
|
_camera_follower = null
|
|
|
|
## 外部用于监听Player死亡
|
|
func boradcast_player_dead_event(player:Player) -> void:
|
|
player_dead.emit(player)
|