书店拼信件(以及书架)游戏使用 lock 而非 freeze,防止信件拼成功时,错误地交互到柜子

This commit is contained in:
cakipaul 2025-07-24 18:06:38 +08:00
parent 2726065aad
commit 94737d7cce
2 changed files with 15 additions and 14 deletions

View File

@ -57,7 +57,7 @@ func freeze(duration := 0.0) -> void:
_freeze_requests += 1 _freeze_requests += 1
var f_requests = _freeze_requests var f_requests = _freeze_requests
_request_mutex.unlock() _request_mutex.unlock()
print("[Lock] Freeze applied: ", _freeze_requests) print("[Lock] Freeze applied: ", f_requests)
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("freeze from: ", _get_stack_info()) print("freeze from: ", _get_stack_info())
freeze_changed.emit(f_requests, true) freeze_changed.emit(f_requests, true)
@ -77,7 +77,7 @@ func release() -> void:
_freeze_requests = 0 _freeze_requests = 0
var f_requests = _freeze_requests var f_requests = _freeze_requests
_request_mutex.unlock() _request_mutex.unlock()
print("[Lock] Release applied: ", _freeze_requests) print("[Lock] Release applied: ", f_requests)
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("release from: ", _get_stack_info()) print("release from: ", _get_stack_info())
freeze_changed.emit(f_requests, false) freeze_changed.emit(f_requests, false)
@ -89,11 +89,12 @@ func hold(duration := 0.0) -> void:
_create_timer(duration, unhold) _create_timer(duration, unhold)
_request_mutex.lock() _request_mutex.lock()
_hold_requests += 1 _hold_requests += 1
var h_requests = _hold_requests
_request_mutex.unlock() _request_mutex.unlock()
print("[Lock] Hold applied: ", _hold_requests) print("[Lock] Hold applied: ", h_requests)
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("hold from: ", _get_stack_info()) print("hold from: ", _get_stack_info())
hold_changed.emit(_hold_requests, true) hold_changed.emit(h_requests, true)
func unhold() -> void: func unhold() -> void:
@ -110,7 +111,7 @@ func unhold() -> void:
_hold_requests = 0 _hold_requests = 0
var h_requests = _hold_requests var h_requests = _hold_requests
_request_mutex.unlock() _request_mutex.unlock()
print("[Lock] Unhold applied: ", _hold_requests) print("[Lock] Unhold applied: ", h_requests)
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("unhold from: ", _get_stack_info()) print("unhold from: ", _get_stack_info())
hold_changed.emit(h_requests, true) hold_changed.emit(h_requests, true)
@ -143,7 +144,7 @@ func lock_all(duration := 0.0) -> void:
var h_requests = _hold_requests var h_requests = _hold_requests
var f_requests = _freeze_requests var f_requests = _freeze_requests
_request_mutex.unlock() _request_mutex.unlock()
prints("[Lock] LockAll applied (hold, freeze): ", _hold_requests, _freeze_requests) prints("[Lock] LockAll applied (hold, freeze): ", h_requests, f_requests)
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("lock_all from: ", _get_stack_info()) print("lock_all from: ", _get_stack_info())
hold_changed.emit(h_requests, true) hold_changed.emit(h_requests, true)
@ -177,7 +178,7 @@ func unlock_all() -> void:
_request_mutex.unlock() _request_mutex.unlock()
hold_changed.emit(h_requests, false) hold_changed.emit(h_requests, false)
freeze_changed.emit(f_requests, false) freeze_changed.emit(f_requests, false)
prints("[Lock] UnlockAll applied (hold, freeze): ", _hold_requests, _freeze_requests) prints("[Lock] UnlockAll applied (hold, freeze): ", h_requests, f_requests)
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("unlock_all from: ", _get_stack_info()) print("unlock_all from: ", _get_stack_info())

View File

@ -119,14 +119,14 @@ func _exit_tree() -> void:
func play_shelf_game() -> void: func play_shelf_game() -> void:
if shelf_game_node.get_parent() != get_parent(): if shelf_game_node.get_parent() != get_parent():
get_parent().add_child(shelf_game_node) get_parent().add_child(shelf_game_node)
SceneManager.freeze_player(0) SceneManager.lock_player()
func _on_shelf_game_exiting() -> void: func _on_shelf_game_exiting() -> void:
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("书架游戏 exiting") print("书架游戏 exiting")
create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0) create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0)
SceneManager.release_player() SceneManager.unlock_player()
func _on_shelf_game_success() -> void: func _on_shelf_game_success() -> void:
@ -161,7 +161,7 @@ func _on_fall_off_finished() -> void:
await Util.wait(2.5) await Util.wait(2.5)
await SceneManager.pop_os_with_str("c01_s08_书架游戏恢复记忆") await SceneManager.pop_os_with_str("c01_s08_书架游戏恢复记忆")
# 最后释放玩家 # 最后释放玩家
SceneManager.release_player() SceneManager.unlock_player()
func _setup_weird_bookstore() -> void: func _setup_weird_bookstore() -> void:
@ -185,24 +185,24 @@ func _setup_weird_bookstore() -> void:
func play_envelope_game() -> void: func play_envelope_game() -> void:
if envelope_game_node.get_parent() != get_parent(): if envelope_game_node.get_parent() != get_parent():
get_parent().add_child(envelope_game_node) get_parent().add_child.call_deferred(envelope_game_node)
SceneManager.freeze_player(0) SceneManager.lock_player()
func _on_envelope_game_exiting() -> void: func _on_envelope_game_exiting() -> void:
if GlobalConfig.DEBUG: if GlobalConfig.DEBUG:
print("信封游戏 exiting") print("信封游戏 exiting")
create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0) create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0)
SceneManager.release_player() SceneManager.unlock_player()
func _on_envelope_game_success() -> void: func _on_envelope_game_success() -> void:
SceneManager.release_player()
envolope_table.enabled = false envolope_table.enabled = false
create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0) create_tween().tween_property(mask, "color:a", 0.0, 1.0).from(1.0)
ArchiveManager.set_global_entry(&"envelope_game_success", true) ArchiveManager.set_global_entry(&"envelope_game_success", true)
envelope_game_success = true envelope_game_success = true
_check_portal() _check_portal()
SceneManager.unlock_player()
func pay_off_wage() -> void: func pay_off_wage() -> void: