Bush/Tree refill, fast-forward, fixed item drop incorrect item
parent
947b762774
commit
75af4679c0
|
@ -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)
|
"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={
|
key_4={
|
||||||
"deadzone": 0.5,
|
"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)
|
"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)
|
||||||
|
|
|
@ -40,6 +40,8 @@ func _process(delta: float) -> void:
|
||||||
world.camp_manager.campfire_extinguish()
|
world.camp_manager.campfire_extinguish()
|
||||||
if Input.is_action_just_pressed("force_game_tick"):
|
if Input.is_action_just_pressed("force_game_tick"):
|
||||||
_on_game_tick_timeout()
|
_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"):
|
if Input.is_action_just_pressed("key_6"):
|
||||||
toggle_temperature_layer()
|
toggle_temperature_layer()
|
||||||
|
|
||||||
|
@ -52,12 +54,17 @@ func player_health_depleted():
|
||||||
func _on_game_tick_timeout() -> void:
|
func _on_game_tick_timeout() -> void:
|
||||||
var timer_on_game_tick_timeout: PerformanceTimer = PerformanceTimer.new()
|
var timer_on_game_tick_timeout: PerformanceTimer = PerformanceTimer.new()
|
||||||
timer_on_game_tick_timeout.display_name = "game tick duration"
|
timer_on_game_tick_timeout.display_name = "game tick duration"
|
||||||
|
|
||||||
tilemap_navigation.game_tick_start()
|
tilemap_navigation.game_tick_start()
|
||||||
world.step_visualizer.game_tick_start()
|
world.game_tick_start()
|
||||||
|
|
||||||
player.game_tick()
|
player.game_tick()
|
||||||
|
|
||||||
tilemap_navigation.game_tick_end()
|
tilemap_navigation.game_tick_end()
|
||||||
world.step_visualizer.game_tick_end()
|
world.game_tick_end()
|
||||||
|
|
||||||
update_bars()
|
update_bars()
|
||||||
|
|
||||||
timer_on_game_tick_timeout.stop()
|
timer_on_game_tick_timeout.stop()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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)
|
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
|
# check if tile will transform into another tile upon pickup
|
||||||
|
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
|
var tile_after_pickup_transform = null
|
||||||
var tile_drop_item: Vector2i = inventory_slot
|
|
||||||
if pick_up_item_type == tilemap_types.OBJECT_I_FILLED_BUSH:
|
if pick_up_item_type == tilemap_types.OBJECT_I_FILLED_BUSH:
|
||||||
tile_after_pickup_transform = tilemap_types.OBJECT_I_EMPTY_BUSH
|
tile_after_pickup_transform = tilemap_types.OBJECT_I_EMPTY_BUSH
|
||||||
pick_up_item_type = tilemap_types.OBJECT_I_BERRY
|
pick_up_item_type = tilemap_types.OBJECT_I_BERRY
|
||||||
tile_drop_item = tilemap_types.OBJECT_I_BERRY
|
elif pick_up_item_type == tilemap_types.OBJECT_I_TREE_FULL:
|
||||||
if pick_up_item_type == tilemap_types.OBJECT_I_TREE_FULL:
|
|
||||||
tile_after_pickup_transform = tilemap_types.OBJECT_I_TREE_CUT
|
tile_after_pickup_transform = tilemap_types.OBJECT_I_TREE_CUT
|
||||||
pick_up_item_type = tilemap_types.OBJECT_I_STICK
|
pick_up_item_type = tilemap_types.OBJECT_I_STICK
|
||||||
tile_drop_item = tilemap_types.OBJECT_I_STICK
|
tile_drop_item = tilemap_types.OBJECT_I_STICK
|
||||||
|
|
|
@ -65,7 +65,20 @@ func find_path_allow_neighbors(start_position: Vector2i, end_position: Vector2i,
|
||||||
return path
|
return path
|
||||||
|
|
||||||
else:
|
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 neighbor: Vector2i = end_position + direction
|
||||||
var path: Array[Vector2i] = find_path(start_position, neighbor, max_radius)
|
var path: Array[Vector2i] = find_path(start_position, neighbor, max_radius)
|
||||||
if path.size() != 0:
|
if path.size() != 0:
|
||||||
|
|
|
@ -11,6 +11,7 @@ var tilemap_temperature: TileMapLayerAccess = TileMapLayerAccess.new()
|
||||||
var tilemap_nav_vis: TileMapLayerAccess = TileMapLayerAccess.new()
|
var tilemap_nav_vis: TileMapLayerAccess = TileMapLayerAccess.new()
|
||||||
# managers
|
# managers
|
||||||
var camp_manager: CampManager = CampManager.new()
|
var camp_manager: CampManager = CampManager.new()
|
||||||
|
|
||||||
# visualization
|
# visualization
|
||||||
@onready var step_visualizer: StepVisualization = $StepVisualization
|
@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)
|
var interactive_walkable: bool = tilemap_interactive.get_custom_data(position, "walkable", true)
|
||||||
|
|
||||||
return ground_tile_walkable and non_interactive_walkable and interactive_walkable
|
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()
|
||||||
|
|
Loading…
Reference in New Issue