extends Node2D # 游戏暂停 var freezing := true: set(val): freezing = val for i in range(1, 5): get_node("kid" + str(i)).freezing = val var _state_map = ["背", "右", "正", "左"] # 0背 1右 2正 3左 var states: Array = [0, 0, 0, 0]: set(val): if not val or len(val) != 4: val = [0, 0, 0, 0] states = val ArchiveManager.set_global_entry("c03_s03_hariti_states", states) # 2正 1右 3左 0背 var success_states: Array = [2, 1, 3, 0] func _ready() -> void: # 道具 $"倒塌/Props/剪刀".interacted.connect(SceneManager.enable_prop_item.bind("prop_剪刀")) $"倒塌/Props/纸舌头".interacted.connect(SceneManager.enable_prop_item.bind("prop_纸舌头")) $"../刮刮乐".visible = true var shaven = ArchiveManager.get_global_value("刮海报_理发店") states = ArchiveManager.get_global_value("c03_s03_hariti_states", []) _setup_state() if _check_success(): get_node("../刮刮乐").queue_free() $"倒塌".visible = true $"倒塌".frame = 3 $"倒塌/Props".visible = true elif shaven: _on_shaven_fulfilled() else: get_parent().shaven_fulfilled.connect(_on_shaven_fulfilled) for i in range(1, 5): get_node("kid" + str(i)).picked.connect(_on_picked.bind(i)) func _on_shaven_fulfilled(): get_node("../刮刮乐").queue_free() freezing = false var texture_dir = "res://asset/art/scene/c03/s03_瞎子理发店/鬼母子神/" func _on_picked(node, id): var kid_state = wrapi(states[id - 1] + 1, 0, 4) states[id - 1] = kid_state var texture_path = texture_dir + str(id) + _state_map[kid_state] + ".png" node.texture = load(texture_path) if not _check_success(): $SfxFlip.play() elif not freezing: $SfxSuccess.play() _on_game_success() func _on_game_success(): freezing = true $"倒塌".visible = true $"倒塌".play() await $"倒塌".animation_finished $"倒塌/Props".visible = true func _setup_state(): for i in range(1, 5): var kid = get_node("kid" + str(i)) as Draggable2D var kid_state = states[i - 1] var texture_path = texture_dir + str(i) + _state_map[kid_state] + ".png" kid.texture = load(texture_path) func _check_success() -> bool: return success_states == states func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("cancel"): get_viewport().set_input_as_handled() get_parent().exit.emit()