aboutsummaryrefslogtreecommitdiff
path: root/game/src
diff options
context:
space:
mode:
author hop311 <hop3114@gmail.com>2024-08-29 00:16:24 +0200
committer hop311 <hop3114@gmail.com>2024-08-29 23:04:30 +0200
commitbdc2ba527bc02e7cdf977f6040f2ca85aa4f9a94 (patch)
tree4627ad955ac60f5c66b94dfc3106bd8442b58302 /game/src
parent88acb31bd43f0e163522837bb1d0dd7da2977c4a (diff)
Add tooltips for buttons, labels, icons, pie charts, sliders, and progress barstooltip
Diffstat (limited to 'game/src')
-rw-r--r--game/src/Game/GameSession/GameSession.tscn8
-rw-r--r--game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd21
-rw-r--r--game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd93
-rw-r--r--game/src/Game/GameSession/Tooltip.gd23
-rw-r--r--game/src/Game/GameSession/Topbar.gd99
5 files changed, 218 insertions, 26 deletions
diff --git a/game/src/Game/GameSession/GameSession.tscn b/game/src/Game/GameSession/GameSession.tscn
index 018aad8..5925f3d 100644
--- a/game/src/Game/GameSession/GameSession.tscn
+++ b/game/src/Game/GameSession/GameSession.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=20 format=3 uid="uid://bgnupcshe1m7r"]
+[gd_scene load_steps=21 format=3 uid="uid://bgnupcshe1m7r"]
[ext_resource type="Script" path="res://src/Game/GameSession/GameSession.gd" id="1_eklvp"]
[ext_resource type="PackedScene" uid="uid://cvl76duuym1wq" path="res://src/Game/MusicConductor/MusicPlayer.tscn" id="2_kt6aa"]
@@ -19,6 +19,7 @@
[ext_resource type="Script" path="res://src/Game/GameSession/NationManagementScreen/TradeMenu.gd" id="10_mv1r6"]
[ext_resource type="Script" path="res://src/Game/GameSession/NationManagementScreen/DiplomacyMenu.gd" id="11_fu7ys"]
[ext_resource type="Script" path="res://src/Game/GameSession/NationManagementScreen/MilitaryMenu.gd" id="12_6h6nc"]
+[ext_resource type="Script" path="res://src/Game/GameSession/Tooltip.gd" id="20_3306e"]
[node name="GameSession" type="Control" node_paths=PackedStringArray("_model_manager", "_game_session_menu")]
editor_description = "SS-102, UI-546"
@@ -156,6 +157,11 @@ offset_left = -150.0
offset_right = 0.0
grow_horizontal = 0
+[node name="Tooltip" type="GUINode" parent="UICanvasLayer/UI"]
+layout_mode = 1
+anchors_preset = 15
+script = ExtResource("20_3306e")
+
[connection signal="detailed_view_changed" from="MapView" to="ModelManager" method="set_visible"]
[connection signal="map_view_camera_changed" from="MapView" to="UICanvasLayer/UI/MapControlPanel" method="_on_map_view_camera_changed"]
[connection signal="game_session_menu_button_pressed" from="UICanvasLayer/UI/MapControlPanel" to="." method="_on_game_session_menu_button_pressed"]
diff --git a/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd b/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd
index ea92beb..021c9f2 100644
--- a/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd
+++ b/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd
@@ -42,6 +42,12 @@ var _debt_chart : GUIPieChart
const _screen : NationManagement.Screen = NationManagement.Screen.BUDGET
+# TODO - testing function, should be replaced with calls to SIM which trigger UI updates through gamestate_updated
+func _on_tax_slider_changed(slider : GUIScrollbar, label : GUILabel, tooltip : String, value : int) -> void:
+ label.text = "%s¤" % GUINode.float_to_string_dp(value, 3 if abs(value) < 1000 else 1)
+ slider.set_tooltip_string("%s: §Y%s%%" % [tr(tooltip), GUINode.float_to_string_dp(value, 1)])
+
+
func _ready() -> void:
GameSingleton.gamestate_updated.connect(_update_info)
@@ -87,15 +93,24 @@ func _ready() -> void:
# income
var _lower_class_slider : GUIScrollbar = get_gui_scrollbar_from_nodepath(^"./country_budget/tax_0_slider")
if _lower_class_slider and _lower_class_label:
- _lower_class_slider.value_changed.connect(func(value : int) -> void: _lower_class_label.text = "%s¤" % GUINode.float_to_string_dp(value, 3 if abs(value) < 1000 else 1))
+ _lower_class_slider.value_changed.connect(
+ func (value : int) -> void:
+ _on_tax_slider_changed(_lower_class_slider, _lower_class_label, "BUDGET_TAX_POOR", value)
+ )
_lower_class_slider.emit_value_changed()
var _middle_class_slider : GUIScrollbar = get_gui_scrollbar_from_nodepath(^"./country_budget/tax_1_slider")
if _middle_class_slider and _middle_class_label:
- _middle_class_slider.value_changed.connect(func(value : int) -> void: _middle_class_label.text = "%s¤" % GUINode.float_to_string_dp(value, 3 if abs(value) < 1000 else 1))
+ _middle_class_slider.value_changed.connect(
+ func (value : int) -> void:
+ _on_tax_slider_changed(_middle_class_slider, _middle_class_label, "BUDGET_TAX_MIDDLE", value)
+ )
_middle_class_slider.emit_value_changed()
var _upper_class_slider : GUIScrollbar = get_gui_scrollbar_from_nodepath(^"./country_budget/tax_2_slider")
if _upper_class_slider and _upper_class_label:
- _upper_class_slider.value_changed.connect(func(value : int) -> void: _upper_class_label.text = "%s¤" % GUINode.float_to_string_dp(value, 3 if abs(value) < 1000 else 1))
+ _upper_class_slider.value_changed.connect(
+ func (value : int) -> void:
+ _on_tax_slider_changed(_upper_class_slider, _upper_class_label, "BUDGET_TAX_RICH", value)
+ )
_upper_class_slider.emit_value_changed()
# costs
diff --git a/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd b/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd
index d8af97f..eb57387 100644
--- a/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd
+++ b/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd
@@ -319,15 +319,28 @@ func _setup_pop_list() -> void:
var culture_label : GUILabel = GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_nation"))
_pop_list_culture_labels.push_back(culture_label)
+ if culture_label:
+ culture_label.set_mouse_filter(MOUSE_FILTER_PASS)
- _pop_list_religion_icons.push_back(GUINode.get_gui_icon_from_node(pop_row_panel.get_node(^"./pop_religion")))
+ var religion_icon : GUIIcon = GUINode.get_gui_icon_from_node(pop_row_panel.get_node(^"./pop_religion"))
+ _pop_list_religion_icons.push_back(religion_icon)
+ if religion_icon:
+ religion_icon.set_mouse_filter(MOUSE_FILTER_PASS)
var location_label : GUILabel = GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_location"))
_pop_list_location_labels.push_back(location_label)
+ if location_label:
+ location_label.set_mouse_filter(MOUSE_FILTER_PASS)
- _pop_list_militancy_labels.push_back(GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_mil")))
+ var militancy_label : GUILabel = GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_mil"))
+ _pop_list_militancy_labels.push_back(militancy_label)
+ if militancy_label:
+ militancy_label.set_mouse_filter(MOUSE_FILTER_PASS)
- _pop_list_consciousness_labels.push_back(GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_con")))
+ var consciousness_label : GUILabel = GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_con"))
+ _pop_list_consciousness_labels.push_back(consciousness_label)
+ if consciousness_label:
+ consciousness_label.set_mouse_filter(MOUSE_FILTER_PASS)
_pop_list_ideology_charts.push_back(GUINode.get_gui_pie_chart_from_node(pop_row_panel.get_node(^"./pop_ideology")))
@@ -335,17 +348,20 @@ func _setup_pop_list() -> void:
_pop_list_unemployment_progressbars.push_back(GUINode.get_gui_progress_bar_from_node(pop_row_panel.get_node(^"./pop_unemployment_bar")))
- _pop_list_cash_labels.push_back(GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_cash")))
+ var cash_label : GUILabel = GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_cash"))
+ _pop_list_cash_labels.push_back(cash_label)
+ if cash_label:
+ cash_label.set_mouse_filter(MOUSE_FILTER_PASS)
var pop_list_life_needs_progressbar : GUIProgressBar = GUINode.get_gui_progress_bar_from_node(pop_row_panel.get_node(^"./lifeneed_progress"))
+ _pop_list_life_needs_progressbars.push_back(pop_list_life_needs_progressbar)
if pop_list_life_needs_progressbar:
pop_list_life_needs_progressbar.position += Vector2(1, 0)
- _pop_list_life_needs_progressbars.push_back(pop_list_life_needs_progressbar)
var pop_list_everyday_needs_progressbar : GUIProgressBar = GUINode.get_gui_progress_bar_from_node(pop_row_panel.get_node(^"./eveneed_progress"))
+ _pop_list_everyday_needs_progressbars.push_back(pop_list_everyday_needs_progressbar)
if pop_list_everyday_needs_progressbar:
pop_list_everyday_needs_progressbar.position += Vector2(1, 0)
- _pop_list_everyday_needs_progressbars.push_back(pop_list_everyday_needs_progressbar)
_pop_list_luxury_needs_progressbars.push_back(GUINode.get_gui_progress_bar_from_node(pop_row_panel.get_node(^"./luxneed_progress")))
@@ -357,9 +373,15 @@ func _setup_pop_list() -> void:
_pop_list_national_movement_flags.push_back(GUINode.get_gui_masked_flag_from_node(pop_row_panel.get_node(^"./pop_movement_flag")))
- _pop_list_size_change_icons.push_back(GUINode.get_gui_icon_from_node(pop_row_panel.get_node(^"./growth_indicator")))
+ var size_change_icon : GUIIcon = GUINode.get_gui_icon_from_node(pop_row_panel.get_node(^"./growth_indicator"))
+ _pop_list_size_change_icons.push_back(size_change_icon)
+ if size_change_icon:
+ size_change_icon.set_mouse_filter(MOUSE_FILTER_PASS)
- _pop_list_literacy_labels.push_back(GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_literacy")))
+ var literacy_label : GUILabel = GUINode.get_gui_label_from_node(pop_row_panel.get_node(^"./pop_literacy"))
+ _pop_list_literacy_labels.push_back(literacy_label)
+ if literacy_label:
+ literacy_label.set_mouse_filter(MOUSE_FILTER_PASS)
func _notification(what : int) -> void:
match what:
@@ -514,6 +536,10 @@ func _update_distributions():
var colour_icon : GUIIcon = GUINode.get_gui_icon_from_node(child.get_node(^"./legend_color"))
if colour_icon:
colour_icon.set_modulate(distribution_row[slice_colour_key])
+ colour_icon.set_mouse_filter(MOUSE_FILTER_PASS)
+ colour_icon.set_tooltip_string_and_substitution_dict("§Y$ID$§!: $PC$%", {
+ "ID": distribution_row[slice_identifier_key], "PC": GUINode.float_to_string_dp(distribution_row[slice_weight_key] * 100.0, 2)
+ })
var identifier_label : GUILabel = GUINode.get_gui_label_from_node(child.get_node(^"./legend_title"))
if identifier_label:
@@ -563,30 +589,60 @@ func _update_pop_list() -> void:
_pop_list_size_labels[index].set_text(GUINode.int_to_string_suffixed(pop_row[pop_size_key]))
if _pop_list_type_buttons[index]:
_pop_list_type_buttons[index].set_icon_index(pop_row[pop_type_icon_key])
+ # TODO - replace with actual poptype
+ _pop_list_type_buttons[index].set_tooltip_string("Pop Type #%d" % pop_row[pop_type_icon_key])
if _pop_list_culture_labels[index]:
_pop_list_culture_labels[index].set_text(pop_row[pop_culture_key])
+ _pop_list_culture_labels[index].set_tooltip_string("NO_ASSIM_NOW")
if _pop_list_religion_icons[index]:
_pop_list_religion_icons[index].set_icon_index(pop_row[pop_religion_icon_key])
+ # TODO - replace with actual religion
+ _pop_list_religion_icons[index].set_tooltip_string("Religion #%d" % pop_row[pop_religion_icon_key])
if _pop_list_location_labels[index]:
- _pop_list_location_labels[index].set_text(GUINode.format_province_name(pop_row.get(pop_location_key, "")))
+ var province_name : String = GUINode.format_province_name(pop_row.get(pop_location_key, ""))
+ _pop_list_location_labels[index].set_text(province_name)
+ _pop_list_location_labels[index].set_tooltip_string(province_name)
if _pop_list_militancy_labels[index]:
_pop_list_militancy_labels[index].set_text(GUINode.float_to_string_dp(pop_row[pop_militancy_key], 2))
+ # TODO - test tooltip, add monthly change + source breakdown
+ _pop_list_militancy_labels[index].set_tooltip_string("POP_MIL_TOTAL")
if _pop_list_consciousness_labels[index]:
_pop_list_consciousness_labels[index].set_text(GUINode.float_to_string_dp(pop_row[pop_consciousness_key], 2))
+ # TODO - test tooltip, add monthly change + source breakdown
+ _pop_list_consciousness_labels[index].set_tooltip_string("POP_CON_TOTAL")
if _pop_list_ideology_charts[index]:
_pop_list_ideology_charts[index].set_slices_array(pop_row[pop_ideology_key])
if _pop_list_issues_charts[index]:
_pop_list_issues_charts[index].set_slices_array(pop_row[pop_issues_key])
if _pop_list_unemployment_progressbars[index]:
- _pop_list_unemployment_progressbars[index].set_value_no_signal(pop_row[pop_unemployment_key])
+ var unemployment : float = pop_row[pop_unemployment_key]
+ _pop_list_unemployment_progressbars[index].set_value_no_signal(unemployment)
+ _pop_list_unemployment_progressbars[index].set_tooltip_string("%s: §Y%s%%" % [
+ tr("UNEMPLOYMENT"), GUINode.float_to_string_dp(unemployment * 100.0, 3)
+ ])
if _pop_list_cash_labels[index]:
- _pop_list_cash_labels[index].set_text(GUINode.float_to_string_dp(pop_row[pop_cash_key], 2))
+ _pop_list_cash_labels[index].set_text("%s¤" % GUINode.float_to_string_dp(pop_row[pop_cash_key], 2))
+ _pop_list_cash_labels[index].set_tooltip_string_and_substitution_dict("POP_DAILY_MONEY", {
+ "VAL": GUINode.float_to_string_dp(1.23, 2)
+ })
if _pop_list_life_needs_progressbars[index]:
- _pop_list_life_needs_progressbars[index].set_value_no_signal(pop_row[pop_life_needs_key])
+ var life_needs : float = pop_row[pop_life_needs_key]
+ _pop_list_life_needs_progressbars[index].set_value_no_signal(life_needs)
+ _pop_list_life_needs_progressbars[index].set_tooltip_string_and_substitution_dict("GETTING_NEEDS", {
+ "NEED": "LIFE_NEEDS", "VAL": GUINode.float_to_string_dp(life_needs * 100.0, 1)
+ })
if _pop_list_everyday_needs_progressbars[index]:
- _pop_list_everyday_needs_progressbars[index].set_value_no_signal(pop_row[pop_everyday_needs_key])
+ var everyday_needs : float = pop_row[pop_everyday_needs_key]
+ _pop_list_everyday_needs_progressbars[index].set_value_no_signal(everyday_needs)
+ _pop_list_everyday_needs_progressbars[index].set_tooltip_string_and_substitution_dict("GETTING_NEEDS", {
+ "NEED": "EVERYDAY_NEEDS", "VAL": GUINode.float_to_string_dp(everyday_needs * 100.0, 1)
+ })
if _pop_list_luxury_needs_progressbars[index]:
- _pop_list_luxury_needs_progressbars[index].set_value_no_signal(pop_row[pop_luxury_needs_key])
+ var luxury_needs : float = pop_row[pop_luxury_needs_key]
+ _pop_list_luxury_needs_progressbars[index].set_value_no_signal(luxury_needs)
+ _pop_list_luxury_needs_progressbars[index].set_tooltip_string_and_substitution_dict("GETTING_NEEDS", {
+ "NEED": "LUXURY_NEEDS", "VAL": GUINode.float_to_string_dp(luxury_needs * 100.0, 1)
+ })
if _pop_list_rebel_icons[index]:
var rebel_icon : int = pop_row.get(pop_rebel_icon_key, 0)
if rebel_icon > 0:
@@ -604,9 +660,16 @@ func _update_pop_list() -> void:
_pop_list_national_movement_flags[index].hide()
if _pop_list_size_change_icons[index]:
- _pop_list_size_change_icons[index].set_icon_index(get_growth_icon_index(pop_row[pop_size_change_key]))
+ var pop_change : int = pop_row[pop_size_change_key]
+ _pop_list_size_change_icons[index].set_icon_index(get_growth_icon_index(pop_change))
+ _pop_list_size_change_icons[index].set_tooltip_string("%s §%s%s" % [
+ tr("POPULATION_CHANGED_BY"), "G+" if pop_change > 0 else "Y+" if pop_change == 0 else "R", str(pop_change)
+ ])
if _pop_list_literacy_labels[index]:
_pop_list_literacy_labels[index].set_text("%s%%" % GUINode.float_to_string_dp(pop_row[pop_literacy_key], 2))
+ _pop_list_literacy_labels[index].set_tooltip_string("%s: §G%s%%" % [
+ tr("LIT_CHANGE"), GUINode.float_to_string_dp(pop_row[pop_literacy_key] / 64.0, 2)
+ ])
_pop_list_rows[index].show()
else:
diff --git a/game/src/Game/GameSession/Tooltip.gd b/game/src/Game/GameSession/Tooltip.gd
new file mode 100644
index 0000000..c110e2e
--- /dev/null
+++ b/game/src/Game/GameSession/Tooltip.gd
@@ -0,0 +1,23 @@
+extends GUINode
+
+var _tooltip_label : GUILabel
+
+func _ready() -> void:
+ add_gui_element("core", "ToolTip")
+
+ _tooltip_label = get_gui_label_from_nodepath(^"./ToolTip")
+ if _tooltip_label:
+ _tooltip_label.set_auto_adjust_to_content_size(true)
+
+ MenuSingleton.update_tooltip.connect(update_tooltip)
+
+ hide()
+
+func update_tooltip(text : String, substitution_dict : Dictionary, position : Vector2) -> void:
+ if text:
+ _tooltip_label.set_text(text)
+ _tooltip_label.set_substitution_dict(substitution_dict)
+ _tooltip_label.set_position(position)
+ show()
+ else:
+ hide()
diff --git a/game/src/Game/GameSession/Topbar.gd b/game/src/Game/GameSession/Topbar.gd
index 62fa322..e3e0809 100644
--- a/game/src/Game/GameSession/Topbar.gd
+++ b/game/src/Game/GameSession/Topbar.gd
@@ -16,6 +16,7 @@ var _country_colonial_power_label : GUILabel
# Time controls
var _speed_up_button : GUIIconButton
var _speed_down_button : GUIIconButton
+var _pause_bg_button : GUIButton
var _speed_indicator_button : GUIIconButton
var _date_label : GUILabel
@@ -101,24 +102,42 @@ func _ready() -> void:
_country_flag_overlay_icon = get_gui_icon_from_nodepath(^"./topbar/topbar_flag_overlay")
_country_name_label = get_gui_label_from_nodepath(^"./topbar/CountryName")
_country_rank_label = get_gui_label_from_nodepath(^"./topbar/nation_totalrank")
+ if _country_rank_label:
+ _country_rank_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_prestige_label = get_gui_label_from_nodepath(^"./topbar/country_prestige")
+ if _country_prestige_label:
+ _country_prestige_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_prestige_rank_label = get_gui_label_from_nodepath(^"./topbar/selected_prestige_rank")
+ if _country_prestige_rank_label:
+ _country_prestige_rank_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_industrial_power_label = get_gui_label_from_nodepath(^"./topbar/country_economic")
+ if _country_industrial_power_label:
+ _country_industrial_power_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_industrial_power_rank_label = get_gui_label_from_nodepath(^"./topbar/selected_industry_rank")
+ if _country_industrial_power_rank_label:
+ _country_industrial_power_rank_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_military_power_label = get_gui_label_from_nodepath(^"./topbar/country_military")
+ if _country_military_power_label:
+ _country_military_power_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_military_power_rank_label = get_gui_label_from_nodepath(^"./topbar/selected_military_rank")
+ if _country_military_power_rank_label:
+ _country_military_power_rank_label.set_mouse_filter(MOUSE_FILTER_PASS)
_country_colonial_power_label = get_gui_label_from_nodepath(^"./topbar/country_colonial_power")
+ if _country_colonial_power_label:
+ _country_colonial_power_label.set_mouse_filter(MOUSE_FILTER_PASS)
# Time controls
_speed_up_button = get_gui_icon_button_from_nodepath(^"./topbar/button_speedup")
if _speed_up_button:
_speed_up_button.pressed.connect(_on_increase_speed_button_pressed)
+ _speed_up_button.set_tooltip_string("TOPBAR_INC_SPEED")
_speed_down_button = get_gui_icon_button_from_nodepath(^"./topbar/button_speeddown")
if _speed_down_button:
_speed_down_button.pressed.connect(_on_decrease_speed_button_pressed)
- var pause_bg_button : GUIIconButton = get_gui_icon_button_from_nodepath(^"./topbar/pause_bg")
- if pause_bg_button:
- pause_bg_button.pressed.connect(_on_play_pause_button_pressed)
+ _speed_down_button.set_tooltip_string("TOPBAR_DEC_SPEED")
+ _pause_bg_button = get_gui_icon_button_from_nodepath(^"./topbar/pause_bg")
+ if _pause_bg_button:
+ _pause_bg_button.pressed.connect(_on_play_pause_button_pressed)
_speed_indicator_button = get_gui_icon_button_from_nodepath(^"./topbar/speed_indicator")
if _speed_indicator_button:
_speed_indicator_button.pressed.connect(_on_play_pause_button_pressed)
@@ -141,6 +160,8 @@ func _ready() -> void:
button.pressed.connect(
Events.NationManagementScreens.toggle_nation_management_screen.bind(screen)
)
+ # TODO - test tooltip, replace with actual shortcut strings
+ button.set_tooltip_string(tr("SHORTCUT") + "F3")
_nation_management_buttons[screen] = button
Events.NationManagementScreens.update_active_nation_management_screen.connect(
_on_update_active_nation_management_screen
@@ -158,10 +179,25 @@ func _ready() -> void:
_budget_funds_label = get_gui_label_from_nodepath(^"./topbar/budget_funds")
# Technology
+ var tech_button : GUIIconButton = _nation_management_buttons[NationManagement.Screen.TECHNOLOGY]
_technology_progress_bar = get_gui_progress_bar_from_nodepath(^"./topbar/topbar_tech_progress")
+ if _technology_progress_bar and tech_button:
+ _technology_progress_bar.reparent(tech_button)
_technology_current_research_label = get_gui_label_from_nodepath(^"./topbar/tech_current_research")
+ if _technology_current_research_label:
+ _technology_current_research_label.set_mouse_filter(MOUSE_FILTER_PASS)
+ if tech_button:
+ _technology_current_research_label.reparent(tech_button)
_technology_literacy_label = get_gui_label_from_nodepath(^"./topbar/tech_literacy_value")
+ if _technology_literacy_label:
+ _technology_literacy_label.set_mouse_filter(MOUSE_FILTER_PASS)
+ if tech_button:
+ _technology_literacy_label.reparent(tech_button)
_technology_research_points_label = get_gui_label_from_nodepath(^"./topbar/topbar_researchpoints_value")
+ if _technology_research_points_label:
+ _technology_research_points_label.set_mouse_filter(MOUSE_FILTER_PASS)
+ if tech_button:
+ _technology_research_points_label.reparent(tech_button)
# Politics
_politics_party_icon = get_gui_icon_from_nodepath(^"./topbar/politics_party_icon")
@@ -238,45 +274,66 @@ func _notification(what : int) -> void:
match what:
NOTIFICATION_TRANSLATION_CHANGED:
_update_info()
+ _update_speed_controls()
func _update_info() -> void:
# Placeholder data
const player_country : String = "ENG"
+ const player_rank : int = 0
+
+ const RANK_NAMES : PackedStringArray = [
+ "DIPLOMACY_GREATNATION_STATUS",
+ "DIPLOMACY_COLONIALNATION_STATUS",
+ "DIPLOMACY_CIVILIZEDNATION_STATUS",
+ "DIPLOMACY_UNCIVILIZEDNATION_STATUS"
+ ]
## Country info
if _country_flag_button:
_country_flag_button.set_flag_country_name(player_country)
+ _country_flag_button.set_tooltip_string_and_substitution_dict("PLAYER_COUNTRY_TOPBAR_RANK", {
+ "NAME": player_country, "RANK": RANK_NAMES[player_rank]
+ })
if _country_flag_overlay_icon:
# 1 - Great Power
# 2 - Secondary Power
# 3 - Civilised
# 4 - Uncivilised
- _country_flag_overlay_icon.set_icon_index(1)
+ _country_flag_overlay_icon.set_icon_index(1 + player_rank)
if _country_name_label:
_country_name_label.set_text(player_country)
if _country_rank_label:
_country_rank_label.set_text(str(1))
+ _country_rank_label.set_tooltip_string_and_substitution_dict("PLAYER_COUNTRY_TOPBAR_RANK", {
+ "NAME": player_country, "RANK": RANK_NAMES[player_rank]
+ })
if _country_prestige_label:
_country_prestige_label.set_text(str(11))
+ _country_military_power_label.set_tooltip_string("RANK_PRESTIGE")
if _country_prestige_rank_label:
_country_prestige_rank_label.set_text(str(1))
+ _country_military_power_label.set_tooltip_string("RANK_PRESTIGE")
if _country_industrial_power_label:
_country_industrial_power_label.set_text(str(22))
+ _country_military_power_label.set_tooltip_string("RANK_INDUSTRY")
if _country_industrial_power_rank_label:
_country_industrial_power_rank_label.set_text(str(2))
+ _country_military_power_label.set_tooltip_string("RANK_INDUSTRY")
if _country_military_power_label:
_country_military_power_label.set_text(str(33))
+ _country_military_power_label.set_tooltip_string("RANK_MILITARY")
if _country_military_power_rank_label:
_country_military_power_rank_label.set_text(str(3))
+ _country_military_power_rank_label.set_tooltip_string("RANK_MILITARY")
if _country_colonial_power_label:
var available_colonial_power : int = 123
@@ -284,6 +341,7 @@ func _update_info() -> void:
_country_colonial_power_label.set_text(
"§%s%s§!/%s" % ["W" if available_colonial_power > 0 else "R", available_colonial_power, total_colonial_power]
)
+ _country_colonial_power_label.set_tooltip_string("COLONIAL_POINTS")
## Time control
if _date_label:
@@ -320,12 +378,21 @@ func _update_info() -> void:
if _technology_current_research_label:
# TODO - set current research or "unciv_nation" (in red) if uncivilised
_technology_current_research_label.set_text("TB_TECH_NO_CURRENT")
+ _technology_current_research_label.set_tooltip_string("TECHNOLOGYVIEW_NO_RESEARCH_TOOLTIP")
if _technology_literacy_label:
- _technology_literacy_label.set_text("§Y%s§W%%" % GUINode.float_to_string_dp(80.0, 1))
+ var literacy_float : float = 80.0
+ var literacy_string : String = GUINode.float_to_string_dp(80.0, 1)
+ _technology_literacy_label.set_text("§Y%s§W%%" % literacy_string)
+ _technology_literacy_label.set_tooltip_string_and_substitution_dict("TOPBAR_AVG_LITERACY", { "AVG": literacy_string })
if _technology_research_points_label:
_technology_research_points_label.set_text("§Y%s" % GUINode.float_to_string_dp(10.0, 2))
+ # TODO - test tooltip, replace with actual values from the simulation
+ _technology_research_points_label.set_tooltip_string_and_substitution_dict("TECH_DAILY_RESEARCHPOINTS_TOOLTIP", {
+ "POPTYPE": "Clergymen", "VALUE": GUINode.float_to_string_dp(1.42, 2),
+ "FRACTION": GUINode.float_to_string_dp(0.95, 2), "OPTIMAL": GUINode.float_to_string_dp(2, 2)
+ })
## Politics
if _politics_party_icon:
@@ -418,6 +485,9 @@ func _update_info() -> void:
_military_leadership_points_label.set_text("§Y%d" % 15)
func _update_speed_controls() -> void:
+ var paused : bool = MenuSingleton.is_paused()
+ var speed : int = MenuSingleton.get_speed()
+
# TODO - decide whether to disable these or not
# (they don't appear to get disabled in the base game)
#if _speed_up_button:
@@ -426,10 +496,25 @@ func _update_speed_controls() -> void:
#if _speed_down_button:
# _speed_down_button.disabled = not MenuSingleton.can_decrease_speed()
+ if _pause_bg_button:
+ _pause_bg_button.set_tooltip_string("TOPBAR_DATE_IS_PAUSED" if paused else "TOPBAR_DATE")
+
if _speed_indicator_button:
var index : int = 1
- if not MenuSingleton.is_paused():
- index += MenuSingleton.get_speed() + 1
+ if paused:
+ _speed_indicator_button.set_tooltip_string("TOPBAR_PAUSE_INDICATOR")
+ else:
+ index += speed + 1
+ const SPEED_NAMES : PackedStringArray = [
+ "SLOWEST_SPEED",
+ "SLOW_SPEED",
+ "NORMAL_SPEED",
+ "FAST_SPEED",
+ "FASTEST_SPEED"
+ ]
+ _speed_indicator_button.set_tooltip_string_and_substitution_dict(
+ "TOPBAR_SPEED_INDICATOR", { "SPEED": SPEED_NAMES[speed] if speed < SPEED_NAMES.size() else str(speed) }
+ )
_speed_indicator_button.set_icon_index(index)
# REQUIREMENTS: