class_name Ball9 extends BaseMode func _init() -> void: pass func reap_ball(ball: Node3D) -> void: super(ball) if ball.name == "09_ball": # TODO: 9 ball must not be be destroyed. Handle rule... ball_states[ball.name]["is_foul"] = true func process_ball(ball: Node3D) -> void: super(ball) if ball.name == "09_ball": # TODO: 9 ball must be sunk last. Handle rule... ball_states[ball.name]["is_foul"] = true func handle_switch_user() -> void: push_warning("Balls reaped: ", balls_reaped.size() ) push_warning("Balls sunk: ", balls_sunk.size() ) var switch_player: bool = true if not balls_reaped.is_empty(): for ball_name in balls_reaped: ball_states[ball_name]["points"] = -ball_states[ball_name]["points"] balls_reaped.clear() if not balls_sunk.is_empty(): # TODO: Handle points, etc, insure 9-ball not sunk unless last. # Insure we process stripped vs solid ball and apropriate points accordingly. # ball_states[ball.name]["is_foul"] = true switch_player = false balls_sunk.clear() if ball_states_finalized(): process_win_condition() return if switch_player: Globals.game_state.switch_active_player() turn_count += 1 else: turn_count += 1 func process_win_condition() -> void: pass