Bush/Tree refill, fast-forward, fixed item drop incorrect item

mapsaving
Yan Wittmann 2025-01-11 14:05:45 +01:00
parent 947b762774
commit 75af4679c0
5 changed files with 56 additions and 6 deletions

View File

@ -81,6 +81,11 @@ force_game_tick={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
]
}
force_game_tick_fast={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":71,"key_label":0,"unicode":103,"location":0,"echo":false,"script":null)
]
}
key_4={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null)

View File

@ -40,6 +40,8 @@ func _process(delta: float) -> void:
world.camp_manager.campfire_extinguish()
if Input.is_action_just_pressed("force_game_tick"):
_on_game_tick_timeout()
if Input.is_action_pressed("force_game_tick_fast"):
_on_game_tick_timeout()
if Input.is_action_just_pressed("key_6"):
toggle_temperature_layer()
@ -52,12 +54,17 @@ func player_health_depleted():
func _on_game_tick_timeout() -> void:
var timer_on_game_tick_timeout: PerformanceTimer = PerformanceTimer.new()
timer_on_game_tick_timeout.display_name = "game tick duration"
tilemap_navigation.game_tick_start()
world.step_visualizer.game_tick_start()
world.game_tick_start()
player.game_tick()
tilemap_navigation.game_tick_end()
world.step_visualizer.game_tick_end()
world.game_tick_end()
update_bars()
timer_on_game_tick_timeout.stop()

View File

@ -91,13 +91,17 @@ func pick_up_item(tilemap_pos: Vector2i) -> void:
var pick_up_item_type: Vector2i = game_manager.world.tilemap_interactive.tilemap.get_cell_atlas_coords(tilemap_pos)
# check if tile will transform into another tile upon pickup
var tile_after_pickup_transform = null
var tile_drop_item: Vector2i = inventory_slot
if tile_drop_item == tilemap_types.OBJECT_I_FILLED_BUSH:
tile_drop_item = tilemap_types.OBJECT_I_BERRY
elif tile_drop_item == tilemap_types.OBJECT_I_TREE_FULL:
tile_drop_item = tilemap_types.OBJECT_I_STICK
var tile_after_pickup_transform = null
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:
elif 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

View File

@ -65,7 +65,20 @@ func find_path_allow_neighbors(start_position: Vector2i, end_position: Vector2i,
return path
else:
for direction in walking_directions:
# be smart about which to check first
var directions: Array[Vector2i] = []
if start_position.y < end_position.y:
directions = [Vector2i(0, -1), Vector2i(-1, 0), Vector2i(1, 0), Vector2i(0, 1)]
elif start_position.y > end_position.y:
directions = [Vector2i(0, 1), Vector2i(-1, 0), Vector2i(1, 0), Vector2i(0, -1)]
elif start_position.x < end_position.x:
directions = [Vector2i(-1, 0), Vector2i(0, -1), Vector2i(0, 1), Vector2i(1, 0)]
elif start_position.x > end_position.x:
directions = [Vector2i(1, 0), Vector2i(0, -1), Vector2i(0, 1), Vector2i(-1, 0)]
else:
directions = walking_directions
for direction in directions:
var neighbor: Vector2i = end_position + direction
var path: Array[Vector2i] = find_path(start_position, neighbor, max_radius)
if path.size() != 0:

View File

@ -11,6 +11,7 @@ var tilemap_temperature: TileMapLayerAccess = TileMapLayerAccess.new()
var tilemap_nav_vis: TileMapLayerAccess = TileMapLayerAccess.new()
# managers
var camp_manager: CampManager = CampManager.new()
# visualization
@onready var step_visualizer: StepVisualization = $StepVisualization
@ -69,3 +70,23 @@ func is_walkable(position: Vector2i) -> bool:
var interactive_walkable: bool = tilemap_interactive.get_custom_data(position, "walkable", true)
return ground_tile_walkable and non_interactive_walkable and interactive_walkable
func game_tick_start() -> void:
step_visualizer.game_tick_start()
# refill empty bushes
var empty_bushes: Array[Vector2i] = tilemap_interactive.get_cells_by_type(tilemap_types.OBJECT_I_EMPTY_BUSH)
for bush in empty_bushes:
if randf() < 0.01:
tilemap_interactive.set_cell(bush, tilemap_types.OBJECT_I_FILLED_BUSH)
# refill empty trees
var empty_trees: Array[Vector2i] = tilemap_interactive.get_cells_by_type(tilemap_types.OBJECT_I_TREE_CUT)
for tree in empty_trees:
if randf() < 0.01:
tilemap_interactive.set_cell(tree, tilemap_types.OBJECT_I_TREE_FULL)
func game_tick_end() -> void:
step_visualizer.game_tick_end()