Compare commits
3 Commits
e36bbd36dc
...
7d5f91adcb
Author | SHA1 | Date |
---|---|---|
|
7d5f91adcb | |
|
5c0fc2beed | |
|
30ee500ae9 |
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=16 format=4 uid="uid://b88asko1ugyd2"]
|
||||
[gd_scene load_steps=25 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"]
|
||||
|
@ -14,7 +14,16 @@
|
|||
[ext_resource type="Script" path="res://scripts/player/tree/impl/base/GoToWhileRunningSuccessStop.gd" id="10_4v1m1"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/inventory/TaskEatFoodFromInventory.gd" id="10_70s0w"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/critical_survival/TaskCheckFoodCritical.gd" id="10_sf2pi"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/inventory/TaskPickupBerry.gd" id="13_mljce"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/critical_survival/TaskFindClosestFood.gd" id="13_60fwc"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/inventory/TaskPickupTheBerry.gd" id="15_ccdxl"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/critical_survival/TaskCheckTemperatureCold.gd" id="16_e38ya"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/critical_survival/TaskCheckTemperatureNoBuff.gd" id="17_4plsj"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/inventory/TaskUseStickFromInventory.gd" id="18_22dkn"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/critical_survival/TaskFindClosestStick.gd" id="19_1orqu"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/base/GoToRunning.gd" id="20_6aw6j"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/inventory/TaskPickupStick.gd" id="20_uw2ce"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/camp/TaskFindCamp.gd" id="21_cseat"]
|
||||
[ext_resource type="Script" path="res://scripts/player/tree/impl/game/critical_survival/TaskFindClosestWarmTile.gd" id="21_np756"]
|
||||
|
||||
[node name="Island-scene" type="Node2D"]
|
||||
script = ExtResource("1_eeg2d")
|
||||
|
@ -99,7 +108,7 @@ tile_map_data = PackedByteArray("AAAOAAkAAQACAAAAAAANAAkAAQACAAAAAAANAAoAAQACAAA
|
|||
tile_set = ExtResource("1_vlccq")
|
||||
|
||||
[node name="InteractiveObjectsLayer" type="TileMapLayer" parent="Tileset"]
|
||||
tile_map_data = PackedByteArray("AAAKABkAAQAAAAQAAAAUAAYAAQADAAEAAAAXAAYAAQADAAAAAAAJAAkAAQADAAEAAAAFAAgAAQADAAEAAAAFAAwAAQADAAEAAAAJAAwAAQADAAEAAAAYABAAAQACAAQAAAARAAYAAQAEAAAAAAARABEAAQAGAAIAAAAQABEAAQAGAAEAAAAcABUAAQABAAEAAABCACMAAQACAAEAAABdAAkAAQACAAIAAABXADMAAQABAAIAAAA7ADUAAQADAAIAAAA8AAQAAQAEAAIAAAA=")
|
||||
tile_map_data = PackedByteArray("AAAKABkAAQAAAAQAAAAUAAYAAQADAAEAAAAXAAYAAQADAAAAAAAJAAkAAQADAAEAAAAFAAgAAQADAAEAAAAFAAwAAQADAAEAAAAJAAwAAQADAAEAAAAYABAAAQACAAQAAAARABEAAQAGAAIAAAAQABEAAQAGAAEAAAAcABUAAQABAAEAAABCACMAAQACAAEAAABdAAkAAQACAAIAAABXADMAAQABAAIAAAA7ADUAAQADAAIAAAA8AAQAAQAEAAIAAAAPAAkAAQAEAAAAAAA=")
|
||||
tile_set = ExtResource("1_vlccq")
|
||||
|
||||
[node name="PlayerLayer" type="TileMapLayer" parent="Tileset"]
|
||||
|
@ -107,7 +116,7 @@ tile_map_data = PackedByteArray("AAAQAA4AAwAAAAAAAAA=")
|
|||
tile_set = ExtResource("1_vlccq")
|
||||
|
||||
[node name="TemperatureLayer" type="TileMapLayer" parent="Tileset"]
|
||||
tile_map_data = PackedByteArray("AAAAAAAAAgABAAAAAAAsAAYAAgABAAAAAAApAAYAAgABAAAAAAAqAAYAAgABAAAAAAArAAYAAgABAAAAAAAtAAYAAgABAAAAAAAuAAYAAgABAAAAAAAvAAYAAgABAAAAAAAwAAYAAgABAAAAAAAwAAcAAgABAAAAAAAvAAcAAgABAAAAAAAuAAcAAgABAAAAAAAtAAcAAgABAAAAAAAsAAcAAgABAAAAAAArAAcAAgABAAAAAAAqAAcAAgABAAAAAAAqAAgAAgABAAAAAAAqAAkAAgABAAAAAAArAAkAAgABAAAAAAAsAAkAAgABAAAAAAAtAAkAAgABAAAAAAAuAAkAAgABAAAAAAAuAAgAAgABAAAAAAAvAAgAAgABAAAAAAAwAAgAAgABAAAAAAAtAAgAAgABAAAAAAAsAAgAAgABAAAAAAArAAgAAgABAAAAAAA=")
|
||||
tile_map_data = PackedByteArray("AAAAAAAAAgABAAAAAAAsAAYAAgABAAAAAAApAAYAAgABAAAAAAAqAAYAAgABAAAAAAArAAYAAgABAAAAAAAtAAYAAgABAAAAAAAuAAYAAgABAAAAAAAvAAYAAgABAAAAAAAwAAYAAgABAAAAAAAwAAcAAgABAAAAAAAvAAcAAgABAAAAAAAuAAcAAgABAAAAAAAtAAcAAgABAAAAAAAsAAcAAgABAAAAAAArAAcAAgABAAAAAAAqAAcAAgABAAAAAAAqAAgAAgABAAAAAAAqAAkAAgABAAAAAAArAAkAAgABAAAAAAAsAAkAAgABAAAAAAAtAAkAAgABAAAAAAAuAAkAAgABAAAAAAAuAAgAAgABAAAAAAAvAAgAAgABAAAAAAAwAAgAAgABAAAAAAAtAAgAAgABAAAAAAAsAAgAAgABAAAAAAArAAgAAgABAAAAAAALAAsAAgAAAAAAAAALAAwAAgAAAAAAAAALAA0AAgAAAAAAAAALAA4AAgAAAAAAAAALAA8AAgAAAAAAAAALABAAAgAAAAAAAAALABEAAgAAAAAAAAAMAAsAAgAAAAAAAAAMAAwAAgAAAAAAAAAMAA0AAgAAAAAAAAAMAA4AAgAAAAAAAAAMAA8AAgAAAAAAAAAMABAAAgAAAAAAAAAMABEAAgAAAAAAAAANAAsAAgAAAAAAAAANAAwAAgAAAAAAAAANAA0AAgAAAAAAAAANAA4AAgAAAAAAAAANAA8AAgAAAAAAAAANABAAAgAAAAAAAAANABEAAgAAAAAAAAAOAAsAAgAAAAAAAAAOAAwAAgAAAAAAAAAOAA0AAgABAAAAAAAOAA4AAgABAAAAAAAOAA8AAgABAAAAAAAOABAAAgABAAAAAAAOABEAAgAAAAAAAAAPAAsAAgAAAAAAAAAPAAwAAgAAAAAAAAAPAA0AAgABAAAAAAAPAA4AAgABAAAAAAAPAA8AAgABAAAAAAAPABAAAgABAAAAAAAPABEAAgAAAAAAAAAQAAsAAgAAAAAAAAAQAAwAAgAAAAAAAAAQAA0AAgABAAAAAAAQAA4AAgABAAAAAAAQAA8AAgABAAAAAAAQABAAAgABAAAAAAAQABEAAgAAAAAAAAARAAsAAgAAAAAAAAARAAwAAgAAAAAAAAARAA0AAgABAAAAAAARAA4AAgABAAAAAAARAA8AAgABAAAAAAARABAAAgABAAAAAAARABEAAgAAAAAAAAASAAsAAgAAAAAAAAASAAwAAgAAAAAAAAASAA0AAgABAAAAAAASAA4AAgABAAAAAAASAA8AAgABAAAAAAASABAAAgABAAAAAAASABEAAgAAAAAAAAATAAsAAgAAAAAAAAATAAwAAgAAAAAAAAATAA0AAgAAAAAAAAATAA4AAgAAAAAAAAATAA8AAgAAAAAAAAATABAAAgAAAAAAAAATABEAAgAAAAAAAAAUAAsAAgAAAAAAAAAUAAwAAgAAAAAAAAAUAA0AAgAAAAAAAAAUAA4AAgAAAAAAAAAUAA8AAgAAAAAAAAAUABAAAgAAAAAAAAAUABEAAgAAAAAAAAAVAAsAAgAAAAAAAAAVAAwAAgAAAAAAAAAVAA0AAgAAAAAAAAAVAA4AAgAAAAAAAAAVAA8AAgAAAAAAAAAVABAAAgAAAAAAAAAVABEAAgAAAAAAAAA=")
|
||||
tile_set = ExtResource("1_vlccq")
|
||||
|
||||
[node name="NavigationVisualization" type="TileMapLayer" parent="Tileset"]
|
||||
|
@ -129,26 +138,80 @@ script = ExtResource("7_1jajd")
|
|||
[node name="sl_CriticalSurvival" type="Node" parent="PlayerManager/BehaviorTree/sl_Root"]
|
||||
script = ExtResource("7_1jajd")
|
||||
|
||||
[node name="sl_Food" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival"]
|
||||
script = ExtResource("7_1jajd")
|
||||
|
||||
[node name="sq_FoodInInventory" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Food"]
|
||||
[node name="sq_Food" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskEatFoodFromInventory" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Food/sq_FoodInInventory"]
|
||||
script = ExtResource("10_70s0w")
|
||||
|
||||
[node name="sq_NextFood" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Food"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskCheckFoodCritical" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Food/sq_NextFood"]
|
||||
[node name="TaskCheckFoodCritical" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food"]
|
||||
script = ExtResource("10_sf2pi")
|
||||
|
||||
[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Food/sq_NextFood"]
|
||||
[node name="sl_PickMostRelevantFoodSource" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food"]
|
||||
script = ExtResource("7_1jajd")
|
||||
|
||||
[node name="sq_FoodInInventory" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food/sl_PickMostRelevantFoodSource"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskEatFoodFromInventory" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food/sl_PickMostRelevantFoodSource/sq_FoodInInventory"]
|
||||
script = ExtResource("10_70s0w")
|
||||
|
||||
[node name="sq_NextFood" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food/sl_PickMostRelevantFoodSource"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskFindClosestFood" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food/sl_PickMostRelevantFoodSource/sq_NextFood"]
|
||||
script = ExtResource("13_60fwc")
|
||||
|
||||
[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food/sl_PickMostRelevantFoodSource/sq_NextFood"]
|
||||
script = ExtResource("10_4v1m1")
|
||||
|
||||
[node name="TaskPickupBerry" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sl_Food/sq_NextFood"]
|
||||
script = ExtResource("13_mljce")
|
||||
[node name="TaskPickupTheBerry" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Food/sl_PickMostRelevantFoodSource/sq_NextFood"]
|
||||
script = ExtResource("15_ccdxl")
|
||||
|
||||
[node name="sq_Temperature" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskCheckTemperatureCold" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature"]
|
||||
script = ExtResource("16_e38ya")
|
||||
|
||||
[node name="TaskCheckTemperatureNoBuff" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature"]
|
||||
script = ExtResource("17_4plsj")
|
||||
|
||||
[node name="sl_PickMostRelevantTemperatureRemediation" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature"]
|
||||
script = ExtResource("7_1jajd")
|
||||
|
||||
[node name="sq_HasStick" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskUseStickFromInventory" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_HasStick"]
|
||||
script = ExtResource("18_22dkn")
|
||||
|
||||
[node name="sq_DoesNotHaveStick" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskFindClosestStick" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_DoesNotHaveStick"]
|
||||
script = ExtResource("19_1orqu")
|
||||
|
||||
[node name="GoToRunning" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_DoesNotHaveStick"]
|
||||
script = ExtResource("20_6aw6j")
|
||||
|
||||
[node name="TaskPickupStick" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_DoesNotHaveStick"]
|
||||
script = ExtResource("20_uw2ce")
|
||||
|
||||
[node name="sq_LeaveColdArea" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskFindClosestWarmTile" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_LeaveColdArea"]
|
||||
script = ExtResource("21_np756")
|
||||
|
||||
[node name="GoToWhileRunningSuccessStop" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_LeaveColdArea"]
|
||||
script = ExtResource("10_4v1m1")
|
||||
|
||||
[node name="sq_GoBackToCamp" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation"]
|
||||
script = ExtResource("9_i67mw")
|
||||
|
||||
[node name="TaskFindCamp" type="Node" parent="PlayerManager/BehaviorTree/sl_Root/sl_CriticalSurvival/sq_Temperature/sl_PickMostRelevantTemperatureRemediation/sq_GoBackToCamp"]
|
||||
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="WalkUpToMouse" type="Node" parent="PlayerManager/BehaviorTree/sl_Root"]
|
||||
script = ExtResource("8_s6mqc")
|
||||
|
|
|
@ -107,4 +107,3 @@ key_6={
|
|||
textures/canvas_textures/default_texture_filter=0
|
||||
renderer/rendering_method="gl_compatibility"
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
||||
environment/defaults/default_clear_color=Color(0.356863, 0.431373, 0.882353, 1)
|
||||
|
|
|
@ -5,8 +5,8 @@ extends Camera2D
|
|||
|
||||
@export var border_acceleration: float = 2000.0
|
||||
@export var max_speed: float = 500.0
|
||||
@export var inner_border_threshold: float = 60.0
|
||||
@export var outer_border_threshold: float = 40.0
|
||||
@export var inner_border_threshold: float = 0.0 # 60.0
|
||||
@export var outer_border_threshold: float = 0.0 # 40.0
|
||||
@export var min_position: Vector2 = Vector2(0, 0)
|
||||
@export var max_position: Vector2 = Vector2(1375, 660)
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ var tilemap_types: TileMapTileTypes = TileMapTileTypes.new()
|
|||
@onready var player: PlayerManager = $PlayerManager
|
||||
@onready var camera: CameraController = $Camera2D as CameraController
|
||||
@onready var game_ticker: Timer = $GameTick
|
||||
#
|
||||
@onready var health_bar: ProgressBar = $Camera2D/CanvasLayer/VBoxContainer/HealthBar
|
||||
@onready var food_bar: ProgressBar = $Camera2D/CanvasLayer/VBoxContainer/FoodBar
|
||||
@onready var temperature_bar: ProgressBar = $Camera2D/CanvasLayer/VBoxContainer/TemperatureBar
|
||||
|
@ -57,27 +58,26 @@ func _on_game_tick_timeout() -> void:
|
|||
player.game_tick()
|
||||
tilemap_navigation.game_tick_end()
|
||||
world.step_visualizer.game_tick_end()
|
||||
timer_on_game_tick_timeout.stop()
|
||||
update_bars()
|
||||
timer_on_game_tick_timeout.stop()
|
||||
|
||||
|
||||
func update_bars() -> void:
|
||||
if health_bar != null:
|
||||
health_bar.max_value = player.max_health
|
||||
health_bar.value = clamp(player.health, 0, player.max_health)
|
||||
$Camera2D/CanvasLayer/HealthLabel.text = str(player.health) + "/" + str(player.max_health)
|
||||
$Camera2D/CanvasLayer/HealthLabel.text = str(health_bar.value) + "/" + str(player.max_health)
|
||||
$Camera2D/CanvasLayer/HealthLabel.add_theme_color_override("font_color", Color(1, 1, 1))
|
||||
|
||||
if food_bar != null:
|
||||
food_bar.max_value = player.max_food
|
||||
food_bar.value = clamp(player.food, 0, player.max_food)
|
||||
$Camera2D/CanvasLayer/FoodLabel.text = str(player.food) + "/" + str(player.max_food)
|
||||
$Camera2D/CanvasLayer/FoodLabel.text = str(food_bar.value) + "/" + str(player.max_food)
|
||||
|
||||
if temperature_bar != null:
|
||||
var temperature_value = player.temperature_endure - player.temperature_timer
|
||||
temperature_bar.max_value = player.temperature_endure
|
||||
temperature_bar.value = clamp(temperature_value, 0, player.temperature_endure)
|
||||
$Camera2D/CanvasLayer/TemperatureLabel.text = str(player.temperature_endure) + "/" + str(player.max_temperature)
|
||||
temperature_bar.max_value = player.temperature_set_buff_value
|
||||
temperature_bar.value = clamp(player.temperature_buff_timer, 0, player.temperature_set_buff_value)
|
||||
$Camera2D/CanvasLayer/TemperatureLabel.text = str(temperature_bar.value) + "/" + str(player.temperature_set_buff_value)
|
||||
|
||||
|
||||
func toggle_temperature_layer() -> void:
|
||||
|
|
|
@ -10,8 +10,7 @@ extends Node
|
|||
@export var food_addon_per_berry: int = 100
|
||||
@export var food_critical_threshold: int = 50
|
||||
# temperature
|
||||
@export var max_temperature: int = 50
|
||||
@export var temperature: int
|
||||
@export var temperature_set_buff_value: int = 50
|
||||
@export var temperature_damage: int = 1
|
||||
@export var temperature_endure: int = 50
|
||||
# viewing
|
||||
|
@ -32,6 +31,7 @@ var board_position: Vector2i = Vector2i(0, 0):
|
|||
|
||||
var food: int = max_food
|
||||
# var water: int = 0
|
||||
var temperature_buff_timer: int = 0
|
||||
var temperature_timer: int = 0
|
||||
var health: int = max_health
|
||||
|
||||
|
@ -94,10 +94,14 @@ func pick_up_item(tilemap_pos: Vector2i) -> void:
|
|||
# check if tile will transform into another tile upon pickup
|
||||
var tile_after_pickup_transform = null
|
||||
var tile_drop_item: Vector2i = inventory_slot
|
||||
if tilemap_types.OBJECT_I_FILLED_BUSH == pick_up_item_type:
|
||||
if pick_up_item_type == tilemap_types.OBJECT_I_FILLED_BUSH:
|
||||
tile_after_pickup_transform = tilemap_types.OBJECT_I_EMPTY_BUSH
|
||||
pick_up_item_type = tilemap_types.OBJECT_I_BERRY
|
||||
tile_drop_item = tilemap_types.OBJECT_I_BERRY
|
||||
if pick_up_item_type == tilemap_types.OBJECT_I_TREE_FULL:
|
||||
tile_after_pickup_transform = tilemap_types.OBJECT_I_TREE_CUT
|
||||
pick_up_item_type = tilemap_types.OBJECT_I_STICK
|
||||
tile_drop_item = tilemap_types.OBJECT_I_STICK
|
||||
|
||||
# check if the inventory slot is empty
|
||||
if inventory_slot == tilemap_types.EMPTY:
|
||||
|
@ -135,7 +139,17 @@ func walk_towards(position: Vector2i) -> void:
|
|||
|
||||
func walk_along(path: Array[Vector2i]) -> void:
|
||||
if len(path) > 1:
|
||||
var next_position: Vector2i = path[1]
|
||||
|
||||
var next_position: Vector2i
|
||||
if path.has(board_position):
|
||||
var current_index: int = path.find(board_position)
|
||||
if current_index < path.size() - 1:
|
||||
next_position = path[current_index + 1]
|
||||
else:
|
||||
next_position = path[1]
|
||||
else:
|
||||
next_position = path[1]
|
||||
|
||||
var direction: Vector2i = find_direction(board_position, next_position)
|
||||
move_player(direction)
|
||||
game_manager.tilemap_navigation.chosen_path = path
|
||||
|
@ -191,6 +205,10 @@ func find_direction(pos_a: Vector2i, pos_b: Vector2i) -> Vector2i:
|
|||
|
||||
# SECTION: game tick
|
||||
|
||||
func get_current_temperature() -> int:
|
||||
return game_manager.world.tilemap_temperature.get_custom_data(board_position, "temperature", 0) as int
|
||||
|
||||
|
||||
func tick_handle_temperature(cell_temperature: int):
|
||||
if cell_temperature == 0:
|
||||
temperature_timer = 0
|
||||
|
@ -209,14 +227,7 @@ func tick_handle_food():
|
|||
func game_tick() -> void:
|
||||
behavior_tree.game_tick()
|
||||
|
||||
var player_positon_array: Array[Vector2i] = game_manager.world.tilemap_player.get_cells_by_type(tilemap_types.PLAYER_DOWN)
|
||||
if len(player_positon_array) > 0:
|
||||
var player_positon: Vector2i = player_positon_array[0]
|
||||
var cell_temperature: int = game_manager.world.tilemap_temperature.get_custom_data(player_positon, "temperature", 0) as int
|
||||
tick_handle_temperature(cell_temperature)
|
||||
else:
|
||||
push_error("No player found on tilemap")
|
||||
|
||||
tick_handle_temperature(get_current_temperature())
|
||||
tick_handle_food()
|
||||
|
||||
if health < 0:
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
class_name TaskFindCamp
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var world: World = blackboard["world"]
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
var navigation: TilemapNavigation = blackboard["navigation"]
|
||||
|
||||
blackboard["location_camp"] = world.camp_manager.camp
|
||||
|
||||
var path: Array[Vector2i] = navigation.find_path_allow_neighbors(player.board_position, world.camp_manager.camp, 99999999)
|
||||
if path.size() > 0:
|
||||
blackboard["path"] = path
|
||||
status = SUCCESS
|
||||
status_reason = "Found camp at " + str(blackboard["location_camp"])
|
||||
return
|
||||
|
||||
status = FAILURE
|
||||
status_reason = "No path found to camp " + str(blackboard["location_camp"])
|
|
@ -11,27 +11,5 @@ func run(blackboard: Dictionary) -> void:
|
|||
status_reason = "Player food is not critical (" + str(player.food) + " > " + str(player.food_critical_threshold) + ")"
|
||||
return
|
||||
|
||||
var active_foods: Array[Vector2i] = world.tilemap_interactive.get_cells_by_type_collection(
|
||||
tilemap_types.OBJECT_COLLECTION_BERRY_SOURCE, player.board_position, player.view_distance)
|
||||
if len(active_foods) == 0:
|
||||
status = FAILURE
|
||||
status_reason = "No active foods found"
|
||||
return
|
||||
|
||||
var closest_berry: Vector2i = navigation.manhattan_distance_closest(active_foods, player.board_position)
|
||||
if closest_berry == tilemap_types.NO_TILE_FOUND:
|
||||
status = FAILURE
|
||||
status_reason = "No closest berry found"
|
||||
return
|
||||
|
||||
blackboard["closest_berry"] = closest_berry
|
||||
|
||||
var path: Array[Vector2i] = navigation.find_path_allow_neighbors(player.board_position, closest_berry, player.view_distance)
|
||||
if path.size() > 0:
|
||||
blackboard["path"] = path
|
||||
status_reason = "Found path to closest berry"
|
||||
status = SUCCESS
|
||||
return
|
||||
|
||||
status = FAILURE
|
||||
status_reason = "No path found to closest berry " + str(closest_berry)
|
||||
status_reason = "Player food is critical (" + str(player.food) + " <= " + str(player.food_critical_threshold) + ")"
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
class_name TaskCheckTemperatureCold
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
|
||||
if player.get_current_temperature() > 0:
|
||||
status = SUCCESS
|
||||
status_reason = "cold: " + str(player.get_current_temperature())
|
||||
return
|
||||
|
||||
status = FAILURE
|
||||
status_reason = "not cold: " + str(player.get_current_temperature())
|
|
@ -0,0 +1,13 @@
|
|||
class_name TaskCheckTemperatureNoBuff
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
|
||||
if player.temperature_buff_timer > 0:
|
||||
status = FAILURE
|
||||
status_reason = "Player already has a temperature buff: " + str(player.temperature_buff_timer)
|
||||
return
|
||||
|
||||
status = SUCCESS
|
||||
status_reason = "Player does not have a temperature buff"
|
|
@ -0,0 +1,32 @@
|
|||
class_name TaskFindClosestFood
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var world: World = blackboard["world"]
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
var navigation: TilemapNavigation = blackboard["navigation"]
|
||||
|
||||
var active_foods: Array[Vector2i] = world.tilemap_interactive.get_cells_by_type_collection(
|
||||
tilemap_types.OBJECT_COLLECTION_BERRY_SOURCE, player.board_position, player.view_distance)
|
||||
if len(active_foods) == 0:
|
||||
status = FAILURE
|
||||
status_reason = "No active foods found"
|
||||
return
|
||||
|
||||
var closest_berry: Vector2i = navigation.manhattan_distance_closest(active_foods, player.board_position)
|
||||
if closest_berry == tilemap_types.NO_TILE_FOUND:
|
||||
status = FAILURE
|
||||
status_reason = "No closest berry found"
|
||||
return
|
||||
|
||||
blackboard["closest_berry"] = closest_berry
|
||||
|
||||
var path: Array[Vector2i] = navigation.find_path_allow_neighbors(player.board_position, closest_berry, player.view_distance)
|
||||
if path.size() > 0:
|
||||
blackboard["path"] = path
|
||||
status_reason = "Found path to closest berry"
|
||||
status = SUCCESS
|
||||
return
|
||||
|
||||
status = FAILURE
|
||||
status_reason = "No path found to closest berry " + str(closest_berry)
|
|
@ -0,0 +1,32 @@
|
|||
class_name TaskFindClosestStick
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var world: World = blackboard["world"]
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
var navigation: TilemapNavigation = blackboard["navigation"]
|
||||
|
||||
var sticks: Array[Vector2i] = world.tilemap_interactive.get_cells_by_type_collection(
|
||||
tilemap_types.OBJECT_COLLECTION_STICK_SOURCE, player.board_position, player.view_distance)
|
||||
if len(sticks) == 0:
|
||||
status = FAILURE
|
||||
status_reason = "No active sticks found"
|
||||
return
|
||||
|
||||
var closest_stick: Vector2i = navigation.manhattan_distance_closest(sticks, player.board_position)
|
||||
if closest_stick == tilemap_types.NO_TILE_FOUND:
|
||||
status = FAILURE
|
||||
status_reason = "No closest stick found"
|
||||
return
|
||||
|
||||
blackboard["closest_stick"] = closest_stick
|
||||
|
||||
var path: Array[Vector2i] = navigation.find_path_allow_neighbors(player.board_position, closest_stick, player.view_distance)
|
||||
if path.size() > 0:
|
||||
blackboard["path"] = path
|
||||
status_reason = "Found path to closest stick"
|
||||
status = SUCCESS
|
||||
return
|
||||
|
||||
status = FAILURE
|
||||
status_reason = "No path found to closest stick " + str(closest_stick)
|
|
@ -0,0 +1,32 @@
|
|||
class_name TaskFindClosestWarmTile
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var world: World = blackboard["world"]
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
var navigation: TilemapNavigation = blackboard["navigation"]
|
||||
|
||||
var warm_tiles: Array[Vector2i] = world.tilemap_temperature.get_cells_by_type(
|
||||
tilemap_types.TEMPERATURE_NORMAL, player.board_position, player.view_distance)
|
||||
if len(warm_tiles) == 0:
|
||||
status = FAILURE
|
||||
status_reason = "No warm tiles found"
|
||||
return
|
||||
|
||||
var closest_warm_tile: Vector2i = navigation.manhattan_distance_closest(warm_tiles, player.board_position)
|
||||
if closest_warm_tile == tilemap_types.NO_TILE_FOUND:
|
||||
status = FAILURE
|
||||
status_reason = "No closest warm tile found"
|
||||
return
|
||||
|
||||
blackboard["closest_warm_tile"] = closest_warm_tile
|
||||
|
||||
var path: Array[Vector2i] = navigation.find_path_allow_neighbors(player.board_position, closest_warm_tile, player.view_distance)
|
||||
if path.size() > 0:
|
||||
blackboard["path"] = path
|
||||
status_reason = "Found path to closest warm tile"
|
||||
status = SUCCESS
|
||||
return
|
||||
|
||||
status = FAILURE
|
||||
status_reason = "No path found to closest warm tile " + str(closest_warm_tile)
|
|
@ -0,0 +1,11 @@
|
|||
class_name TaskPickupStick
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
var closest_stick: Vector2i = blackboard["closest_stick"]
|
||||
|
||||
player.pick_up_item(closest_stick)
|
||||
|
||||
status = SUCCESS
|
||||
status_reason = "Picked up stick"
|
|
@ -1,4 +1,4 @@
|
|||
class_name TaskPickupBerry
|
||||
class_name TaskPickupTheBerry
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
|
@ -0,0 +1,15 @@
|
|||
class_name TaskUseStickFromInventory
|
||||
extends Task
|
||||
|
||||
func run(blackboard: Dictionary) -> void:
|
||||
var player: PlayerManager = blackboard["player"]
|
||||
|
||||
if player.inventory_slot != tilemap_types.OBJECT_I_STICK:
|
||||
status = FAILURE
|
||||
status_reason = "Player does not have a stick in inventory"
|
||||
return
|
||||
|
||||
player.inventory_slot = tilemap_types.EMPTY
|
||||
player.temperature_buff_timer = player.temperature_set_buff_value
|
||||
status = SUCCESS
|
||||
status_reason = "Player used a stick from inventory, now has temperature buff: " + str(player.temperature_buff_timer)
|
|
@ -9,8 +9,18 @@ func setup() -> void:
|
|||
pass
|
||||
|
||||
|
||||
func get_cells_by_type(atlas_coords: Vector2i) -> Array[Vector2i]:
|
||||
return tilemap.get_used_cells_by_id(sid, atlas_coords)
|
||||
func get_cells_by_type(
|
||||
atlas_coords: Vector2i,
|
||||
center: Vector2i = Vector2i(-1, -1), max_distance: int = 99999999
|
||||
) -> Array[Vector2i]:
|
||||
var tiles_with_type: Array[Vector2i] = tilemap.get_used_cells_by_id(sid, atlas_coords)
|
||||
if max_distance < 99999999:
|
||||
var filtered_tiles: Array[Vector2i] = []
|
||||
for tile in tiles_with_type:
|
||||
if TilemapNavigation.manhattan_distance(center, tile, true) <= max_distance:
|
||||
filtered_tiles.append(tile)
|
||||
return filtered_tiles
|
||||
return tiles_with_type
|
||||
|
||||
|
||||
func get_cells_by_type_collection(
|
||||
|
|
|
@ -44,6 +44,7 @@ const OBJECT_I_TREE_FULL: Vector2i = Vector2i(4, 0)
|
|||
const OBJECT_I_TREE_CUT: Vector2i = Vector2i(5, 0)
|
||||
# collections
|
||||
const OBJECT_COLLECTION_BERRY_SOURCE: Array[Vector2i] = [OBJECT_I_FILLED_BUSH, OBJECT_I_BERRY]
|
||||
const OBJECT_COLLECTION_STICK_SOURCE: Array[Vector2i] = [OBJECT_I_TREE_FULL, OBJECT_I_STICK]
|
||||
const OBJECT_COLLECTION_FIREPIT: Array[Vector2i] = [OBJECT_I_FIREPIT_OFF, OBJECT_I_FIREPIT_ON]
|
||||
const OBJECT_COLLECTION_BOAT_PARTS: Array[Vector2i] = [ # @formatter:off
|
||||
OBJECT_I_BOAT_PART_GENERIC,
|
||||
|
@ -53,7 +54,7 @@ const OBJECT_COLLECTION_BOAT_PARTS: Array[Vector2i] = [ # @formatter:off
|
|||
] # @formatter:on
|
||||
#
|
||||
# temperature, sid = 2
|
||||
const TEMPERATURE_NORMAL: Vector2i = EMPTY
|
||||
const TEMPERATURE_NORMAL: Vector2i = Vector2i(2, 0)
|
||||
const TEMPERATURE_COLD_1: Vector2i = Vector2i(0, 0)
|
||||
const TEMPERATURE_COLD_2: Vector2i = Vector2i(1, 0)
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue