xiandie/scene/ground/scene/c03/s04_李癞房间.gd
2025-08-12 22:17:03 +08:00

89 lines
2.7 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@tool
extends AnimationRoot
# 覆盖该方法
func _default_data() -> Dictionary:
return {
"has_entered": false,
"scissor_os": false,
"key_os": false,
}
func _ready() -> void:
super._ready()
if Engine.is_editor_hint():
return
#region node_reference
var closeup李氏纸人: Closeup2D
var closeup麻将出千游戏: Closeup2D
var closeup整理麻将游戏: Closeup2D
#endregion
# 读取设置变量名
func _setup_node_reference() -> void:
closeup李氏纸人 = $"../DeployLayer/Closeup李氏纸人"
closeup麻将出千游戏 = $"../DeployLayer/Closeup麻将出千游戏"
closeup整理麻将游戏 = $"../DeployLayer/Closeup整理麻将游戏"
func _on_ground_ready() -> void:
# c03_mahjong_game: 0:初始化 1:麻将已给牌 2:麻将出千 3:麻将结束
var mahjong_stage = EventManager.get_stage("c03_mahjong_game")
closeup整理麻将游戏.enabled = mahjong_stage == 0
if mahjong_stage == 1:
closeup整理麻将游戏.display()
elif mahjong_stage == 2:
closeup麻将出千游戏.display()
closeup整理麻将游戏.exit.connect(_on_exit_sort_mahjong_game)
closeup麻将出千游戏.exit.connect(_on_exit_cheat_mahjong_game)
closeup李氏纸人.exit.connect(_on_lipaperwoman_exited)
if not data["has_entered"]:
set_data("has_entered", true)
await Util.wait(0.5)
SceneManager.pop_os_with_str("c03_s04_首次进入")
func _on_exit_sort_mahjong_game(arg) -> void:
if arg:
closeup整理麻将游戏.enabled = false
closeup麻将出千游戏.enabled = true
closeup麻将出千游戏.display()
func _on_exit_cheat_mahjong_game(arg) -> void:
if arg:
EventManager.set_stage_if_greater("c03_mahjong_game", 3)
EventManager.set_stage_if_greater("c03_li_paperwoman", 1)
closeup麻将出千游戏.enabled = false
# 渐隐黑屏3-5s黑屏头痛效果+音效,回到横板后玩家位置动画为坐靠在麻将桌左侧,站起后气泡文字
SceneManager.lock_player()
var player = SceneManager.get_player() as MainPlayer
player.global_position.x = 443.0
player.set_facing_direction(Vector2.LEFT)
player.player_action(19, true)
player.toggle_pause_state(true)
await Util.wait(2.0)
SceneManager.dizzy_effect(3.5, 1.5, false)
await Util.wait(3.0)
player.toggle_pause_state(false)
await player.animation_finished
SceneManager.pop_os_with_str("c03_s04_麻将游戏结束")
SceneManager.unlock_player()
# EventManager.set_stage_if_greater("hand", 10)
func _on_lipaperwoman_exited(_arg = null) -> void:
if not data["scissor_os"] and SceneManager.has_prop("prop_剪刀"):
set_data("scissor_os", true)
SceneManager.pop_os_with_str("c03_s04_获得剪刀后")
elif not data["key_os"] and SceneManager.has_prop("prop_2013钥匙"):
set_data("key_os", true)
SceneManager.pop_os_with_str("c03_s04_获得钥匙后")