diff --git a/project/main-scenes/island.tscn b/project/main-scenes/island.tscn index 18354c0..3892ac5 100644 --- a/project/main-scenes/island.tscn +++ b/project/main-scenes/island.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=36 format=4 uid="uid://b88asko1ugyd2"] +[gd_scene load_steps=38 format=4 uid="uid://b88asko1ugyd2"] [ext_resource type="Script" path="res://scripts/global/GameManager.gd" id="1_eeg2d"] [ext_resource type="Script" path="res://scripts/tilemap/World.gd" id="1_k0rw8"] @@ -35,6 +35,8 @@ [ext_resource type="Script" path="res://scripts/player/tree/impl/game/boat/TaskGoToBoatLeaveLocation.gd" id="26_vy1mu"] [ext_resource type="Script" path="res://scripts/player/tree/impl/game/boat/TaskWinningSequence.gd" id="27_4etxm"] [ext_resource type="Script" path="res://scripts/player/tree/impl/game/inventory/TaskPickupBoat.gd" id="27_tmoaj"] +[ext_resource type="Script" path="res://scripts/player/tree/impl/exploration/TaskPlannedExploration.gd" id="35_tfcwq"] +[ext_resource type="Script" path="res://scripts/player/tree/impl/exploration/TaskRandomWalking.gd" id="36_0tfae"] [node name="Island-scene" type="Node2D"] script = ExtResource("1_eeg2d") @@ -150,7 +152,7 @@ tile_map_data = PackedByteArray("AACOAOwAAQADAAAAAACQAO4AAQADAAAAAAC7AKIAAQADAAA tile_set = ExtResource("1_vlccq") [node name="InteractiveObjectsLayer" type="TileMapLayer" parent="Tileset"] -tile_map_data = PackedByteArray("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AADkAAcBAQAEAAAAAADnAPYAAQAEAAAAAADoAAgBAQAEAAAAAADpAP8AAQAEAAAAAADpAA4BAQAEAAAAAADpABMBAQAEAAAAAADqAAEBAQAEAAAAAADqAAYBAQAEAAAAAADrAPgAAQAEAAAAAADrAA0BAQAEAAAAAADtAPsAAQAEAAAAAADuAPYAAQAEAAAAAADvAPYAAQAEAAAAAADyAPIAAQAEAAAAAADzAPYAAQAEAAAAAADtAAMBAQAEAAAAAADvAPoAAQAEAAAAAAD0APgAAQAEAAAAAAD3AAgBAQAEAAAAAAD7AAMBAQAEAAAAAAD9APwAAQAEAAAAAAAAAQkBAQAEAAAAAAAGAQIBAQAEAAAAAAAKAQEBAQAEAAAAAAAMAfsAAQAEAAAAAAAOAf0AAQAEAAAAAACSAOsAAQADAAEAAACaAOwAAQADAAEAAAClAO4AAQADAAEAAACLAKQAAQADAAEAAACPAK0AAQADAAEAAACQAKkAAQADAAEAAACTAK8AAQADAAEAAACaAKcAAQADAAEAAACdAKgAAQADAAEAAACTAMsAAQADAAEAAACVAMIAAQADAAEAAABWALkAAQADAAEAAABcALUAAQADAAEAAABfAKwAAQADAAEAAABdALkAAQADAAEAAABjAM4AAQADAAEAAABlAMgAAQADAAEAAABmAL8AAQADAAEAAABnAL0AAQADAAEAAAA+AHcAAQADAAEAAAA7AI0AAQADAAEAAABBAIsAAQADAAEAAABYAJMAAQADAAEAAABQAIsAAQADAAEAAABYAK0AAQADAAEAAADBAMYAAQADAAEAAADKAMQAAQADAAEAAACwANwAAQADAAEAAAC1ANwAAQADAAEAAAC+AOcAAQADAAEAAADCANIAAQADAAEAAADGANAAAQADAAEAAADPANoAAQADAAEAAADQANUAAQADAAEAAADSAOAAAQADAAEAAADTANYAAQADAAEAAADTAOUAAQADAAEAAACWAOAAAQADAAEAAACjAN8AAQADAAEAAACmAOYAAQADAAEAAACoAOUAAQADAAEAAACyAN0AAQADAAEAAACzAN8AAQADAAEAAACcAIsAAQADAAEAAAClAIwAAQADAAEAAACmAIsAAQADAAEAAACvAI0AAQADAAEAAACnAGQAAQADAAEAAACtAFoAAQADAAEAAACtAF8AAQADAAEAAAC0AGkAAQADAAEAAADmAGoAAQADAAEAAADxAGwAAQADAAEAAAD1AGQAAQADAAEAAAD2AGkAAQADAAEAAAD2AG4AAQADAAEAAAAJAXkAAQADAAEAAAALAYEAAQADAAEAAAD+AHwAAQADAAEAAAD+AIAAAQADAAEAAADiAHkAAQADAAEAAADVAHcAAQADAAEAAADXAIMAAQADAAEAAADYAHYAAQADAAEAAADbAIIAAQADAAEAAADKALYAAQADAAEAAADLALgAAQADAAEAAADMAMEAAQADAAEAAADRALoAAQADAAEAAADTALQAAQADAAEAAADXAMgAAQADAAEAAADbAMQAAQADAAEAAADdALcAAQADAAEAAADdAMAAAQADAAEAAADkALgAAQADAAEAAADlAL0AAQADAAEAAADmAB8BAQADAAEAAADlABcBAQADAAEAAADqABkBAQADAAEAAAARAe0AAQADAAEAAAAjAekAAQADAAEAAAAnAeoAAQADAAEAAAAUAc4AAQADAAEAAAAVAcMAAQADAAEAAAAWAdoAAQADAAEAAAAZAcQAAQADAAEAAAAcAcYAAQADAAEAAAAdAcgAAQADAAEAAAAeAd8AAQADAAEAAAB1ANAAAQADAAEAAAB3AJoAAQADAAEAAABpAJIAAQADAAEAAABrAJUAAQADAAEAAABPAHUAAQADAAEAAABSAHkAAQADAAEAAAA6AIQAAQADAAEAAABsANQAAQADAAEAAABwANAAAQADAAEAAACgAOoAAQADAAEAAACqAAIBAQABAAIAAAAXAQwBAQADAAIAAABdAEsAAQAEAAIAAAAzAG0AAQAEAAIAAADhANUAAQABAAEAAAC5AAkBAQABAAEAAAAWAaEAAQABAAIAAACLADAAAQACAAEAAADeAHMAAQACAAIAAAAQAcMAAQACAAIAAABwAOYAAQACAAQAAACVALwAAQAAAAQAAAA=") +tile_map_data = PackedByteArray("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AADkAAcBAQAEAAAAAADnAPYAAQAEAAAAAADoAAgBAQAEAAAAAADpAP8AAQAEAAAAAADpAA4BAQAEAAAAAADpABMBAQAEAAAAAADqAAEBAQAEAAAAAADqAAYBAQAEAAAAAADrAPgAAQAEAAAAAADrAA0BAQAEAAAAAADtAPsAAQAEAAAAAADuAPYAAQAEAAAAAADvAPYAAQAEAAAAAADyAPIAAQAEAAAAAADzAPYAAQAEAAAAAADtAAMBAQAEAAAAAADvAPoAAQAEAAAAAAD0APgAAQAEAAAAAAD3AAgBAQAEAAAAAAD7AAMBAQAEAAAAAAD9APwAAQAEAAAAAAAAAQkBAQAEAAAAAAAGAQIBAQAEAAAAAAAKAQEBAQAEAAAAAAAMAfsAAQAEAAAAAAAOAf0AAQAEAAAAAACSAOsAAQADAAEAAACaAOwAAQADAAEAAAClAO4AAQADAAEAAACLAKQAAQADAAEAAACPAK0AAQADAAEAAACQAKkAAQADAAEAAACTAK8AAQADAAEAAACaAKcAAQADAAEAAACdAKgAAQADAAEAAACTAMsAAQADAAEAAACVAMIAAQADAAEAAABWALkAAQADAAEAAABcALUAAQADAAEAAABfAKwAAQADAAEAAABdALkAAQADAAEAAABjAM4AAQADAAEAAABlAMgAAQADAAEAAABmAL8AAQADAAEAAABnAL0AAQADAAEAAAA7AI0AAQADAAEAAABBAIsAAQADAAEAAABYAJMAAQADAAEAAABQAIsAAQADAAEAAABYAK0AAQADAAEAAADBAMYAAQADAAEAAADKAMQAAQADAAEAAACwANwAAQADAAEAAAC1ANwAAQADAAEAAAC+AOcAAQADAAEAAADCANIAAQADAAEAAADGANAAAQADAAEAAADPANoAAQADAAEAAADQANUAAQADAAEAAADSAOAAAQADAAEAAADTANYAAQADAAEAAADTAOUAAQADAAEAAACWAOAAAQADAAEAAACjAN8AAQADAAEAAACmAOYAAQADAAEAAACoAOUAAQADAAEAAACyAN0AAQADAAEAAACzAN8AAQADAAEAAACcAIsAAQADAAEAAAClAIwAAQADAAEAAACmAIsAAQADAAEAAACvAI0AAQADAAEAAACnAGQAAQADAAEAAACtAFoAAQADAAEAAACtAF8AAQADAAEAAAC0AGkAAQADAAEAAADmAGoAAQADAAEAAADxAGwAAQADAAEAAAD1AGQAAQADAAEAAAD2AGkAAQADAAEAAAD2AG4AAQADAAEAAAAJAXkAAQADAAEAAAALAYEAAQADAAEAAAD+AHwAAQADAAEAAAD+AIAAAQADAAEAAADiAHkAAQADAAEAAADVAHcAAQADAAEAAADXAIMAAQADAAEAAADYAHYAAQADAAEAAADbAIIAAQADAAEAAADKALYAAQADAAEAAADLALgAAQADAAEAAADMAMEAAQADAAEAAADRALoAAQADAAEAAADTALQAAQADAAEAAADXAMgAAQADAAEAAADbAMQAAQADAAEAAADdALcAAQADAAEAAADdAMAAAQADAAEAAADkALgAAQADAAEAAADlAL0AAQADAAEAAADmAB8BAQADAAEAAADlABcBAQADAAEAAADqABkBAQADAAEAAAARAe0AAQADAAEAAAAjAekAAQADAAEAAAAnAeoAAQADAAEAAAAUAc4AAQADAAEAAAAVAcMAAQADAAEAAAAWAdoAAQADAAEAAAAZAcQAAQADAAEAAAAcAcYAAQADAAEAAAAdAcgAAQADAAEAAAAeAd8AAQADAAEAAAB1ANAAAQADAAEAAAB3AJoAAQADAAEAAABpAJIAAQADAAEAAABrAJUAAQADAAEAAABPAHUAAQADAAEAAABSAHkAAQADAAEAAAA6AIQAAQADAAEAAABsANQAAQADAAEAAABwANAAAQADAAEAAACgAOoAAQADAAEAAACqAAIBAQABAAIAAAAXAQwBAQADAAIAAABdAEsAAQAEAAIAAAAzAG0AAQAEAAIAAADhANUAAQABAAEAAAC5AAkBAQABAAEAAAAWAaEAAQABAAIAAACLADAAAQACAAEAAADeAHMAAQACAAIAAAAQAcMAAQACAAIAAABwAOYAAQACAAQAAACVALwAAQAAAAQAAAA=") tile_set = ExtResource("1_vlccq") [node name="PlayerLayer" type="TileMapLayer" parent="Tileset"] @@ -255,66 +257,90 @@ script = ExtResource("21_cseat") [node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_GoBackToCamp"] script = ExtResource("10_4v1m1") -[node name="sl_Boat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival"] +[node name="sl_Boat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root"] script = ExtResource("7_1jajd") -[node name="sq_BoatLeave" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat"] +[node name="sq_BoatLeave" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat"] script = ExtResource("9_i67mw") -[node name="TaskInventoryContainsBoat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BoatLeave"] +[node name="TaskInventoryContainsBoat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BoatLeave"] script = ExtResource("25_vi38g") -[node name="TaskGoToBoatLeaveLocation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BoatLeave"] +[node name="TaskGoToBoatLeaveLocation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BoatLeave"] script = ExtResource("26_vy1mu") -[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BoatLeave"] +[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BoatLeave"] script = ExtResource("10_4v1m1") -[node name="TaskWinningSequence" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BoatLeave"] +[node name="TaskWinningSequence" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BoatLeave"] script = ExtResource("27_4etxm") -[node name="sq_BuildBoat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat"] +[node name="sq_BuildBoat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat"] script = ExtResource("9_i67mw") -[node name="TaskCheckBoatCompleted" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BuildBoat"] +[node name="TaskCheckBoatCompleted" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BuildBoat"] script = ExtResource("25_krdcp") -[node name="TaskGoToBoatLocation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BuildBoat"] +[node name="TaskGoToBoatLocation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BuildBoat"] script = ExtResource("26_1saby") -[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BuildBoat"] +[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BuildBoat"] script = ExtResource("10_4v1m1") -[node name="TaskPickupBoat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_BuildBoat"] +[node name="TaskPickupBoat" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_BuildBoat"] script = ExtResource("27_tmoaj") -[node name="sq_DeliverBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat"] +[node name="sq_DeliverBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat"] script = ExtResource("9_i67mw") -[node name="TaskInventoryContainsBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_DeliverBoatPart"] +[node name="TaskInventoryContainsBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_DeliverBoatPart"] script = ExtResource("25_pgpdv") -[node name="TaskGoToBoatLocation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_DeliverBoatPart"] +[node name="TaskGoToBoatLocation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_DeliverBoatPart"] script = ExtResource("26_1saby") -[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_DeliverBoatPart"] +[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_DeliverBoatPart"] script = ExtResource("10_4v1m1") -[node name="TaskDeliverBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_DeliverBoatPart"] +[node name="TaskDeliverBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_DeliverBoatPart"] script = ExtResource("26_4pry2") -[node name="sq_PickUpBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat"] +[node name="sq_PickUpBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat"] script = ExtResource("9_i67mw") -[node name="TaskFindClosestBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_PickUpBoatPart"] +[node name="TaskFindClosestBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_PickUpBoatPart"] script = ExtResource("26_043la") -[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_PickUpBoatPart"] +[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_PickUpBoatPart"] script = ExtResource("10_4v1m1") -[node name="TaskPickupBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Boat/sq_PickUpBoatPart"] +[node name="TaskPickupBoatPart" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Boat/sq_PickUpBoatPart"] script = ExtResource("26_hx2yd") +[node name="sl_Exploration" type="Node" parent="PlayerManager/BehaviorTree/sl_Root"] +script = ExtResource("7_1jajd") + +[node name="sq_PlannedExploration" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration"] +script = ExtResource("9_i67mw") + +[node name="TaskPlannedExploration" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration/sq_PlannedExploration"] +script = ExtResource("35_tfcwq") + +[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration/sq_PlannedExploration"] +script = ExtResource("10_4v1m1") + +[node name="sq_GoBackToCamp" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration"] +script = ExtResource("9_i67mw") + +[node name="TaskFindCamp" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration/sq_GoBackToCamp"] +script = ExtResource("21_cseat") + +[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration/sq_GoBackToCamp"] +script = ExtResource("10_4v1m1") + +[node name="TaskRandomWalking" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_Exploration"] +script = ExtResource("36_0tfae") + [node name="WalkUpToMouse" type="Node" parent="PlayerManager/BehaviorTree/sl_Root"] script = ExtResource("8_s6mqc") diff --git a/project/scripts/global/EventsTracker.gd b/project/scripts/global/EventsTracker.gd index a996137..985e48f 100644 --- a/project/scripts/global/EventsTracker.gd +++ b/project/scripts/global/EventsTracker.gd @@ -15,6 +15,9 @@ enum Event { PLAYER_DROPPED_ITEM, PLAYER_USED_ITEM, GAME_STATE_WIN, + NEW_EXPLORATION_GOAL, + EXPLORATION_GOAL_REACHED, + TEMPERATURE_COLD, }; # static var events: Array[TrackedEvent] = [] @@ -74,6 +77,12 @@ static func populate_visual_log_create_label(event: TrackedEvent, container: Con text = "Boat complete" elif event_id == Event.GAME_STATE_WIN: text = "Game won" + elif event_id == Event.NEW_EXPLORATION_GOAL: + text = "New exploration goal " + str(params["goal"]) + elif event_id == Event.EXPLORATION_GOAL_REACHED: + text = "Exploration goal reached " + str(params["goal"]) + elif event_id == Event.TEMPERATURE_COLD: + text = "Temperature is cold: -" + str(params["temperature"]) else: text = "Something happened..." diff --git a/project/scripts/player/tree/impl/exploration/TaskPlannedExploration.gd b/project/scripts/player/tree/impl/exploration/TaskPlannedExploration.gd new file mode 100644 index 0000000..dbf99ad --- /dev/null +++ b/project/scripts/player/tree/impl/exploration/TaskPlannedExploration.gd @@ -0,0 +1,104 @@ +class_name TaskPlannedExploration +extends Task + +var last_goals: Array[Vector2i] = [] +var current_goal: Vector2i = tilemap_types.NO_TILE_FOUND + + +func run(blackboard: Dictionary) -> void: + var world: World = blackboard["world"] + var player: PlayerManager = blackboard["player"] + var navigation: TilemapNavigation = blackboard["navigation"] + + # check if player distance is < 2 to the current goal + if current_goal != tilemap_types.NO_TILE_FOUND: + if TilemapNavigation.manhattan_distance(player.board_position, current_goal) < 3: + EventsTracker.track(EventsTracker.Event.EXPLORATION_GOAL_REACHED, {"goal": current_goal}) + current_goal = tilemap_types.NO_TILE_FOUND + + if current_goal == tilemap_types.NO_TILE_FOUND: + find_new_goal(world, player, navigation) + if current_goal != tilemap_types.NO_TILE_FOUND: + EventsTracker.track(EventsTracker.Event.NEW_EXPLORATION_GOAL, {"goal": current_goal}) + + if current_goal == tilemap_types.NO_TILE_FOUND: + status = Task.FAILURE + status_reason = "No goal found" + return + + StepVisualization.add_circle_tileset(current_goal, 2, StepVisualization.CircleType.GOAL) + StepVisualization.add_line_tileset(player.board_position, current_goal, StepVisualization.LineType.SEARCH_SELECTED) + + var path: Array[Vector2i] = navigation.cached_path_allow_neighbors(blackboard, "exploration_goal", current_goal) + if path.size() == 0: + status = Task.FAILURE + status_reason = "No path found" + return + + blackboard["path"] = path + + status = Task.SUCCESS + status_reason = "goal: " + str(current_goal) + + +func find_new_goal(world: World, player: PlayerManager, navigation: TilemapNavigation) -> void: + if last_goals.size() == 0: + last_goals.append(world.camp_manager.camp) + + # perform search for a new goal X times, pick the one that is furthest away from the last goal + var best_goal: Vector2i = tilemap_types.NO_TILE_FOUND + var best_distance: float = 0 + + for i in range(4): + var goal_consideration: Vector2i = determine_an_interesting_goal(world) + if goal_consideration == tilemap_types.NO_TILE_FOUND: + continue + StepVisualization.add_circle_tileset(goal_consideration, 2, StepVisualization.CircleType.GOAL_CONSIDERATION) + StepVisualization.add_line_tileset(player.board_position, goal_consideration, StepVisualization.LineType.SEARCH_BASE) + + var distance: float = TilemapNavigation.manhattan_distance(goal_consideration, navigation.manhattan_distance_closest(last_goals, goal_consideration)) + if distance > best_distance: + best_goal = goal_consideration + best_distance = distance + + if best_goal != tilemap_types.NO_TILE_FOUND: + last_goals.append(best_goal) + current_goal = best_goal + + +func determine_an_interesting_goal(world: World) -> Vector2i: + # starting from the camp position (world.camp_manager.camp), + # pick a random direction (360 degrees, random on x and y then normalize), + # then step in that direction until the last walkable tile is found + # (if not walkable, check every step for the next 10 tiles again and only stop if none of them are walkable) + # then, pick a random walkable tile in the area around that last walkable tile, + # and check if the player can get there using the navigation system. + + var camp_position: Vector2 = Vector2(world.camp_manager.camp) + var direction: Vector2 = Vector2(randf() * 2 - 1, randf() * 2 - 1).normalized() + + var last_walkable: Vector2i = Vector2i(0, 0) + var iterations_no_walkable: int = 0 + + for i in range(5000): + var check_position: Vector2i = camp_position + (direction * i).floor() + if not world.is_walkable(check_position): + iterations_no_walkable += 1 + else: + iterations_no_walkable = 0 + last_walkable = check_position + + if iterations_no_walkable > 10: + break + + if last_walkable == Vector2i(0, 0): + return tilemap_types.NO_TILE_FOUND + + var picked_goal: Vector2i = Vector2i(0, 0) + for i in range(10): + var check_position: Vector2i = last_walkable + Vector2i(randi_range(-10, 10), randi_range(-10, 10)) + if world.is_walkable(check_position): + picked_goal = check_position + break + + return picked_goal \ No newline at end of file diff --git a/project/scripts/player/tree/impl/exploration/TaskRandomWalking.gd b/project/scripts/player/tree/impl/exploration/TaskRandomWalking.gd new file mode 100644 index 0000000..46d2660 --- /dev/null +++ b/project/scripts/player/tree/impl/exploration/TaskRandomWalking.gd @@ -0,0 +1,14 @@ +class_name TaskRandomWalking +extends Task + +func run(blackboard: Dictionary) -> void: + var player: PlayerManager = blackboard["player"] + var navigation: TilemapNavigation = blackboard["navigation"] + + var direction: Vector2i = navigation.walking_directions[randi() % navigation.walking_directions.size()] + var target: Vector2i = player.board_position + direction + + player.walk_towards(target) + + status = SUCCESS + status_reason = "Walking towards " + str(target) diff --git a/project/scripts/player/tree/impl/game/critical_survival/TaskCheckTemperatureCold.gd b/project/scripts/player/tree/impl/game/critical_survival/TaskCheckTemperatureCold.gd index 5ab5f85..7713ad5 100644 --- a/project/scripts/player/tree/impl/game/critical_survival/TaskCheckTemperatureCold.gd +++ b/project/scripts/player/tree/impl/game/critical_survival/TaskCheckTemperatureCold.gd @@ -1,13 +1,27 @@ class_name TaskCheckTemperatureCold extends Task +var last_temperature: float = 0 + + func run(blackboard: Dictionary) -> void: var player: PlayerManager = blackboard["player"] - if player.get_current_temperature() > 0: + var current_temperature: int = player.get_current_temperature() + + var temperature_changed: bool = current_temperature != last_temperature + var temperature_cold: bool = current_temperature > 0 + + if temperature_changed and temperature_cold: + EventsTracker.track(EventsTracker.Event.TEMPERATURE_COLD, {"temperature": current_temperature}) + + if temperature_changed: + last_temperature = current_temperature + + if temperature_cold: status = SUCCESS - status_reason = "cold: " + str(player.get_current_temperature()) + status_reason = "cold: " + str(current_temperature) return status = FAILURE - status_reason = "not cold: " + str(player.get_current_temperature()) + status_reason = "not cold: " + str(current_temperature) diff --git a/project/scripts/tilemap/StepVisualization.gd b/project/scripts/tilemap/StepVisualization.gd index 65d832d..917061e 100644 --- a/project/scripts/tilemap/StepVisualization.gd +++ b/project/scripts/tilemap/StepVisualization.gd @@ -5,7 +5,7 @@ static var game_manager: GameManager static var world: World # enum LineType { SEARCH_BASE, SEARCH_SELECTED, SEARCH_FAILED } -enum CircleType { PLAYER_VIEW } +enum CircleType { PLAYER_VIEW, GOAL_CONSIDERATION, GOAL } # # Dictionary[Array[Vector2i], LineType] ([from, to], line_type) static var draw_lines: Dictionary = {} @@ -70,3 +70,7 @@ func _draw() -> void: if circle_type == CircleType.PLAYER_VIEW: draw_circle(center, radius, Color("green"), false, 2, true) + elif circle_type == CircleType.GOAL_CONSIDERATION: + draw_circle(center, radius, Color("yellow"), false, 2, true) + elif circle_type == CircleType.GOAL: + draw_circle(center, radius, Color("red"), false, 2, true) diff --git a/project/scripts/tilemap/objects/CampManager.gd b/project/scripts/tilemap/objects/CampManager.gd index 4f0237b..aa13947 100644 --- a/project/scripts/tilemap/objects/CampManager.gd +++ b/project/scripts/tilemap/objects/CampManager.gd @@ -43,7 +43,7 @@ func setup() -> void: else: push_error("No boat leave location found on tilemap") - print("CampManager: camp=", camp, " campfire=", campfire) + print("CampManager: camp=", camp, " campfire=", campfire, " boat_build_location=", boat_build_location, " boat_leave_location=", boat_leave_location) tilemap_interactive.set_cell(campfire, tilemap_types.OBJECT_I_FIREPIT_OFF)