Complete remaining client gap features
This commit is contained in:
@@ -11,6 +11,9 @@ extends Node
|
||||
signal anim_state(state: String)
|
||||
signal target_selected(node: Node3D)
|
||||
signal moved(pos: Vector3)
|
||||
# game.py OnRender:wndMgr.IsPickedWindow 门内 chr.Pick() 拾到的角色 -> ShowCharacterTextTail。
|
||||
# 悬停命中的实体 vid 变化时 emit(无命中 / 鼠标压 UI / 悬停地面物品 -> emit 0)。见 pick_show.gd。
|
||||
signal hover_entity_changed(vid: int)
|
||||
|
||||
var player: Node3D
|
||||
var camera: Camera3D
|
||||
@@ -21,6 +24,7 @@ var ground_items: Node
|
||||
var cancel_fishing_input := Callable() # NEW_SetSingleDIKKeyState 等价入口
|
||||
var cancel_fishing_ground := Callable() # __OnPressGround 专用入口
|
||||
var pickables: Array[Node3D] = [] # 可点选实体(NPC/怪等)
|
||||
var _hover_vid := 0 # 上一帧悬停命中的实体 vid(hover_entity_changed 去抖)
|
||||
|
||||
const SPEED_WALK := 8.0
|
||||
const SPEED_RUN := 18.0
|
||||
@@ -386,9 +390,11 @@ func _update_hover_cursor() -> void:
|
||||
motion.position = mouse_pos
|
||||
if ui_manager.blocks_game_input(motion):
|
||||
cursor_manager.set_cursor("NORMAL")
|
||||
_set_hover_vid(0) # 鼠标压 UI:IsPickedWindow 为假 -> 无 chr.Pick 强显
|
||||
return
|
||||
if ground_items and ground_items.has_method("hover_at") and ground_items.hover_at(camera, mouse_pos):
|
||||
cursor_manager.set_cursor("PICK")
|
||||
_set_hover_vid(0) # 悬停地面物品:item.Pick 领域,非 chr.Pick
|
||||
return
|
||||
var from := camera.project_ray_origin(mouse_pos)
|
||||
var dir := camera.project_ray_normal(mouse_pos)
|
||||
@@ -403,5 +409,14 @@ func _update_hover_cursor() -> void:
|
||||
best = n
|
||||
if best:
|
||||
cursor_manager.set_cursor(String(best.get_meta("cursor_shape", "ATTACK")))
|
||||
_set_hover_vid(int(best.get_meta("vid", 0)))
|
||||
else:
|
||||
cursor_manager.set_cursor("NORMAL")
|
||||
_set_hover_vid(0)
|
||||
|
||||
# game.py OnRender chr.Pick() -> ShowCharacterTextTail:悬停命中的角色 vid 变化时才 emit。
|
||||
func _set_hover_vid(vid: int) -> void:
|
||||
if vid == _hover_vid:
|
||||
return
|
||||
_hover_vid = vid
|
||||
hover_entity_changed.emit(vid)
|
||||
|
||||
Reference in New Issue
Block a user