aboutsummaryrefslogtreecommitdiff
path: root/game/src/Game/GameSession/ProvinceOverviewPanel.gd
diff options
context:
space:
mode:
author Hop311 <Hop3114@gmail.com>2023-12-11 12:08:55 +0100
committer GitHub <noreply@github.com>2023-12-11 12:08:55 +0100
commit0b3a162d3db840996c3d89e65dfe9270faebffe5 (patch)
treeb22d464dbf8e0e2569b9be5aa130e4def2e51207 /game/src/Game/GameSession/ProvinceOverviewPanel.gd
parenta6952efba078e49d6555b0586230986a2cb7ed40 (diff)
parentfd375bdb35d8a7b2ac9cf3dd02cdb0f197451a0b (diff)
Merge pull request #169 from OpenVicProject/guinode
Big UI commit - GUINode, MaskedFlag, PieChart, etc
Diffstat (limited to 'game/src/Game/GameSession/ProvinceOverviewPanel.gd')
-rw-r--r--game/src/Game/GameSession/ProvinceOverviewPanel.gd237
1 files changed, 173 insertions, 64 deletions
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()):