class_name Interactable extends Node signal action_stoped var can_pick: bool var can_store: bool var stored_objects: Array var max_person_using var persons_using: Array var persons_position: Array func start_action(person, object): print("action!") func stop_action(person, object): person.is_in_action = false var pose = find_pose(person) pose.remove_person() person.visible = true action_stoped.emit() func add_person_using(person): persons_using.append(person) func remove_person_using(person): persons_using.erase(person) func set_person_pos(person): for pose in persons_position: if pose.is_free: pose.set_person(person) func find_pose(person): return persons_position[persons_position.find(person)] func can_be_used(): var used_poses = 0 for pose in persons_position: if !pose.is_free: used_poses += 1 if used_poses < max_person_using: return true else: return false