diff options
Diffstat (limited to 'game/src/Game/GameSession/ProvinceOverviewPanel.gd')
-rw-r--r-- | game/src/Game/GameSession/ProvinceOverviewPanel.gd | 237 |
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()): |