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 health_bar.value = player.max_health food_bar.value = player.max_food temperature_bar.value = player.temperature_endure update_bars() $Camera2D/CanvasLayer/VBoxContainer/TextureRect.texture = world.tilemap_interactive.get_cell_texture(tilemap_types.OBJECT_I_BOAT_PART_CHEST) # 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"): _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 = "game tick duration" tilemap_navigation.game_tick_start() world.step_visualizer.game_tick_start() player.game_tick() tilemap_navigation.game_tick_end() world.step_visualizer.game_tick_end() timer_on_game_tick_timeout.stop() update_bars() 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) if food_bar != null: food_bar.max_value = player.max_food food_bar.value = clamp(player.food, 0, 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) 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!")