1
0
Fork 0

Added instructions on how to play during gameplay

Yan Wittmann 2025-01-13 20:12:42 +01:00
parent b187b96507
commit 9822c716f2
6 changed files with 165 additions and 115 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 KiB

After

Width:  |  Height:  |  Size: 474 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://di16cmfomo60u"
path="res://.godot/imported/Intro.png-ef37c38298536b7c161e4863253f3325.ctex"
path="res://.godot/imported/intro.png-5733d5421d999e0273f5c7e8c62d2491.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/images/Intro.png"
dest_files=["res://.godot/imported/Intro.png-ef37c38298536b7c161e4863253f3325.ctex"]
source_file="res://assets/images/intro.png"
dest_files=["res://.godot/imported/intro.png-5733d5421d999e0273f5c7e8c62d2491.ctex"]
[params]

File diff suppressed because one or more lines are too long

View File

@ -76,16 +76,6 @@ key_9={
"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":57,"key_label":0,"unicode":57,"location":0,"echo":false,"script":null)
]
}
force_game_tick={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":84,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
force_game_tick_fast={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"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":0,"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)
@ -106,11 +96,31 @@ key_6={
"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":54,"key_label":0,"unicode":54,"location":0,"echo":false,"script":null)
]
}
force_game_tick={
"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)
]
}
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":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
]
}
auto_tick={
"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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
toggle_graph_edit={
"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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
]
}
toggle_temperature_layer={
"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":84,"key_label":0,"unicode":116,"location":0,"echo":false,"script":null)
]
}
[rendering]

View File

