class_name GameManager extends Node var tilemap_types: TileMapTileTypes = TileMapTileTypes.new() @onready var world: World = $Tileset @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 @onready var temperature_layer: Node2D = $Tileset/TemperatureLayer var tilemap_navigation: TilemapNavigation = TilemapNavigation.new() 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() # game_ticker.start() func _process(delta: float) -> void: if Input.is_action_just_pressed("key_1"): camera.go_to_zooming(Vector2(517.469787597656, 289.846008300781), 1.771561) if Input.is_action_just_pressed("key_2"): camera.go_to_zooming(Vector2(789.883972167969, 450.102813720703), 0.56015348434448) if Input.is_action_just_pressed("key_9"): world.camp_manager.campfire_light() world.camp_manager.sleep_effect() world.camp_manager.campfire_extinguish() 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_6"): toggle_temperature_layer() func player_health_depleted(): # 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" tilemap_navigation.game_tick_start() world.game_tick_start() player.game_tick() tilemap_navigation.game_tick_end() world.game_tick_end() EventsTracker.populate_visual_log(%RecentEventsLog, self) 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/VBoxContainer/HealthBar/HealthLabel.text = str(health_bar.value) + "/" + str(player.max_health) $Camera2D/CanvasLayer/VBoxContainer/HealthBar/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/VBoxContainer/FoodBar/FoodLabel.text = str(food_bar.value) + "/" + str(player.max_food) if temperature_bar != null: 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/VBoxContainer/TemperatureBar/TemperatureLabel.text = str(temperature_bar.value) + "/" + str(player.temperature_set_buff_value) func toggle_temperature_layer() -> void: if temperature_layer != null: temperature_layer.visible = not temperature_layer.visible print("TemperatureLayer visibility:", temperature_layer.visible) else: print("TemperatureLayer is null!")