extends ColorRect class_name BackgroundSquare # warning-ignore-all:unused_signal signal clicked signal right_clicked var move_indicators := [] var square: String onready var circle: TextureRect = $Circle onready var move_indicator: ColorRect = $MoveIndicator onready var premove_indicator: ColorRect = $PremoveIndicator var b func _ready() -> void: move_indicator.color = b.last_move_indicator_color premove_indicator.color = b.premove_color mouse_default_cursor_shape = CURSOR_FORBIDDEN if b.spectating else CURSOR_POINTING_HAND Events.connect("turn_over", self, "clear_move_indicators") func check_piece_above() -> bool: return is_instance_valid(b.get_piece(square)) func _gui_input(event: InputEvent): if !b.spectating and event is InputEventMouseButton and event.pressed: emit_signal("clicked" if event.button_index == BUTTON_LEFT else "right_clicked") get_tree().set_input_as_handled() func _focus_exited(): clear_move_indicators() func clear_move_indicators(): if check_piece_above(): b.get_piece(square).background.hide() for m in move_indicators: if is_instance_valid(m): m.hide() move_indicators.clear() func show_move_indicators(): clear_move_indicators() var p = b.get_piece(square) p.background.show() var movs = b.chess.__generate_moves({"square": square}) for m in movs: var i = b.board[m.to].frame if m.flags & Chess.BITS.CAPTURE else b.background_array[m.to].circle move_indicators.append(i) i.show() func show_premove_indicators(): clear_move_indicators() var p = b.get_piece(square) p.background.show() var movs = b.chess.piece_moves(square, p.type, b.team, false) for m in movs: var _p = b.board[m.to] var i = b.background_array[m.to].circle if is_instance_valid(_p): i = _p.frame move_indicators.append(i) i.show()