diff --git a/project/main-scenes/island.tscn b/project/main-scenes/island.tscn index 0c648f9..deece86 100644 --- a/project/main-scenes/island.tscn +++ b/project/main-scenes/island.tscn @@ -237,6 +237,38 @@ show_grid_buttons = false show_minimap_button = false show_arrange_button = false +[node name="MarginContainer" type="MarginContainer" parent="Camera2D/CanvasLayer"] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 30.0 +grow_horizontal = 2 +theme_override_constants/margin_top = 10 + +[node name="TimeOfDayBar" type="ProgressBar" parent="Camera2D/CanvasLayer/MarginContainer"] +unique_name_in_owner = true +self_modulate = Color(0.788235, 0.0901961, 0.00392157, 1) +custom_minimum_size = Vector2(400, 30.055) +layout_mode = 2 +size_flags_horizontal = 4 +tooltip_text = " +" +show_percentage = false + +[node name="TimeOfDayLabel" type="Label" parent="Camera2D/CanvasLayer/MarginContainer/TimeOfDayBar"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 14 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_top = -11.5 +offset_bottom = 11.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_font_sizes/font_size = 26 +text = "test" +horizontal_alignment = 1 + [node name="InstructionsRect" type="TextureRect" parent="Camera2D/CanvasLayer"] unique_name_in_owner = true visible = false diff --git a/project/scripts/global/GameManager.gd b/project/scripts/global/GameManager.gd index c008e6a..95c3701 100644 --- a/project/scripts/global/GameManager.gd +++ b/project/scripts/global/GameManager.gd @@ -12,6 +12,7 @@ var tilemap_types: TileMapTileTypes = TileMapTileTypes.new() @onready var food_bar: ProgressBar = %FoodBar @onready var temperature_bar: ProgressBar = %TemperatureBar @onready var temperature_resistance_bar: ProgressBar = %TemperatureResistanceBar +@onready var time_of_day_bar: ProgressBar = %TimeOfDayBar var tilemap_navigation: TilemapNavigation = TilemapNavigation.new() @@ -176,6 +177,33 @@ func update_bars() -> void: temperature_bar.value = clamp(countdown, 0, player.temperature_endure) %TemperatureLabel.text = str(temperature_bar.value) + "/" + str(player.temperature_endure) + if time_of_day_bar != null: + time_of_day_bar.max_value = 1 + time_of_day_bar.value = float(world.camp_manager.time_of_day) / world.camp_manager.day_length + time_of_day_bar.self_modulate = calculate_time_of_day_color(world.camp_manager.time_of_day, world.camp_manager.day_length) + %TimeOfDayLabel.text = calculate_display_time_of_day(world.camp_manager.time_of_day, world.camp_manager.day_length) + + +func calculate_display_time_of_day(current_time: int, day_length: int) -> String: + # format as 24 hour clock, start at 06:00 and end at 21:00 + var start: int = 6 + var end: int = 21 + var hours_per_day: int = end - start + var time_of_day: float = float(current_time) / day_length * hours_per_day + start + var hours: int = int(time_of_day) + var minutes: int = int((time_of_day - hours) * 60) + hours %= 24 + return str(hours).pad_zeros(2) + ":" + str(minutes).pad_zeros(2) + + +func calculate_time_of_day_color(current_time: int, day_length: int) -> Color: + var start: Color = Color(1, 1, 0) + var end: Color = Color(1, 0, 0) + var progress: float = float(current_time) / day_length + progress = clamp(progress, 0, 1) + progress = pow(progress, 2) + return start.lerp(end, progress) + func toggle_temperature_layer() -> void: world.tilemap_temperature.tilemap.visible = not world.tilemap_temperature.tilemap.visible diff --git a/project/scripts/tilemap/objects/CampManager.gd b/project/scripts/tilemap/objects/CampManager.gd index a03701c..ee758d4 100644 --- a/project/scripts/tilemap/objects/CampManager.gd +++ b/project/scripts/tilemap/objects/CampManager.gd @@ -14,7 +14,7 @@ var boat_build_location: Vector2i = tilemap_types.EMPTY var boat_leave_location: Vector2i = tilemap_types.EMPTY # var time_of_day: int = 0 -var day_length: int = 2000 +var day_length: int = 1000 @export var required_boat_parts: int = 6