extends Building func can_citizen_enter(coord: Vector2i, direction: Board.Direction) -> bool: var coord_adjustment := Board.get_next_direction(Board.Direction.UP, get_rotation_count()) var correct_heading := Board.get_next_direction(Board.Direction.DOWN, get_rotation_count()) return ( coord == starting_coord + Board.get_direction_vector(coord_adjustment) and direction == correct_heading ) func get_tile_coords() -> Array[Vector2i]: var result: Array[Vector2i] = [] result.push_back(starting_coord) result.push_back( starting_coord + Vector2i(Vector2.RIGHT.rotated(deg_to_rad(90 * get_rotation_count()))) ) result.push_back( starting_coord + Vector2i(Vector2.RIGHT.rotated(deg_to_rad(90 * get_rotation_count()))) * 2 ) result.push_back( ( starting_coord + Vector2i(Vector2.RIGHT.rotated(deg_to_rad(90 * get_rotation_count()))) + Vector2i(Vector2.UP.rotated(deg_to_rad(90 * get_rotation_count()))) ) ) return result func get_direction_queue(_citizen: Citizen) -> Array[Board.Direction]: return [ Board.get_next_direction(Board.Direction.RIGHT, get_rotation_count()), Board.get_next_direction(Board.Direction.UP, get_rotation_count()), Board.get_next_direction(Board.Direction.DOWN, get_rotation_count()), Board.get_next_direction(Board.Direction.RIGHT, get_rotation_count()), Board.get_next_direction(Board.Direction.UP, get_rotation_count()) ] func activate(citizen: Citizen) -> void: citizen.money += 1 * (citizen.get_status_count(Citizen.Status.CAFFEINATED) + 1) citizen.remove_all_statuses(Citizen.Status.CAFFEINATED) citizen.play_money_animation()