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 = [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) # 正 右 左 背 var success_states: Array = [2, 2, 3, 0] func _ready() -> void: $"../刮刮乐".visible = true var shaven = ArchiveManager.get_global_value("c03_s03_flyer_shaven") states = ArchiveManager.get_global_value("c03_s03_hariti_states", []) if shaven: _on_shaven_fulfilled() else: get_parent().shaven_fulfilled.connect(_on_shaven_fulfilled) get_parent().shaven_fulfilled.connect( ArchiveManager.set_global_entry.bind("c03_s03_flyer_shaven", true) ) for i in range(1, 5): get_node("kid" + str(i)).picked.connect(_on_picked.bind(i)) _setup_state() 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() freezing = true print("鬼母子神游戏成功!") 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") or event.is_action_pressed("escape"): get_viewport().set_input_as_handled() get_parent().exit.emit(_check_success())