From fd375bdb35d8a7b2ac9cf3dd02cdb0f197451a0b Mon Sep 17 00:00:00 2001 From: hop311 Date: Thu, 7 Dec 2023 22:45:19 +0000 Subject: Big UI commit - GUINode, MaskedFlag, PieChart, etc --- game/src/Game/Autoload/Events.gd | 2 - game/src/Game/Autoload/Events/Loader.gd | 6 - game/src/Game/GameSession/GameSession.gd | 6 - game/src/Game/GameSession/GameSession.tscn | 15 +- game/src/Game/GameSession/GameSpeedPanel.gd | 43 ---- game/src/Game/GameSession/GameSpeedPanel.tscn | 67 ------ game/src/Game/GameSession/ProvinceOverviewPanel.gd | 237 +++++++++++++++------ game/src/Game/GameSession/Topbar.gd | 84 ++++++++ game/src/Game/LoadingScreen.gd | 6 - 9 files changed, 265 insertions(+), 201 deletions(-) delete mode 100644 game/src/Game/Autoload/Events/Loader.gd delete mode 100644 game/src/Game/GameSession/GameSpeedPanel.gd delete mode 100644 game/src/Game/GameSession/GameSpeedPanel.tscn create mode 100644 game/src/Game/GameSession/Topbar.gd (limited to 'game/src') diff --git a/game/src/Game/Autoload/Events.gd b/game/src/Game/Autoload/Events.gd index da12bf6..da29adb 100644 --- a/game/src/Game/Autoload/Events.gd +++ b/game/src/Game/Autoload/Events.gd @@ -3,9 +3,7 @@ ## It does such by providing a global interface of signals that are connected to and emitted by that are garunteed to exist. extends Node -var Loader: LoaderEventsObject var Options: OptionsEventsObject func _init(): - Loader = LoaderEventsObject.new() Options = OptionsEventsObject.new() diff --git a/game/src/Game/Autoload/Events/Loader.gd b/game/src/Game/Autoload/Events/Loader.gd deleted file mode 100644 index c17dc6f..0000000 --- a/game/src/Game/Autoload/Events/Loader.gd +++ /dev/null @@ -1,6 +0,0 @@ -class_name LoaderEventsObject -extends RefCounted - -signal startup_load_begun() -signal startup_load_changed(percentage : float) -signal startup_load_ended() diff --git a/game/src/Game/GameSession/GameSession.gd b/game/src/Game/GameSession/GameSession.gd index afff820..2a27e3d 100644 --- a/game/src/Game/GameSession/GameSession.gd +++ b/game/src/Game/GameSession/GameSession.gd @@ -7,12 +7,6 @@ func _ready(): if GameSingleton.setup_game() != OK: push_error("Failed to setup game") - # Temporarily here for cosmetic reasons, will be moved to its - # own child node later, similar to ProvinceOverviewPanel - add_child(GameSingleton.generate_gui("topbar.gui", "topbar")) - $topbar/topbar_outlinerbutton_bg.visible = false - $topbar/topbar_outlinerbutton.visible = false - func _process(_delta : float): GameSingleton.try_tick() diff --git a/game/src/Game/GameSession/GameSession.tscn b/game/src/Game/GameSession/GameSession.tscn index 755139e..2dd0e16 100644 --- a/game/src/Game/GameSession/GameSession.tscn +++ b/game/src/Game/GameSession/GameSession.tscn @@ -4,10 +4,10 @@ [ext_resource type="PackedScene" uid="uid://cvl76duuym1wq" path="res://src/Game/MusicConductor/MusicPlayer.tscn" id="2_kt6aa"] [ext_resource type="PackedScene" uid="uid://g524p8lr574w" path="res://src/Game/GameSession/MapControlPanel/MapControlPanel.tscn" id="3_afh6d"] [ext_resource type="PackedScene" uid="uid://dvdynl6eir40o" path="res://src/Game/GameSession/GameSessionMenu.tscn" id="3_bvmqh"] +[ext_resource type="Script" path="res://src/Game/GameSession/Topbar.gd" id="4_2kbih"] [ext_resource type="PackedScene" uid="uid://dkehmdnuxih2r" path="res://src/Game/GameSession/MapView.tscn" id="4_xkg5j"] [ext_resource type="Script" path="res://src/Game/GameSession/ProvinceOverviewPanel.gd" id="5_lfv8l"] [ext_resource type="PackedScene" uid="uid://cnbfxjy1m6wja" path="res://src/Game/Menu/OptionMenu/OptionsMenu.tscn" id="6_p5mnx"] -[ext_resource type="PackedScene" uid="uid://dd8k3p7r3huwc" path="res://src/Game/GameSession/GameSpeedPanel.tscn" id="7_myy4q"] [ext_resource type="PackedScene" uid="uid://d3g6wbvwflmyk" path="res://src/Game/Menu/SaveLoadMenu/SaveLoadMenu.tscn" id="8_4g7ko"] [node name="GameSession" type="Control" node_paths=PackedStringArray("_game_session_menu")] @@ -24,7 +24,7 @@ _game_session_menu = NodePath("GameSessionMenu") [node name="MapView" parent="." instance=ExtResource("4_xkg5j")] -[node name="ProvinceOverviewPanel" type="Control" parent="."] +[node name="ProvinceOverviewPanel" type="GUINode" parent="."] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -34,6 +34,12 @@ grow_vertical = 2 mouse_filter = 1 script = ExtResource("5_lfv8l") +[node name="Topbar" type="GUINode" parent="."] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("4_2kbih") + [node name="MapControlPanel" parent="." instance=ExtResource("3_afh6d")] layout_mode = 1 anchors_preset = 3 @@ -44,11 +50,6 @@ anchor_bottom = 1.0 grow_horizontal = 0 grow_vertical = 0 -[node name="GameSpeedPanel" parent="." instance=ExtResource("7_myy4q")] -layout_mode = 0 -offset_right = 302.0 -offset_bottom = 31.0 - [node name="GameSessionMenu" parent="." instance=ExtResource("3_bvmqh")] visible = false layout_mode = 1 diff --git a/game/src/Game/GameSession/GameSpeedPanel.gd b/game/src/Game/GameSession/GameSpeedPanel.gd deleted file mode 100644 index 6a4b4de..0000000 --- a/game/src/Game/GameSession/GameSpeedPanel.gd +++ /dev/null @@ -1,43 +0,0 @@ -extends PanelContainer - -# REQUIREMENTS: -# * SS-37, SS-38, SS-39 - -@export var _longform_date_button : Button -@export var _play_pause_display_button : Button -@export var _decrease_speed_button : Button -@export var _increase_speed_button : Button - -func _ready(): - GameSingleton.state_updated.connect(_update_buttons) - _update_buttons() - -func _update_buttons(): - _play_pause_display_button.text = "⏸ " if GameSingleton.is_paused() else "▶" - - _increase_speed_button.disabled = not GameSingleton.can_increase_speed() - _decrease_speed_button.disabled = not GameSingleton.can_decrease_speed() - - _longform_date_button.text = GameSingleton.get_longform_date() - -# REQUIREMENTS: -# * UIFUN-73 -func _on_decrease_speed_button_pressed(): - GameSingleton.decrease_speed() - _update_buttons() - -# REQUIREMENTS: -# * UIFUN-72 -func _on_increase_speed_button_pressed(): - GameSingleton.increase_speed() - _update_buttons() - -# REQUIREMENTS: -# * UIFUN-71 -func _on_play_pause_display_button_pressed(): - GameSingleton.toggle_paused() - _update_buttons() - -func _on_longform_date_label_pressed(): - GameSingleton.toggle_paused() - _update_buttons() diff --git a/game/src/Game/GameSession/GameSpeedPanel.tscn b/game/src/Game/GameSession/GameSpeedPanel.tscn deleted file mode 100644 index 5526427..0000000 --- a/game/src/Game/GameSession/GameSpeedPanel.tscn +++ /dev/null @@ -1,67 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://dd8k3p7r3huwc"] - -[ext_resource type="Script" path="res://src/Game/GameSession/GameSpeedPanel.gd" id="1_pfs8t"] - -[sub_resource type="InputEventAction" id="InputEventAction_3k1tl"] -action = &"time_pause" - -[sub_resource type="Shortcut" id="Shortcut_cg5xm"] -events = [SubResource("InputEventAction_3k1tl")] - -[sub_resource type="InputEventAction" id="InputEventAction_w2rkb"] -action = &"time_speed_decrease" - -[sub_resource type="Shortcut" id="Shortcut_ocrfe"] -events = [SubResource("InputEventAction_w2rkb")] - -[sub_resource type="InputEventAction" id="InputEventAction_7sdhp"] -action = &"time_speed_increase" - -[sub_resource type="Shortcut" id="Shortcut_gwofc"] -events = [SubResource("InputEventAction_7sdhp")] - -[node name="GameSpeedPanel" type="PanelContainer" node_paths=PackedStringArray("_longform_date_button", "_play_pause_display_button", "_decrease_speed_button", "_increase_speed_button")] -script = ExtResource("1_pfs8t") -_longform_date_button = NodePath("ButtonList/LongformDateButton") -_play_pause_display_button = NodePath("ButtonList/PlayPauseDisplayButton") -_decrease_speed_button = NodePath("ButtonList/DecreaseSpeedButton") -_increase_speed_button = NodePath("ButtonList/IncreaseSpeedButton") - -[node name="ButtonList" type="HBoxContainer" parent="."] -layout_mode = 2 - -[node name="LongformDateButton" type="Button" parent="ButtonList"] -editor_description = "UI-74" -custom_minimum_size = Vector2(200, 0) -layout_mode = 2 -focus_mode = 0 -text = "LONGFORM DATE" - -[node name="PlayPauseDisplayButton" type="Button" parent="ButtonList"] -editor_description = "UI-75, UIFUN-90" -custom_minimum_size = Vector2(30, 0) -layout_mode = 2 -focus_mode = 0 -shortcut = SubResource("Shortcut_cg5xm") -text = "⏸ " - -[node name="DecreaseSpeedButton" type="Button" parent="ButtonList"] -editor_description = "UI-77" -custom_minimum_size = Vector2(30, 0) -layout_mode = 2 -focus_mode = 0 -shortcut = SubResource("Shortcut_ocrfe") -text = "-" - -[node name="IncreaseSpeedButton" type="Button" parent="ButtonList"] -editor_description = "UI-76" -custom_minimum_size = Vector2(30, 0) -layout_mode = 2 -focus_mode = 0 -shortcut = SubResource("Shortcut_gwofc") -text = "+" - -[connection signal="pressed" from="ButtonList/LongformDateButton" to="." method="_on_longform_date_label_pressed"] -[connection signal="pressed" from="ButtonList/PlayPauseDisplayButton" to="." method="_on_play_pause_display_button_pressed"] -[connection signal="pressed" from="ButtonList/DecreaseSpeedButton" to="." method="_on_decrease_speed_button_pressed"] -[connection signal="pressed" from="ButtonList/IncreaseSpeedButton" to="." method="_on_increase_speed_button_pressed"] diff --git a/game/src/Game/GameSession/ProvinceOverviewPanel.gd b/game/src/Game/GameSession/ProvinceOverviewPanel.gd index 1292eb4..6c183fb 100644 --- a/game/src/Game/GameSession/ProvinceOverviewPanel.gd +++ b/game/src/Game/GameSession/ProvinceOverviewPanel.gd @@ -1,22 +1,54 @@ -extends Control +extends GUINode +# Header var _province_name_label : Label var _region_name_label : Label +var _slave_status_icon : TextureRect +var _colony_status_button : Button +var _colony_status_button_texture : GFXIconTexture +var _administrative_percentage_label : Label +var _owner_percentage_label : Label +var _terrain_type_texture : GFXIconTexture var _life_rating_bar : TextureProgressBar +var _controller_flag_texture : GFXMaskedFlagTexture +# state and province modifiers + +# Statistics +var _rgo_icon_texture : GFXIconTexture +var _rgo_produced_label : Label +var _rgo_income_label : Label +# rgo employment progress bar (execpt it isn't a progress bar?) +var _rgo_employment_population_label : Label +var _rgo_employment_percentage_label : Label +var _crime_name_label : Label +var _crime_icon_texture : GFXIconTexture +# crime fighting var _total_population_label : Label -var _rgo_icon_texture : AtlasTexture +var _migration_label : Label +var _population_growth_label : Label +var _pop_types_piechart : GFXPieChartTexture +var _pop_ideologies_piechart : GFXPieChartTexture +var _pop_cultures_piechart : GFXPieChartTexture +# supply_limit_label +# cores const _missing_suffix : String = "_MISSING" const _province_info_province_key : StringName = &"province" const _province_info_region_key : StringName = &"region" +const _province_info_controller_key : StringName = &"controller" const _province_info_life_rating_key : StringName = &"life_rating" const _province_info_terrain_type_key : StringName = &"terrain_type" +const _province_info_crime_name_key : StringName = &"crime_name" +const _province_info_crime_icon_key : StringName = &"crime_icon" const _province_info_total_population_key : StringName = &"total_population" const _province_info_pop_types_key : StringName = &"pop_types" const _province_info_pop_ideologies_key : StringName = &"pop_ideologies" const _province_info_pop_cultures_key : StringName = &"pop_cultures" -const _province_info_rgo_key : StringName = &"rgo" +const _province_info_rgo_name_key : StringName = &"rgo_name" +const _province_info_rgo_icon_key : StringName = &"rgo_icon" +const _province_info_colony_status_key : StringName = &"colony_status" +const _province_info_slave_status_key : StringName = &"slave_status" const _province_info_buildings_key : StringName = &"buildings" const _building_info_building_key : StringName = &"building" @@ -36,67 +68,79 @@ var _selected_index : int: _update_info() var _province_info : Dictionary -func _check_class(object : Object, klass : String, name : String) -> bool: - if object.get_class() == klass: - return true - else: - push_error("Invalid ", name, " class: ", object.get_class(), " (expected ", klass, ")") - return false - -func _try_get_node(path : NodePath, klass : String) -> Node: - var node : Node = get_node(path) - if node != null: - if _check_class(node, klass, path): - return node - else: - push_error("Failed to get node: ", path, " (returned null)") - return null - func _ready(): GameSingleton.province_selected.connect(_on_province_selected) GameSingleton.state_updated.connect(_update_info) - add_child(GameSingleton.generate_gui("province_interface.gui", "province_view")) + add_gui_element("province_interface.gui", "province_view") - var close_button : Button = _try_get_node(^"./province_view/close_button", "Button") - if close_button != null: + var close_button : Button = get_button_node(^"./province_view/close_button") + if close_button: close_button.pressed.connect(_on_close_button_pressed) - _region_name_label = _try_get_node(^"./province_view/province_view_header/state_name", "Label") - - _province_name_label = _try_get_node(^"./province_view/province_view_header/province_name", "Label") - - _life_rating_bar = _try_get_node(^"./province_view/province_view_header/liferating", "TextureProgressBar") - - var goods_icon : TextureRect = _try_get_node(^"./province_view/province_statistics/goods_type", "TextureRect") - if goods_icon != null: - var texture := goods_icon.texture - if _check_class(texture, "GFXIconTexture", "good_texture"): - _rgo_icon_texture = texture - - - var rgo_population_label : Label = _try_get_node(^"./province_view/province_statistics/rgo_population", "Label") - if rgo_population_label != null: - rgo_population_label.text = "0" - - #^"./province_view/province_statistics/crime_icon" - - _total_population_label = _try_get_node(^"./province_view/province_statistics/total_population", "Label") - - #^"./province_view/province_statistics/growth" - #^"./province_view/province_statistics/workforce_chart" - #^"./province_view/province_statistics/ideology_chart" - #^"./province_view/province_statistics/culture_chart" - - $province_view/province_view_header/occupation_progress.visible = false - $province_view/province_view_header/occupation_icon.visible = false - $province_view/province_view_header/occupation_flag.visible = false - $province_view/province_colony.visible = false - $province_view/province_other.visible = false - $province_view/province_buildings/army_size.visible = false - $province_view/province_buildings/army_text.visible = false - $province_view/province_buildings/navy_text.visible = false - $province_view/national_focus_window.visible = false + # Header + _province_name_label = get_label_node(^"./province_view/province_view_header/province_name") + _region_name_label = get_label_node(^"./province_view/province_view_header/state_name") + _slave_status_icon = get_texture_rect_node(^"./province_view/province_view_header/slave_state_icon") + var slave_status_icon_texture : GFXIconTexture = get_gfx_icon_texture_from_node(^"./province_view/province_view_header/slave_state_icon") + if slave_status_icon_texture: + slave_status_icon_texture.set_icon_index(GameSingleton.get_slave_pop_icon_index()) + _colony_status_button = get_button_node(^"./province_view/province_view_header/colony_button") + _colony_status_button_texture = get_gfx_icon_texture_from_node(^"./province_view/province_view_header/colony_button") + var admin_icon_texture : GFXIconTexture = get_gfx_icon_texture_from_node(^"./province_view/province_view_header/admin_icon") + if admin_icon_texture: + admin_icon_texture.set_icon_index(GameSingleton.get_administrative_pop_icon_index()) + _administrative_percentage_label = get_label_node(^"./province_view/province_view_header/admin_efficiency") + _owner_percentage_label = get_label_node(^"./province_view/province_view_header/owner_presence") + _terrain_type_texture = get_gfx_icon_texture_from_node(^"./province_view/province_view_header/prov_terrain") + _life_rating_bar = get_progress_bar_node(^"./province_view/province_view_header/liferating") + _controller_flag_texture = get_gfx_masked_flag_texture_from_node(^"./province_view/province_view_header/controller_flag") + + # Statistics + _rgo_icon_texture = get_gfx_icon_texture_from_node(^"./province_view/province_statistics/goods_type") + _rgo_produced_label = get_label_node(^"./province_view/province_statistics/produced") + _rgo_income_label = get_label_node(^"./province_view/province_statistics/income") + _rgo_employment_population_label = get_label_node(^"./province_view/province_statistics/rgo_population") + _rgo_employment_percentage_label = get_label_node(^"./province_view/province_statistics/rgo_percent") + _crime_name_label = get_label_node(^"./province_view/province_statistics/crime_name") + _crime_icon_texture = get_gfx_icon_texture_from_node(^"./province_view/province_statistics/crime_icon") + _total_population_label = get_label_node(^"./province_view/province_statistics/total_population") + _migration_label = get_label_node(^"./province_view/province_statistics/migration") + _population_growth_label = get_label_node(^"./province_view/province_statistics/growth") + _pop_types_piechart = get_gfx_pie_chart_texture_from_node(^"./province_view/province_statistics/workforce_chart") + _pop_ideologies_piechart = get_gfx_pie_chart_texture_from_node(^"./province_view/province_statistics/ideology_chart") + _pop_cultures_piechart = get_gfx_pie_chart_texture_from_node(^"./province_view/province_statistics/culture_chart") + + #^"./province_view/building" + #^"./province_view/province_core" + #^"./province_view/prov_state_modifier" + + #add_gui_element("province_interface.gui", "building", "building0") + #var building0 : Panel = get_panel_node(^"./building0") + #building0.set_anchors_and_offsets_preset(Control.PRESET_BOTTOM_LEFT) + #building0.set_position(pop_cultures_piechart_icon.get_position()) + + # TODO - fix checkbox positions + for path in [ + ^"./province_view/province_buildings/rallypoint_checkbox", + ^"./province_view/province_buildings/rallypoint_merge_checkbox", + ^"./province_view/province_buildings/rallypoint_checkbox_naval", + ^"./province_view/province_buildings/rallypoint_merge_checkbox_naval" + ]: + var rally_checkbox : CheckBox = get_check_box_node(path) + rally_checkbox.set_position(rally_checkbox.get_position() - Vector2(3, 3)) + + hide_nodes([ + ^"./province_view/province_view_header/occupation_progress", + ^"./province_view/province_view_header/occupation_icon", + ^"./province_view/province_view_header/occupation_flag", + ^"./province_view/province_colony", + ^"./province_view/province_other", + ^"./province_view/province_buildings/army_size", + ^"./province_view/province_buildings/army_text", + ^"./province_view/province_buildings/navy_text", + ^"./province_view/national_focus_window", + ]) _update_info() @@ -177,27 +221,92 @@ func _set_building_row(index : int, building : Dictionary) -> void: row.button.disabled = expansion_state != CAN_EXPAND row.button.visible = not show_progress_bar """ + +enum { STATE, PROTECTORATE, COLONY } func _update_info() -> void: _province_info = GameSingleton.get_province_info_from_index(_selected_index) if _province_info: + # Header if _province_name_label: _province_name_label.text = "PROV" + _province_info.get(_province_info_province_key, _province_info_province_key + _missing_suffix) + if _region_name_label: _region_name_label.text = _province_info.get(_province_info_region_key, _province_info_region_key + _missing_suffix) + + if _slave_status_icon: + _slave_status_icon.visible = _province_info.get(_province_info_slave_status_key, false) + + var colony_status : int = _province_info.get(_province_info_colony_status_key, 0) + if _colony_status_button: + if colony_status == STATE: + _colony_status_button.hide() + else: + if _colony_status_button_texture: + _colony_status_button_texture.set_icon_index(colony_status) + _colony_status_button.show() + + if _administrative_percentage_label: + pass + + if _owner_percentage_label: + pass + + if _terrain_type_texture: + var terrain_type : String = _province_info.get(_province_info_terrain_type_key, "") + if terrain_type: + const _terrain_type_prefix : String = "GFX_terrainimg_" + if _terrain_type_texture.set_gfx_texture_sprite_name(_terrain_type_prefix + terrain_type) != OK: + push_error("Failed to set terrain type texture: ", terrain_type) + if _life_rating_bar: - _life_rating_bar.value = _province_info.get(_province_info_life_rating_key, 0) * 0 + _life_rating_bar.value = _province_info.get(_province_info_life_rating_key, 0) + + if _controller_flag_texture: + var controller : String = _province_info.get(_province_info_controller_key, "REB") + _controller_flag_texture.set_flag_country_name_and_type(controller, &"") + + # Statistics + if _rgo_icon_texture: + _rgo_icon_texture.set_icon_index(_province_info.get(_province_info_rgo_icon_key, -1) + 2) + + if _rgo_produced_label: + _rgo_produced_label.text = _province_info.get(_province_info_rgo_name_key, _province_info_rgo_name_key + _missing_suffix) + + if _rgo_income_label: + _rgo_income_label.text = GameSingleton.float_to_formatted_string(12.34567) + # TODO - add £ sign + + if _rgo_employment_population_label: + _rgo_employment_population_label.text = GameSingleton.int_to_formatted_string(_province_info.get(_province_info_total_population_key, 0) / 10) + + if _rgo_employment_percentage_label: + pass + + if _crime_name_label: + _crime_name_label.text = _province_info.get(_province_info_crime_name_key, "") + + if _crime_icon_texture: + _crime_icon_texture.set_icon_index(_province_info.get(_province_info_crime_icon_key, 0) + 1) if _total_population_label: - _total_population_label.text = Localisation.tr_number(_province_info.get(_province_info_total_population_key, 0)) + _total_population_label.text = GameSingleton.int_to_formatted_string(_province_info.get(_province_info_total_population_key, 0)) - #_pop_type_chart.set_to_distribution(_province_info.get(_province_info_pop_types_key, {})) - #_pop_ideology_chart.set_to_distribution(_province_info.get(_province_info_pop_ideologies_key, {})) - #_pop_culture_chart.set_to_distribution(_province_info.get(_province_info_pop_cultures_key, {})) + if _migration_label: + pass - if _rgo_icon_texture: - _rgo_icon_texture.set_icon_index((_selected_index % 40) + 1) + if _population_growth_label: + pass + + if _pop_types_piechart: + _pop_types_piechart.set_slices(_province_info.get(_province_info_pop_types_key, [])) + + if _pop_ideologies_piechart: + _pop_ideologies_piechart.set_slices(_province_info.get(_province_info_pop_ideologies_key, [])) + + if _pop_cultures_piechart: + _pop_cultures_piechart.set_slices(_province_info.get(_province_info_pop_cultures_key, [])) #var buildings : Array = _province_info.get(_province_info_buildings_key, []) #for i in max(buildings.size(), _building_rows.size()): diff --git a/game/src/Game/GameSession/Topbar.gd b/game/src/Game/GameSession/Topbar.gd new file mode 100644 index 0000000..6cc710f --- /dev/null +++ b/game/src/Game/GameSession/Topbar.gd @@ -0,0 +1,84 @@ +extends GUINode + +var _speed_up_button : Button +var _speed_down_button : Button +var _speed_indicator_button : Button +var _speed_indicator_texture : GFXIconTexture +var _date_label : Label +var _country_name_label : Label + +func _ready(): + GameSingleton.state_updated.connect(_update_info) + + add_gui_element("topbar.gui", "topbar") + + hide_nodes([ + ^"./topbar/topbar_outlinerbutton_bg", + ^"./topbar/topbar_outlinerbutton" + ]) + + const player_country : String = "SLV" + + var player_flag_texture : GFXMaskedFlagTexture = get_gfx_masked_flag_texture_from_node(^"./topbar/player_flag") + if player_flag_texture: + player_flag_texture.set_flag_country_name_and_type(player_country, &"") + + _speed_up_button = get_button_node(^"./topbar/button_speedup") + if _speed_up_button: + _speed_up_button.pressed.connect(_on_increase_speed_button_pressed) + + _speed_down_button = get_button_node(^"./topbar/button_speeddown") + if _speed_down_button: + _speed_down_button.pressed.connect(_on_decrease_speed_button_pressed) + + var pause_bg_button : Button = get_button_node(^"./topbar/pause_bg") + if pause_bg_button: + pause_bg_button.pressed.connect(_on_play_pause_button_pressed) + + _date_label = get_label_node(^"./topbar/DateText") + + _country_name_label = get_label_node(^"./topbar/CountryName") + if _country_name_label: + _country_name_label.text = player_country + + _speed_indicator_button = get_button_node(^"./topbar/speed_indicator") + _speed_indicator_texture = get_gfx_icon_texture_from_node(^"./topbar/speed_indicator") + +func _update_info() -> void: + if _date_label: + _date_label.text = GameSingleton.get_longform_date() + + # TODO - add disabled state textures so this doesn't hide the buttons + #if _speed_up_button: + # _speed_up_button.disabled = not GameSingleton.can_increase_speed() + + #if _speed_down_button: + # _speed_down_button.disabled = not GameSingleton.can_decrease_speed() + + if _speed_indicator_button and _speed_indicator_texture: + var index : int = 1 + if not GameSingleton.is_paused(): + index += GameSingleton.get_speed() + 1 + _speed_indicator_texture.set_icon_index(index) + _speed_indicator_button.queue_redraw() + +# REQUIREMENTS: +# * UIFUN-71 +func _on_play_pause_button_pressed(): + print("Toggling pause!") + GameSingleton.toggle_paused() + _update_info() + +# REQUIREMENTS: +# * UIFUN-72 +func _on_increase_speed_button_pressed(): + print("Speed up!") + GameSingleton.increase_speed() + _update_info() + +# REQUIREMENTS: +# * UIFUN-73 +func _on_decrease_speed_button_pressed(): + print("Speed down!") + GameSingleton.decrease_speed() + _update_info() diff --git a/game/src/Game/LoadingScreen.gd b/game/src/Game/LoadingScreen.gd index c7dad9c..08cd2a8 100644 --- a/game/src/Game/LoadingScreen.gd +++ b/game/src/Game/LoadingScreen.gd @@ -21,7 +21,6 @@ func start_loading_screen(thread_safe_function : Callable) -> void: thread.wait_to_finish() thread.start(thread_safe_function) - Events.Loader.startup_load_begun.emit() func try_update_loading_screen(percent_complete: float, quote_should_change = false): # forces the function to behave as if deferred @@ -29,11 +28,6 @@ func try_update_loading_screen(percent_complete: float, quote_should_change = fa progress_bar.value = percent_complete if quote_should_change: quote_label.text = quotes[randi() % quotes.size()] - if is_equal_approx(percent_complete, 100): - thread.wait_to_finish() - Events.Loader.startup_load_ended.emit() - else: - Events.Loader.startup_load_changed.emit(percent_complete) func _ready(): if Engine.is_editor_hint(): return -- cgit v1.2.3-56-ga3b1