diff options
author | Hop311 <Hop3114@gmail.com> | 2024-08-30 23:30:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-30 23:30:12 +0200 |
commit | 2e0bc5b556b9c6df46a8cdd48d3f109e0ac76b63 (patch) | |
tree | 2c521b99fe6cd0a7fd5d6a29e55645b3415792b3 /game/src/Game/GameSession/Topbar.gd | |
parent | f54e454afb90f8868e7c62529e2a388fdaadf20b (diff) | |
parent | bdc2ba527bc02e7cdf977f6040f2ca85aa4f9a94 (diff) |
Merge pull request #253 from OpenVicProject/tooltip
Tooltips
Diffstat (limited to 'game/src/Game/GameSession/Topbar.gd')
-rw-r--r-- | game/src/Game/GameSession/Topbar.gd | 304 |
1 files changed, 189 insertions, 115 deletions
diff --git a/game/src/Game/GameSession/Topbar.gd b/game/src/Game/GameSession/Topbar.gd index d6cc358..e3e0809 100644 --- a/game/src/Game/GameSession/Topbar.gd +++ b/game/src/Game/GameSession/Topbar.gd @@ -1,8 +1,8 @@ extends GUINode # Country info -var _country_flag_texture : GFXMaskedFlagTexture -var _country_flag_overlay_texture : GFXSpriteTexture +var _country_flag_button : GUIMaskedFlagButton +var _country_flag_overlay_icon : GUIIcon var _country_name_label : GUILabel var _country_rank_label : GUILabel var _country_prestige_label : GUILabel @@ -14,41 +14,40 @@ var _country_military_power_rank_label : GUILabel var _country_colonial_power_label : GUILabel # Time controls -var _speed_up_button : Button -var _speed_down_button : Button -var _speed_indicator_texture : GFXSpriteTexture +var _speed_up_button : GUIIconButton +var _speed_down_button : GUIIconButton +var _pause_bg_button : GUIButton +var _speed_indicator_button : GUIIconButton var _date_label : GUILabel -# NationManagement.Screen-Button +# NationManagement.Screen-GUIIconButton var _nation_management_buttons : Dictionary -# NationManagement.Screen-GFXSpriteTexture -var _nation_management_button_textures : Dictionary # Production -var _production_top_goods_textures : Array[GFXSpriteTexture] -var _production_alert_building_texture : GFXSpriteTexture -var _production_alert_closed_texture : GFXSpriteTexture -var _production_alert_unemployment_texture : GFXSpriteTexture +var _production_top_goods_icons : Array[GUIIcon] +var _production_alert_building_icon : GUIIcon +var _production_alert_closed_icon : GUIIcon +var _production_alert_unemployment_icon : GUIIcon # Budget # TODO - line chart var _budget_funds_label : GUILabel # Technology -var _technology_progress_bar : TextureProgressBar +var _technology_progress_bar : GUIProgressBar var _technology_current_research_label : GUILabel var _technology_literacy_label : GUILabel var _technology_research_points_label : GUILabel # Politics -var _politics_party_icon : TextureRect +var _politics_party_icon : GUIIcon var _politics_party_label : GUILabel var _politics_suppression_points_label : GUILabel var _politics_infamy_label : GUILabel -var _politics_reforms_texture : GFXSpriteTexture -var _politics_decisions_texture : GFXSpriteTexture -var _politics_election_texture : GFXSpriteTexture -var _politics_rebels_texture : GFXSpriteTexture +var _politics_reforms_button : GUIButton +var _politics_decisions_button : GUIIconButton +var _politics_election_icon : GUIIcon +var _politics_rebels_button : GUIIconButton # Population var _population_total_size_label : GUILabel @@ -57,17 +56,17 @@ var _population_militancy_label : GUILabel var _population_consciousness_label : GUILabel # Trade -var _trade_imported_textures : Array[GFXSpriteTexture] -var _trade_exported_textures : Array[GFXSpriteTexture] +var _trade_imported_icons : Array[GUIIcon] +var _trade_exported_icons : Array[GUIIcon] # Diplomacy var _diplomacy_peace_label : GUILabel var _diplomacy_war_enemies_overlapping_elements_box : GUIOverlappingElementsBox var _diplomacy_diplomatic_points_label : GUILabel -var _diplomacy_alert_colony_texture : GFXSpriteTexture -var _diplomacy_alert_crisis_texture : GFXSpriteTexture -var _diplomacy_alert_sphere_texture : GFXSpriteTexture -var _diplomacy_alert_great_power_texture : GFXSpriteTexture +var _diplomacy_alert_colony_button : GUIIconButton +var _diplomacy_alert_crisis_icon : GUIIcon +var _diplomacy_alert_sphere_icon : GUIIcon +var _diplomacy_alert_great_power_icon : GUIIcon # Military var _military_army_size_label : GUILabel @@ -87,45 +86,61 @@ func _ready() -> void: ]) # Disables all consuming invisible panel - var topbar := get_panel_from_nodepath(^"./topbar") + var topbar : Panel = get_panel_from_nodepath(^"./topbar") if topbar: topbar.mouse_filter = Control.MOUSE_FILTER_IGNORE set_click_mask_from_nodepaths([^"./topbar/topbar_bg", ^"./topbar/topbar_paper"]) # Country info - var country_flag_button = get_button_from_nodepath(^"./topbar/player_flag") - if country_flag_button: - country_flag_button.pressed.connect( + _country_flag_button = get_gui_masked_flag_button_from_nodepath(^"./topbar/player_flag") + if _country_flag_button: + _country_flag_button.pressed.connect( func() -> void: # TODO - open the diplomacy menu on the Wars tab Events.NationManagementScreens.open_nation_management_screen(NationManagement.Screen.DIPLOMACY) ) - _country_flag_texture = GUINode.get_gfx_masked_flag_texture_from_node(country_flag_button) - _country_flag_overlay_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/topbar_flag_overlay") + _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_button_from_nodepath(^"./topbar/button_speedup") + _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_down_button = get_button_from_nodepath(^"./topbar/button_speeddown") + _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 : Button = get_button_from_nodepath(^"./topbar/pause_bg") - if pause_bg_button: - pause_bg_button.pressed.connect(_on_play_pause_button_pressed) - var speed_indicator_button = get_button_from_nodepath(^"./topbar/speed_indicator") - if speed_indicator_button: - speed_indicator_button.pressed.connect(_on_play_pause_button_pressed) - _speed_indicator_texture = GUINode.get_gfx_sprite_texture_from_node(speed_indicator_button) + _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) _date_label = get_gui_label_from_nodepath(^"./topbar/DateText") # Nation management screens @@ -140,40 +155,54 @@ func _ready() -> void: NationManagement.Screen.MILITARY : ^"./topbar/topbarbutton_military" } for screen : NationManagement.Screen in screen_nodepaths: - var button : Button = get_button_from_nodepath(screen_nodepaths[screen]) + var button : GUIIconButton = get_gui_icon_button_from_nodepath(screen_nodepaths[screen]) if button: button.pressed.connect( Events.NationManagementScreens.toggle_nation_management_screen.bind(screen) ) - var icon : GFXSpriteTexture = GUINode.get_gfx_sprite_texture_from_node(button) - if icon: - _nation_management_buttons[screen] = button - _nation_management_button_textures[screen] = icon + # 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 ) # Production const PRODUCED_GOOD_COUNT : int = 5 - for idx in PRODUCED_GOOD_COUNT: - _production_top_goods_textures.push_back(get_gfx_sprite_texture_from_nodepath("./topbar/topbar_produced%d" % idx)) - _production_alert_building_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_building_factories") - _production_alert_closed_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_closed_factories") - _production_alert_unemployment_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_unemployed_workers") + for idx : int in PRODUCED_GOOD_COUNT: + _production_top_goods_icons.push_back(get_gui_icon_from_nodepath("./topbar/topbar_produced%d" % idx)) + _production_alert_building_icon = get_gui_icon_from_nodepath(^"./topbar/alert_building_factories") + _production_alert_closed_icon = get_gui_icon_from_nodepath(^"./topbar/alert_closed_factories") + _production_alert_unemployment_icon = get_gui_icon_from_nodepath(^"./topbar/alert_unemployed_workers") # Budget _budget_funds_label = get_gui_label_from_nodepath(^"./topbar/budget_funds") # Technology - _technology_progress_bar = get_progress_bar_from_nodepath(^"./topbar/topbar_tech_progress") + 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_texture_rect_from_nodepath(^"./topbar/politics_party_icon") + _politics_party_icon = get_gui_icon_from_nodepath(^"./topbar/politics_party_icon") _politics_party_label = get_gui_label_from_nodepath(^"./topbar/politics_ruling_party") - var politics_suppression_button : Button = get_button_from_nodepath(^"./topbar/topbar_supression_icon") + var politics_suppression_button : GUIIconButton = get_gui_icon_button_from_nodepath(^"./topbar/topbar_supression_icon") if politics_suppression_button: politics_suppression_button.pressed.connect( func() -> void: @@ -182,31 +211,28 @@ func _ready() -> void: ) _politics_suppression_points_label = get_gui_label_from_nodepath(^"./topbar/politics_supressionpoints_value") _politics_infamy_label = get_gui_label_from_nodepath(^"./topbar/politics_infamy_value") - var politics_reforms_button : Button = get_button_from_nodepath(^"./topbar/alert_can_do_reforms") - if politics_reforms_button: - politics_reforms_button.pressed.connect( + _politics_reforms_button = get_gui_icon_button_from_nodepath(^"./topbar/alert_can_do_reforms") + if _politics_reforms_button: + _politics_reforms_button.pressed.connect( func() -> void: # TODO - open the politics menu on the Reforms tab Events.NationManagementScreens.toggle_nation_management_screen(NationManagement.Screen.POLITICS) ) - _politics_reforms_texture = GUINode.get_gfx_sprite_texture_from_node(politics_reforms_button) - var politics_decisions_button : Button = get_button_from_nodepath(^"./topbar/alert_can_do_decisions") - if politics_decisions_button: - politics_decisions_button.pressed.connect( + _politics_decisions_button = get_gui_icon_button_from_nodepath(^"./topbar/alert_can_do_decisions") + if _politics_decisions_button: + _politics_decisions_button.pressed.connect( func() -> void: # TODO - open the politics menu on the Decisions tab Events.NationManagementScreens.toggle_nation_management_screen(NationManagement.Screen.POLITICS) ) - _politics_decisions_texture = GUINode.get_gfx_sprite_texture_from_node(politics_decisions_button) - _politics_election_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_is_in_election") - var politics_rebels_button : Button = get_button_from_nodepath(^"./topbar/alert_have_rebels") - if politics_rebels_button: - politics_rebels_button.pressed.connect( + _politics_election_icon = get_gui_icon_from_nodepath(^"./topbar/alert_is_in_election") + _politics_rebels_button = get_gui_icon_button_from_nodepath(^"./topbar/alert_have_rebels") + if _politics_rebels_button: + _politics_rebels_button.pressed.connect( func() -> void: # TODO - open the politics menu on the Movements tab Events.NationManagementScreens.toggle_nation_management_screen(NationManagement.Screen.POLITICS) ) - _politics_rebels_texture = GUINode.get_gfx_sprite_texture_from_node(politics_rebels_button) # Population _population_total_size_label = get_gui_label_from_nodepath(^"./topbar/population_total_value") @@ -217,24 +243,23 @@ func _ready() -> void: # Trade const TRADE_GOOD_COUNT : int = 3 for idx in TRADE_GOOD_COUNT: - _trade_imported_textures.push_back(get_gfx_sprite_texture_from_nodepath("./topbar/topbar_import%d" % idx)) - _trade_exported_textures.push_back(get_gfx_sprite_texture_from_nodepath("./topbar/topbar_export%d" % idx)) + _trade_imported_icons.push_back(get_gui_icon_from_nodepath("./topbar/topbar_import%d" % idx)) + _trade_exported_icons.push_back(get_gui_icon_from_nodepath("./topbar/topbar_export%d" % idx)) # Diplomacy _diplomacy_peace_label = get_gui_label_from_nodepath(^"./topbar/diplomacy_status") _diplomacy_war_enemies_overlapping_elements_box = get_gui_overlapping_elements_box_from_nodepath(^"./topbar/diplomacy_at_war") _diplomacy_diplomatic_points_label = get_gui_label_from_nodepath(^"./topbar/diplomacy_diplopoints_value") - var diplomacy_alert_colony_button : Button = get_button_from_nodepath(^"./topbar/alert_colony") - if diplomacy_alert_colony_button: - diplomacy_alert_colony_button.pressed.connect( + _diplomacy_alert_colony_button = get_gui_icon_button_from_nodepath(^"./topbar/alert_colony") + if _diplomacy_alert_colony_button: + _diplomacy_alert_colony_button.pressed.connect( func() -> void: # TODO - move to and select province in upgradable colony if any exist Events.NationManagementScreens.open_nation_management_screen(NationManagement.Screen.DIPLOMACY) ) - _diplomacy_alert_colony_texture = GUINode.get_gfx_sprite_texture_from_node(diplomacy_alert_colony_button) - _diplomacy_alert_crisis_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_crisis") - _diplomacy_alert_sphere_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_can_increase_opinion") - _diplomacy_alert_great_power_texture = get_gfx_sprite_texture_from_nodepath(^"./topbar/alert_loosing_gp") + _diplomacy_alert_crisis_icon = get_gui_icon_from_nodepath(^"./topbar/alert_crisis") + _diplomacy_alert_sphere_icon = get_gui_icon_from_nodepath(^"./topbar/alert_can_increase_opinion") + _diplomacy_alert_great_power_icon = get_gui_icon_from_nodepath(^"./topbar/alert_loosing_gp") # Military _military_army_size_label = get_gui_label_from_nodepath(^"./topbar/military_army_value") @@ -249,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_texture: - _country_flag_texture.set_flag_country_name(player_country) + 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_texture: + if _country_flag_overlay_icon: # 1 - Great Power # 2 - Secondary Power # 3 - Civilised # 4 - Uncivilised - _country_flag_overlay_texture.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 @@ -295,24 +341,25 @@ 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: _date_label.text = MenuSingleton.get_longform_date() ## Production - for idx : int in _production_top_goods_textures.size(): - if _production_top_goods_textures[idx]: - _production_top_goods_textures[idx].set_icon_index(idx + 2) + for idx : int in _production_top_goods_icons.size(): + if _production_top_goods_icons[idx]: + _production_top_goods_icons[idx].set_icon_index(idx + 2) - if _production_alert_building_texture: - _production_alert_building_texture.set_icon_index(2) + if _production_alert_building_icon: + _production_alert_building_icon.set_icon_index(2) - if _production_alert_closed_texture: - _production_alert_closed_texture.set_icon_index(2) + if _production_alert_closed_icon: + _production_alert_closed_icon.set_icon_index(2) - if _production_alert_unemployment_texture: - _production_alert_unemployment_texture.set_icon_index(2) + if _production_alert_unemployment_icon: + _production_alert_unemployment_icon.set_icon_index(2) ## Budget if _budget_funds_label: @@ -331,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: @@ -351,17 +407,17 @@ func _update_info() -> void: if _politics_infamy_label: _politics_infamy_label.set_text("§Y%s" % GUINode.float_to_string_dp(0.0, 2)) - if _politics_reforms_texture: - _politics_reforms_texture.set_icon_index(2) + if _politics_reforms_button: + _politics_reforms_button.set_icon_index(2) - if _politics_decisions_texture: - _politics_decisions_texture.set_icon_index(2) + if _politics_decisions_button: + _politics_decisions_button.set_icon_index(2) - if _politics_election_texture: - _politics_election_texture.set_icon_index(2) + if _politics_election_icon: + _politics_election_icon.set_icon_index(2) - if _politics_rebels_texture: - _politics_rebels_texture.set_icon_index(2) + if _politics_rebels_button: + _politics_rebels_button.set_icon_index(2) ## Population if _population_total_size_label: @@ -386,13 +442,13 @@ func _update_info() -> void: _population_consciousness_label.set_text("§Y%s" % GUINode.float_to_string_dp(0.05, 2)) ## Trade - for idx : int in _trade_imported_textures.size(): - if _trade_imported_textures[idx]: - _trade_imported_textures[idx].set_icon_index(idx + 2 + _production_top_goods_textures.size()) + for idx : int in _trade_imported_icons.size(): + if _trade_imported_icons[idx]: + _trade_imported_icons[idx].set_icon_index(idx + 2 + _production_top_goods_icons.size()) - for idx : int in _trade_exported_textures.size(): - if _trade_exported_textures[idx]: - _trade_exported_textures[idx].set_icon_index(idx + 2 + _production_top_goods_textures.size() + _trade_imported_textures.size()) + for idx : int in _trade_exported_icons.size(): + if _trade_exported_icons[idx]: + _trade_exported_icons[idx].set_icon_index(idx + 2 + _production_top_goods_icons.size() + _trade_imported_icons.size()) ## Diplomacy if _diplomacy_peace_label: @@ -403,17 +459,17 @@ func _update_info() -> void: if _diplomacy_diplomatic_points_label: _diplomacy_diplomatic_points_label.set_text("§Y%s" % GUINode.float_to_string_dp(7.4, 0)) - if _diplomacy_alert_colony_texture: - _diplomacy_alert_colony_texture.set_icon_index(3) + if _diplomacy_alert_colony_button: + _diplomacy_alert_colony_button.set_icon_index(3) - if _diplomacy_alert_crisis_texture: - _diplomacy_alert_crisis_texture.set_icon_index(3) + if _diplomacy_alert_crisis_icon: + _diplomacy_alert_crisis_icon.set_icon_index(3) - if _diplomacy_alert_sphere_texture: - _diplomacy_alert_sphere_texture.set_icon_index(2) + if _diplomacy_alert_sphere_icon: + _diplomacy_alert_sphere_icon.set_icon_index(2) - if _diplomacy_alert_great_power_texture: - _diplomacy_alert_great_power_texture.set_icon_index(2) + if _diplomacy_alert_great_power_icon: + _diplomacy_alert_great_power_icon.set_icon_index(2) ## Military if _military_army_size_label: @@ -429,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: @@ -437,11 +496,26 @@ func _update_speed_controls() -> void: #if _speed_down_button: # _speed_down_button.disabled = not MenuSingleton.can_decrease_speed() - if _speed_indicator_texture: + 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 - _speed_indicator_texture.set_icon_index(index) + 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: # * UIFUN-71 @@ -463,4 +537,4 @@ func _on_decrease_speed_button_pressed() -> void: func _on_update_active_nation_management_screen(active_screen : NationManagement.Screen) -> void: for screen : NationManagement.Screen in _nation_management_buttons: - _nation_management_button_textures[screen].set_icon_index(1 + int(screen == active_screen)) + _nation_management_buttons[screen].set_icon_index(1 + int(screen == active_screen)) |