diff --git a/entities/game/card_collider/scripts/CardCollider.gd b/entities/game/card_collider/scripts/CardCollider.gd index e180506..6155d28 100644 --- a/entities/game/card_collider/scripts/CardCollider.gd +++ b/entities/game/card_collider/scripts/CardCollider.gd @@ -9,6 +9,7 @@ var _grid_coordinate: Vector2i = Vector2i.ZERO var _shape: CollisionShape2D = null var _mouse_inside: bool = false +var _active_state: bool = false func _ready() -> void: _shape = get_node("%CollisionShape") @@ -31,6 +32,15 @@ func enable_collider() -> void: func disable_collider() -> void: _shape.disabled = true +func is_clicked() -> void: + _active_state = false + +func reset() -> void: + _active_state = true + +func is_active() -> bool: + return _active_state + func mouse_entered() -> void: mouse_enter.emit(_grid_coordinate) _mouse_inside = true @@ -40,9 +50,10 @@ func mouse_has_left() -> void: _mouse_inside = false func input_event(_viewport: Node, event: InputEvent, _shape_idx: int) -> void: - if not _mouse_inside: + if not _mouse_inside or not _active_state: return if event is InputEventMouseButton: if event.pressed and event.button_index == MouseButton.MOUSE_BUTTON_LEFT: clicked.emit(_grid_coordinate) disable_collider() + is_clicked() diff --git a/entities/game/memory_game/scenes/MemoryGame.tscn b/entities/game/memory_game/scenes/MemoryGame.tscn index 68e1063..48d391e 100644 --- a/entities/game/memory_game/scenes/MemoryGame.tscn +++ b/entities/game/memory_game/scenes/MemoryGame.tscn @@ -101,7 +101,7 @@ metadata/_custom_type_script = "uid://bxjrl2ikqn4tk" [node name="AiAgentSystem" type="Node" parent="Systems" unique_id=1896166842 node_paths=PackedStringArray("cards_node", "players")] script = ExtResource("15_u3ner") -cards_node = NodePath("../../World/CardBoard") +cards_node = NodePath("../../World/CardBoard/CardInteractionField") players = NodePath("../PlayerSystem") min_wait_seconds = 0.75 metadata/_custom_type_script = "uid://c3hyh8ifpeuxg" @@ -268,8 +268,8 @@ debug_functions = Array[ExtResource("34_4hsit")]([SubResource("Resource_8rpam")] [connection signal="player_resource_changed" from="Systems/PlayerSystem" to="World/CardBoard/CardInteractionField" method="player_changed"] [connection signal="player_resource_changed" from="Systems/PlayerSystem" to="World/Camera2D" method="player_changed"] [connection signal="player_score_changed" from="Systems/PlayerSystem" to="UI/PlayersOverlay" method="player_scored"] -[connection signal="card_movement" from="Systems/PlayerInputSystem" to="World/CardBoard" method="parse_movement"] -[connection signal="confirm_current_card" from="Systems/PlayerInputSystem" to="World/CardBoard" method="confirm_current_card"] +[connection signal="card_movement" from="Systems/PlayerInputSystem" to="World/CardBoard/CardInteractionField" method="parse_movement"] +[connection signal="confirm_current_card" from="Systems/PlayerInputSystem" to="World/CardBoard/CardInteractionField" method="confirm_selected_card"] [connection signal="end_current_round" from="Systems/PlayerInputSystem" to="." method="end_round_now"] [connection signal="end_current_round" from="Systems/PlayerInputSystem" to="Systems/GameStateSystem" method="force_end_round"] [connection signal="game_menu_requested" from="Systems/PlayerInputSystem" to="." method="show_game_menu"] diff --git a/entities/game/memory_game/scripts/CardInteractionField.gd b/entities/game/memory_game/scripts/CardInteractionField.gd index 4d6daf6..e3a2b4b 100644 --- a/entities/game/memory_game/scripts/CardInteractionField.gd +++ b/entities/game/memory_game/scripts/CardInteractionField.gd @@ -4,6 +4,8 @@ signal mouse_enter(grid: Vector2i) signal mouse_left(grid: Vector2i) signal clicked(grid: Vector2i) +enum Axis {X, Y} + @export var default_texture_size: Vector2 = Vector2(499, 550) @export var collider_template: PackedScene = null @export var additional_offset: Vector2i = Vector2i(0, 25) @@ -11,8 +13,22 @@ signal clicked(grid: Vector2i) var _separation: int = 0 var _offset: Vector2i = Vector2i.ZERO var _card_size: Vector2 +var _field_size: Vector2i = Vector2i.ZERO var _is_ai_player: bool = false +var _selected_grid_position: Vector2i = -Vector2i.ONE +var _controller_input_was_made: bool = false + +var possible_movements: Array[Vector2] = [ + Vector2.RIGHT, + Vector2.DOWN, + Vector2.LEFT, + Vector2.UP + ] + + +func _reset_grid_position() -> void: + _selected_grid_position = -Vector2i.ONE func set_board_information(deck_to_use: MemoryDeckResource, card_separation: int, field_offset: Vector2i) -> void: var back_image: Texture2D = deck_to_use.get_back_image() @@ -23,6 +39,7 @@ func set_board_information(deck_to_use: MemoryDeckResource, card_separation: int _offset = field_offset func build_field(cards_on_x: int, cards_on_y: int) -> void: + _field_size = Vector2i(cards_on_x, cards_on_y) for x: int in cards_on_x: for y: int in cards_on_y: var x_addition: int = _separation * x @@ -63,10 +80,151 @@ func _change_interaction_state(new_state: bool) -> void: for child: CardCollider in get_children(): if new_state: child.enable_collider() + child.reset() else: child.disable_collider() + + +func parse_movement(information: Vector2) -> void: + if get_tree().paused or _is_ai_player: + _controller_input_was_made = false + return + _controller_input_was_made = true + if information != Vector2.ZERO: + Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) + + mouse_left.emit(_selected_grid_position) + var card_position: Vector2i =_get_closest_card_position(information) + if card_position == -Vector2i.ONE: # or !select_card_at_position(card_position): + card_position = _selected_grid_position + + _selected_grid_position = card_position + mouse_enter.emit(_selected_grid_position) + +func _get_closest_card_position(movement: Vector2) -> Vector2i: + var target_position: Vector2i = Vector2i(int(movement.x), int(movement.y)) + _selected_grid_position + if _selected_grid_position == -Vector2i.ONE: + _selected_grid_position = -Vector2i.ONE + target_position = Vector2i.ZERO + + target_position.x = clampi(target_position.x, 0, _field_size.x) + target_position.y = clampi(target_position.y, 0, _field_size.y) + + if _selected_grid_position == target_position: + return _selected_grid_position + + var axis: Axis = Axis.X + var is_negative: bool = false + var closest_distance: float = 100000.0 + var return_position: Vector2i = -Vector2i.ONE + + if movement.y != 0: + axis = Axis.Y + + if movement.y < -0.0001 or movement.x < -0.0001: + is_negative = true + for valid_position: Vector2i in _get_all_relevant_available_cards(_selected_grid_position, is_negative, axis): + if valid_position == target_position: + return valid_position + var calculate_distance: Vector2i = valid_position + var weight: int = (_field_size.x + _field_size.y) * 2 + if axis == Axis.X: + if valid_position.x == target_position.x: + weight = 0 + else: + if valid_position.y == target_position.y: + weight = 0 + var current_distance: float = calculate_distance.distance_to(target_position) + weight + if current_distance < closest_distance: + closest_distance = current_distance + return_position = valid_position + + return return_position + +func get_all_card_positions(get_turned: bool = false) -> Array[Vector2i]: + var card_positions: Array[Vector2i] = [] + for card_collider: CardCollider in get_children(): + if card_collider != null and not card_collider.is_queued_for_deletion(): + if get_turned or card_collider.is_active(): + card_positions.append(card_collider.get_grid_coordinate()) + return card_positions + +func get_all_disabled_cards() -> Array[Vector2i]: + var card_positions: Array[Vector2i] = [] + for card_collider: CardCollider in get_children(): + if card_collider != null and not card_collider.is_queued_for_deletion(): + if not card_collider.is_active(): + card_positions.append(card_collider.get_grid_coordinate()) + return card_positions + +func is_there_a_card_on_position(grid_position: Vector2i) -> bool: + for card_collider: CardCollider in get_children(): + if card_collider.get_grid_coordinate() == grid_position: + var active: bool = card_collider.is_active() + return active + return false + +func _get_all_relevant_available_cards(current_pos: Vector2i, go_negative: bool, axis: Axis) -> Array[Vector2i]: + var valid_cards: Array[Vector2i] = [] + for card_collider: Node in get_children(): + if card_collider != null and not card_collider.is_queued_for_deletion() and card_collider is CardCollider: + if _check_if_valid_card(current_pos, go_negative, axis, card_collider): + valid_cards.append(card_collider.get_grid_coordinate()) + return valid_cards + +func _check_if_valid_card(current_pos: Vector2i, go_negative: bool, axis: Axis, card: CardCollider) -> bool: + if not card.is_active(): + return false + match axis: + Axis.X: + if go_negative: + return card.get_grid_coordinate().x < current_pos.x + return card.get_grid_coordinate().x > current_pos.x + Axis.Y: + if go_negative: + return card.get_grid_coordinate().y < current_pos.y + return card.get_grid_coordinate().y > current_pos.y + + return false + +func confirm_selected_card() -> void: + mouse_has_clicked(_selected_grid_position) + func _connect_card_interaction(collider: CardCollider) -> void: - collider.mouse_enter.connect(func(data: Vector2i) -> void: mouse_enter.emit(data)) - collider.mouse_left.connect(func(data: Vector2i) -> void: mouse_left.emit(data)) - collider.clicked.connect(func(data: Vector2i) -> void: clicked.emit(data)) + collider.mouse_enter.connect(mouse_has_entered) + collider.mouse_enter.connect(_mouse_movement_was_made) + collider.mouse_left.connect(mouse_has_left) + collider.mouse_left.connect(_mouse_movement_was_made) + collider.clicked.connect(mouse_has_clicked) + +func _mouse_movement_was_made(_grid_position: Vector2i) -> void: + _controller_input_was_made = false + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + +func mouse_has_clicked(grid_position: Vector2i) -> void: + clicked.emit(grid_position) + for collider: CardCollider in get_children(): + if collider.get_grid_coordinate() == grid_position: + collider.is_clicked() + if not _controller_input_was_made: + _reset_grid_position() + return + _selected_grid_position = _get_closest_card() + mouse_has_entered(_selected_grid_position) + +func _get_closest_card() -> Vector2i: + for direction: Vector2 in possible_movements: + var possible_position: Vector2i = _get_closest_card_position(direction) + if possible_position != -Vector2i.ONE: + return possible_position + + return -Vector2i.ONE + +func mouse_has_entered(grid_position: Vector2i) -> void: + mouse_enter.emit(grid_position) + _selected_grid_position = grid_position + +func mouse_has_left(grid_position: Vector2i) -> void: + mouse_left.emit(grid_position) + _selected_grid_position = grid_position \ No newline at end of file diff --git a/entities/game/memory_game/scripts/GameCardGrid.gd b/entities/game/memory_game/scripts/GameCardGrid.gd index fec2f41..35f7399 100644 --- a/entities/game/memory_game/scripts/GameCardGrid.gd +++ b/entities/game/memory_game/scripts/GameCardGrid.gd @@ -101,82 +101,16 @@ func select_card_at_position(grid_position: Vector2i) -> bool: current_card.got_focus() return found_card -func confirm_current_card() -> void: - if current_card == null or get_tree().paused: - return - current_card.card_was_clicked() func get_card_on_position(card_position: Vector2i) -> MemoryCardResource: for card: CardTemplate in _get_game_card_templates_children(): if card_position == card.grid_position: return card.memory_card return null - -func parse_movement(information: Vector2) -> void: - if get_tree().paused or currently_ai_player: - return - controller_input_was_made = true - if information != Vector2.ZERO: - Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) - - var card_position: Vector2i =_get_closest_card_position(information) - if card_position == -Vector2i.ONE or !select_card_at_position(card_position): - current_card = null - -func _get_closest_card_position(movement: Vector2) -> Vector2i: - var current_selected_card: Vector2i = get_current_grid_position() - var target_position: Vector2i = Vector2i(int(movement.x), int(movement.y)) + current_selected_card - if current_selected_card == -Vector2i.ONE: - current_selected_card = -Vector2i.ONE - target_position = Vector2i.ZERO - - target_position.x = clampi(target_position.x, 0, _field_size.x) - target_position.y = clampi(target_position.y, 0, _field_size.y) - - if current_selected_card == target_position: - return current_selected_card - - print(target_position) - - var axis: Axis = Axis.X - var is_negative: bool = false - var closest_distance: float = 100000.0 - var return_position: Vector2i = -Vector2i.ONE - - if movement.y != 0: - axis = Axis.Y - - if movement.y < -0.0001 or movement.x < -0.0001: - is_negative = true - for valid_position: Vector2i in _get_valid_card_positions(current_selected_card, is_negative, axis): - if valid_position == target_position: - return valid_position - var calculate_distance: Vector2i = valid_position - var weight: int = (_field_size.x + _field_size.y) * 2 - if axis == Axis.X: - if valid_position.x == target_position.x: - weight = 0 - else: - if valid_position.y == target_position.y: - weight = 0 - var current_distance: float = calculate_distance.distance_to(target_position) + weight - if current_distance < closest_distance: - closest_distance = current_distance - return_position = valid_position - - return return_position func round_frozen() -> void: current_card = null -func round_unfrozen() -> void: - if currently_ai_player: - controller_input_was_made = false - return - if controller_input_was_made: - _get_closest_card_position(Vector2i(1,0)) - controller_input_was_made = false - func card_loading_done() -> void: for card: CardTemplate in _get_game_card_templates(): card.mouse_was_used.connect(func() -> void: @@ -187,7 +121,6 @@ func card_loading_done() -> void: func game_state_changed(game_state: GameEnum.State) -> void: match game_state: GameEnum.State.TURN_START: - round_unfrozen() for card: CardTemplate in _get_game_card_templates(): card.player_changed(currently_ai_player) print(_get_game_card_templates().size()) @@ -212,7 +145,6 @@ func _validate_grid() -> void: if card == null or card.is_queued_for_deletion(): continue if card.is_turned() and not card.card_is_fully_shown(): - print("Waiting") await card.fully_shown if _any_matching(): var card_positions: Array[Vector2i] = [] @@ -303,7 +235,6 @@ func card_was_placed(card: CardTemplate) -> void: card.card_triggered.connect(card_triggered_hook) state_machine.state_changed.connect(card.game_state_changed) - func card_triggered_hook(card: CardTemplate) -> void: select_card_at_position(card.grid_position) card_triggered.emit(card) diff --git a/entities/game/memory_game/scripts/systems/AiAgentSystem.gd b/entities/game/memory_game/scripts/systems/AiAgentSystem.gd index b24d05e..bf3d537 100644 --- a/entities/game/memory_game/scripts/systems/AiAgentSystem.gd +++ b/entities/game/memory_game/scripts/systems/AiAgentSystem.gd @@ -1,6 +1,6 @@ class_name AiAgentSystem extends Node -@export var cards_node: GameCardGrid +@export var cards_node: CardInteractionField @export var players: PlayerSystem @export var min_wait_seconds: float = 0.5 @export var max_wait_seconds: float = 3 diff --git a/shared/entities/ai_behavior/resources/AiBehaviorNode.gd b/shared/entities/ai_behavior/resources/AiBehaviorNode.gd index 9f0c318..23c31b6 100644 --- a/shared/entities/ai_behavior/resources/AiBehaviorNode.gd +++ b/shared/entities/ai_behavior/resources/AiBehaviorNode.gd @@ -5,19 +5,16 @@ class_name AiBehaviorNode extends Resource func get_execution_probability() -> int: return probability -func can_execute(_blackboard: Blackboard, _grid: GameCardGrid) -> bool: +func can_execute(_blackboard: Blackboard, _grid: CardInteractionField) -> bool: return false -func execute_action(_blackboard: Blackboard, _grid: GameCardGrid) -> void: +func execute_action(_blackboard: Blackboard, _grid: CardInteractionField) -> void: pass -func _trigger_card(position: Vector2i, _blackboard: Blackboard, grid: GameCardGrid) -> bool: - var card: MemoryCardResource = grid.get_card_on_position(position) - if card == null: +func _trigger_card(position: Vector2i, _blackboard: Blackboard, grid: CardInteractionField) -> bool: + var card_existing: bool = grid.is_there_a_card_on_position(position) + if not card_existing: return false - if grid.select_card_at_position(position): - grid.confirm_current_card() - return true - - return false \ No newline at end of file + grid.mouse_has_clicked(position) + return not grid.is_there_a_card_on_position(position) \ No newline at end of file diff --git a/shared/entities/ai_behavior/resources/behaviors/GetMatchingCard.gd b/shared/entities/ai_behavior/resources/behaviors/GetMatchingCard.gd index a88ed1b..b5f8e9e 100644 --- a/shared/entities/ai_behavior/resources/behaviors/GetMatchingCard.gd +++ b/shared/entities/ai_behavior/resources/behaviors/GetMatchingCard.gd @@ -1,7 +1,7 @@ class_name GetMatchingCard extends AiBehaviorNode -func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: - var unrevealed_cards: Array[Vector2i] = grid.get_all_cards_currently_turned() +func can_execute(blackboard: Blackboard, grid: CardInteractionField) -> bool: + var unrevealed_cards: Array[Vector2i] = grid.get_all_disabled_cards() if unrevealed_cards.size() != 1: return false; @@ -15,9 +15,9 @@ func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: return true return false -func execute_action(blackboard: Blackboard, grid: GameCardGrid) -> void: +func execute_action(blackboard: Blackboard, grid: CardInteractionField) -> void: print_debug("GetMatchingCard") - var unrevealed_cards: Array[Vector2i] = grid.get_all_cards_currently_turned() + var unrevealed_cards: Array[Vector2i] = grid.get_al() var card_of_focus: Vector2i = unrevealed_cards[0] var loaded_card: MemoryCardResource = grid.get_card_on_position(card_of_focus) var card_to_reveal: CardInformationResource = null diff --git a/shared/entities/ai_behavior/resources/behaviors/OpenFirstMatchingCard.gd b/shared/entities/ai_behavior/resources/behaviors/OpenFirstMatchingCard.gd index edf8cbe..f633781 100644 --- a/shared/entities/ai_behavior/resources/behaviors/OpenFirstMatchingCard.gd +++ b/shared/entities/ai_behavior/resources/behaviors/OpenFirstMatchingCard.gd @@ -1,7 +1,7 @@ class_name OpenFirstMatchingCard extends AiBehaviorNode -func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: - return grid.get_all_cards_currently_turned().size() == 0 and _blackboard_contains_identical_cards(blackboard) +func can_execute(blackboard: Blackboard, grid: CardInteractionField) -> bool: + return grid.get_all_disabled_cards().size() == 0 and _blackboard_contains_identical_cards(blackboard) func _get_blackboard_identical_cards(blackboard: Blackboard) -> Array[CardInformationResource]: var known_cards: Array[CardInformationResource] = blackboard.get_all_saved_cards() @@ -16,7 +16,7 @@ func _get_blackboard_identical_cards(blackboard: Blackboard) -> Array[CardInform func _blackboard_contains_identical_cards(blackboard: Blackboard) -> bool: return _get_blackboard_identical_cards(blackboard).size() > 0 -func execute_action(blackboard: Blackboard, grid: GameCardGrid) -> void: +func execute_action(blackboard: Blackboard, grid: CardInteractionField) -> void: print_debug("OpenFirstMatchingCard") var cards: Array[CardInformationResource] = _get_blackboard_identical_cards(blackboard) var index: int = randi_range(0, cards.size() - 1) diff --git a/shared/entities/ai_behavior/resources/behaviors/OpenLastRevealedCard.gd b/shared/entities/ai_behavior/resources/behaviors/OpenLastRevealedCard.gd index a0cbdb8..1cc7d27 100644 --- a/shared/entities/ai_behavior/resources/behaviors/OpenLastRevealedCard.gd +++ b/shared/entities/ai_behavior/resources/behaviors/OpenLastRevealedCard.gd @@ -1,6 +1,6 @@ class_name OpenLastRevealedCard extends AiBehaviorNode -func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: +func can_execute(blackboard: Blackboard, grid: CardInteractionField) -> bool: var all_card_positions: Array[Vector2i] = grid.get_all_card_positions(false) if blackboard.get_last_saved_card() != null and all_card_positions.size() % 2 == 0: for card_position: Vector2i in all_card_positions: @@ -8,7 +8,7 @@ func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: return true return false -func execute_action(blackboard: Blackboard, grid: GameCardGrid) -> void: +func execute_action(blackboard: Blackboard, grid: CardInteractionField) -> void: print_debug("OpenLastRevealedCard") var card: CardInformationResource = blackboard.get_last_saved_card() _trigger_card(card.position, blackboard, grid) diff --git a/shared/entities/ai_behavior/resources/behaviors/OpenRandomBlackboardCard.gd b/shared/entities/ai_behavior/resources/behaviors/OpenRandomBlackboardCard.gd index c025880..cd18710 100644 --- a/shared/entities/ai_behavior/resources/behaviors/OpenRandomBlackboardCard.gd +++ b/shared/entities/ai_behavior/resources/behaviors/OpenRandomBlackboardCard.gd @@ -3,13 +3,13 @@ class_name OpenRandomBlackBoardCard extends AiBehaviorNode @export var backup_action: AiBehaviorNode var attempts: int = 0 -func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: +func can_execute(blackboard: Blackboard, grid: CardInteractionField) -> bool: if blackboard.cards_remembered() == 0 or grid.get_all_card_positions(false).size() % 2 == 1: return false attempts = 0 return true -func execute_action(blackboard: Blackboard, grid: GameCardGrid) -> void: +func execute_action(blackboard: Blackboard, grid: CardInteractionField) -> void: print_debug("OpenRandomBlackBoardCard") var card: CardInformationResource = blackboard.get_random_known_card_from_storage() if !_trigger_card(card.position, blackboard, grid) and blackboard.cards_remembered() > 1 and attempts < 5: diff --git a/shared/entities/ai_behavior/resources/behaviors/OpenRandomCard.gd b/shared/entities/ai_behavior/resources/behaviors/OpenRandomCard.gd index e2b497b..2e46326 100644 --- a/shared/entities/ai_behavior/resources/behaviors/OpenRandomCard.gd +++ b/shared/entities/ai_behavior/resources/behaviors/OpenRandomCard.gd @@ -1,11 +1,11 @@ class_name OpenRandomCard extends AiBehaviorNode -func can_execute(_blackboard: Blackboard, grid: GameCardGrid) -> bool: +func can_execute(_blackboard: Blackboard, grid: CardInteractionField) -> bool: if grid.get_all_card_positions(false).size() > 0: return true return false -func execute_action(blackboard: Blackboard, grid: GameCardGrid) -> void: +func execute_action(blackboard: Blackboard, grid: CardInteractionField) -> void: print_debug("OpenRandomCard") var card_positions: Array[Vector2i] = grid.get_all_card_positions(false) var index: int = randi() % card_positions.size() diff --git a/shared/entities/ai_behavior/resources/behaviors/OpenUnknownCard.gd b/shared/entities/ai_behavior/resources/behaviors/OpenUnknownCard.gd index 667c974..a6d9a2a 100644 --- a/shared/entities/ai_behavior/resources/behaviors/OpenUnknownCard.gd +++ b/shared/entities/ai_behavior/resources/behaviors/OpenUnknownCard.gd @@ -1,11 +1,11 @@ class_name OpenUnknownCard extends AiBehaviorNode -func can_execute(blackboard: Blackboard, grid: GameCardGrid) -> bool: +func can_execute(blackboard: Blackboard, grid: CardInteractionField) -> bool: var unknown_card_positions: Array[Vector2i] = get_all_unknown_card_positions(blackboard, grid) return unknown_card_positions.size() > 0 -func get_all_unknown_card_positions(blackboard: Blackboard, grid: GameCardGrid) -> Array[Vector2i]: +func get_all_unknown_card_positions(blackboard: Blackboard, grid: CardInteractionField) -> Array[Vector2i]: var return_data: Array[Vector2i] = [] var all_positions: Array[Vector2i] = grid.get_all_card_positions() var known_positions: Array[CardInformationResource] = blackboard.get_all_saved_cards() @@ -17,7 +17,7 @@ func get_all_unknown_card_positions(blackboard: Blackboard, grid: GameCardGrid) return return_data -func execute_action(blackboard: Blackboard, grid: GameCardGrid) -> void: +func execute_action(blackboard: Blackboard, grid: CardInteractionField) -> void: print_debug("OpenUnknownCard") var cards: Array[Vector2i] = get_all_unknown_card_positions(blackboard, grid) var card_index: int = randi_range(0, cards.size() - 1) diff --git a/shared/entities/ai_difficulty/resources/AiDifficultyResource.gd b/shared/entities/ai_difficulty/resources/AiDifficultyResource.gd index dd334bf..4b2a4d2 100644 --- a/shared/entities/ai_difficulty/resources/AiDifficultyResource.gd +++ b/shared/entities/ai_difficulty/resources/AiDifficultyResource.gd @@ -21,7 +21,7 @@ func _get_personality() -> AIPersonality: return _personality -func execute_action(grid: GameCardGrid) -> void: +func execute_action(grid: CardInteractionField) -> void: var actions: Array[AiBehaviorNode] = _get_personality().get_actions() var possible_actions: Array[AiBehaviorNode] = actions.filter(func(current_action: AiBehaviorNode) -> bool: return current_action.can_execute(blackboard, grid)) var loot_table: LootTable = LootTable.new()