@ -24,159 +24,169 @@ var waiting_for_input: bool = true
func _ready() -> void:
tilemap_navigation.world = world
tilemap_navigation.player = player
player.game_manager = self
world.camp_manager.game_manager = self
world.step_visualizer.game_manager = self
world.step_visualizer.world = world
update_bars()
call_deferred("defer_ready")
tilemap_navigation.world = world
tilemap_navigation.player = player
player.game_manager = self
world.camp_manager.game_manager = self
world.step_visualizer.game_manager = self
world.step_visualizer.world = world
update_bars()
call_deferred("defer_ready")
func defer_ready() -> void:
tree_visualizer.behavior_tree = player.behavior_tree
tree_visualizer.build_tree()
tree_visualizer.behavior_tree = player.behavior_tree
tree_visualizer.build_tree()
intro_image.visible = true
await wait_for_key_press()
get_tree().create_tween().tween_method(set_intro_opacity, 1.0, 0.0, 1.0)
intro_image.visible = true
await wait_for_key_press()
get_tree().create_tween().tween_method(set_intro_opacity, 1.0, 0.0, 1.0)
get_tree().create_tween().tween_method(set_instructions_opacity, 0.0, 1.0, 1.0)
# game_ticker.start()
func _process(delta: float) -> void:
if Input.is_action_just_pressed("force_game_tick"):
Task.print_behavior_tree_evaluation = true
_on_game_tick_timeout()
Task.print_behavior_tree_evaluation = false
if Input.is_action_pressed("force_game_tick_fast"):
_on_game_tick_timeout()
if Input.is_action_just_pressed("key_2"):
toggle_temperature_layer()
camera.print_config()
if Input.is_action_just_pressed("auto_tick"):
if game_ticker.is_stopped():
game_ticker.start()
else:
game_ticker.stop()
if Input.is_action_just_pressed("force_game_tick"):
Task.print_behavior_tree_evaluation = true
_on_game_tick_timeout()
Task.print_behavior_tree_evaluation = false
if Input.is_action_pressed("force_game_tick_fast"):
_on_game_tick_timeout()
if Input.is_action_just_pressed("toggle_temperature_layer"):
toggle_temperature_layer()
camera.print_config()
if Input.is_action_just_pressed("auto_tick"):
if game_ticker.is_stopped():
game_ticker.start()
else:
game_ticker.stop()
if intro_image.is_visible():
intro_image.set_scale(calculate_scale(intro_image.texture.get_size()))
if intro_image.is_visible():
intro_image.set_scale(calculate_scale(intro_image.texture.get_size()))
func calculate_scale(image_size: Vector2) -> Vector2:
var viewport_size: Vector2 = world.get_viewport_rect().size
var scale: float = viewport_size.x / image_size.x
return Vector2(scale, scale)
var viewport_size: Vector2 = world.get_viewport_rect().size
var scale: float = viewport_size.x / image_size.x
return Vector2(scale, scale)
# SECTION: intro
func set_intro_opacity(opacity: float) -> void:
intro_image.set_modulate(Color(1, 1, 1, opacity))
intro_image.set_modulate(Color(1, 1, 1, opacity))
func set_instructions_opacity(opacity: float) -> void:
%InstructionsRect.set_modulate(Color(1, 1, 1, opacity))
%InstructionsRect.show()
# SECTION: game tick
func player_health_depleted():
# TODO
pass
# TODO
pass
func _on_game_tick_timeout() -> void:
var timer_on_game_tick_timeout: PerformanceTimer = PerformanceTimer.new()
timer_on_game_tick_timeout.display_name = "frame"
var timer_on_game_tick_timeout: PerformanceTimer = PerformanceTimer.new()
timer_on_game_tick_timeout.display_name = "frame"
tilemap_navigation.game_tick_start()
world.game_tick_start()
tilemap_navigation.game_tick_start()
world.game_tick_start()
player.game_tick()
player.game_tick()
tree_visualizer.update_task_statuses(player.behavior_tree.blackboard)
tree_visualizer.update_task_statuses(player.behavior_tree.blackboard)
tilemap_navigation.game_tick_end()
world.game_tick_end()
EventsTracker.populate_visual_log(%RecentEventsLog, self)
tilemap_navigation.game_tick_end()
world.game_tick_end()
EventsTracker.populate_visual_log(%RecentEventsLog, self)
update_bars()
handle_result_game_state(player.behavior_tree.blackboard)
update_bars()
handle_result_game_state(player.behavior_tree.blackboard)
if not game_ticker.is_stopped():
camera_follow_player()
if not game_ticker.is_stopped():
camera_follow_player()
timer_on_game_tick_timeout.stop()
timer_on_game_tick_timeout.stop()
func camera_follow_player() -> void:
var player_position: Vector2 = world.tilemap_player.cell_to_local(player.board_position)
var targeted_position = null
var player_position: Vector2 = world.tilemap_player.cell_to_local(player.board_position)
var targeted_position = null
if player.behavior_tree.blackboard.has("path"):
var path: Array = player.behavior_tree.blackboard["path"]
if path.size() > 0:
targeted_position = world.tilemap_player.cell_to_local(path[path.size() - 1])
if player.behavior_tree.blackboard.has("path"):
var path: Array = player.behavior_tree.blackboard["path"]
if path.size() > 0:
targeted_position = world.tilemap_player.cell_to_local(path[path.size() - 1])
if not targeted_position:
camera.go_to(player_position)
return
if not targeted_position:
camera.go_to(player_position)
return
var avg_position = (player_position + targeted_position) / 2
var distance: float = player_position.distance_to(targeted_position)
if distance < 200:
camera.go_to_zooming(avg_position, distance_to_zoom_level(200))
else:
var zoom_level: float = distance_to_zoom_level(distance)
camera.go_to_zooming(avg_position, zoom_level)
var avg_position = (player_position + targeted_position) / 2
var distance: float = player_position.distance_to(targeted_position)
var zoom_level: float
if distance < 200:
zoom_level = distance_to_zoom_level(200)
else:
zoom_level = distance_to_zoom_level(distance)
avg_position.x += distance / 2
camera.go_to_zooming(avg_position, zoom_level)
func distance_to_zoom_level(distance: float) -> float:
var a: float = 862.08
var b: float = 274.13
return a / (distance + b)
var a: float = 862.08
var b: float = 274.13
return a / (distance + b)
func handle_result_game_state(blackboard: Dictionary) -> void:
if blackboard.has("game_state_win"):
EventsTracker.track(EventsTracker.Event.GAME_STATE_WIN)
game_ticker.stop()
if blackboard.has("game_state_win"):
EventsTracker.track(EventsTracker.Event.GAME_STATE_WIN)
game_ticker.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)
%HealthLabel.text = str(health_bar.value) + "/" + str(player.max_health)
%HealthLabel.add_theme_color_override("font_color", Color(1, 1, 1))
if health_bar != null:
health_bar.max_value = player.max_health
health_bar.value = clamp(player.health, 0, player.max_health)
%HealthLabel.text = str(health_bar.value) + "/" + str(player.max_health)
%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)
%FoodLabel.text = str(food_bar.value) + "/" + str(player.max_food)
if food_bar != null:
food_bar.max_value = player.max_food
food_bar.value = clamp(player.food, 0, player.max_food)
%FoodLabel.text = str(food_bar.value) + "/" + str(player.max_food)
if temperature_resistance_bar != null:
temperature_resistance_bar.max_value = player.temperature_set_buff_value
temperature_resistance_bar.value = clamp(player.temperature_buff_timer, 0, player.temperature_set_buff_value)
%TemperatureResistanceLabel.text = str(temperature_resistance_bar.value) + "/" + str(player.temperature_set_buff_value)
if temperature_resistance_bar != null:
temperature_resistance_bar.max_value = player.temperature_set_buff_value
temperature_resistance_bar.value = clamp(player.temperature_buff_timer, 0, player.temperature_set_buff_value)
%TemperatureResistanceLabel.text = str(temperature_resistance_bar.value) + "/" + str(player.temperature_set_buff_value)
if temperature_bar != null:
temperature_bar.max_value = player.temperature_endure
# invert the value to show the time left
var countdown: int = player.temperature_endure - player.temperature_timer
temperature_bar.value = clamp(countdown, 0, player.temperature_endure)
%TemperatureLabel.text = str(temperature_bar.value) + "/" + str(player.temperature_endure)
if temperature_bar != null:
temperature_bar.max_value = player.temperature_endure
# invert the value to show the time left
var countdown: int = player.temperature_endure - player.temperature_timer
temperature_bar.value = clamp(countdown, 0, player.temperature_endure)
%TemperatureLabel.text = str(temperature_bar.value) + "/" + str(player.temperature_endure)
func toggle_temperature_layer() -> void:
world.tilemap_temperature.tilemap.visible = not world.tilemap_temperature.tilemap.visible
world.tilemap_temperature.tilemap.visible = not world.tilemap_temperature.tilemap.visible
func wait_for_key_press():
waiting_for_input = true
while waiting_for_input:
await get_tree().process_frame
waiting_for_input = true
while waiting_for_input:
await get_tree().process_frame
func _input(event):
if event is InputEventKey and event.pressed:
waiting_for_input = false
if event is InputEventKey and event.pressed:
waiting_for_input = false

View File

@ -17,6 +17,12 @@ var parent_nodes: Dictionary = {}
#
var current_lowest_node_pos: Vector2 = Vector2(0, 0)
func _physics_process(delta: float) -> void:
if Input.is_action_just_pressed("toggle_graph_edit"):
if is_visible():
hide()
else:
show()
func build_tree() -> void:
if not behavior_tree:
@ -146,3 +152,7 @@ func human_readable_task_name(input: String) -> String:
result = prefixes[selected_prefix] + result
return result
func _on_close_requested() -> void:
hide()