aboutsummaryrefslogtreecommitdiff
path: root/game/src
diff options
context:
space:
mode:
Diffstat (limited to 'game/src')
-rw-r--r--game/src/Game/Autoload/SoundManager.gd3
-rw-r--r--game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd2
-rw-r--r--game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd2
-rw-r--r--game/src/Game/GameSession/ProvinceIndexSampler.gdshaderinc2
-rw-r--r--game/src/Game/GameSession/ProvinceOverviewPanel.gd17
-rw-r--r--game/src/Game/GameSession/Tooltip.gd33
-rw-r--r--game/src/Game/GameSession/Topbar.gd2
-rw-r--r--game/src/Game/Model/XACLoader.gd4
-rw-r--r--game/src/Game/Model/XSMLoader.gd4
-rw-r--r--game/src/Game/MusicConductor/MusicConductor.gd21
-rw-r--r--game/src/Game/MusicConductor/MusicPlayer.gd2
11 files changed, 64 insertions, 28 deletions
diff --git a/game/src/Game/Autoload/SoundManager.gd b/game/src/Game/Autoload/SoundManager.gd
index 01562f8..520afb1 100644
--- a/game/src/Game/Autoload/SoundManager.gd
+++ b/game/src/Game/Autoload/SoundManager.gd
@@ -41,7 +41,7 @@ func play_effect_stream(sound : AudioStream, volume : float = 1.0) -> void:
func play_effect(sound : String) -> void:
play(sound, "SFX")
-
+
func play_effect_compat(sfx : String, fallback : AudioStream=null) -> void:
var sound:AudioStreamWAV = SoundSingleton.get_sound_stream(sfx)
var volume:float = SoundSingleton.get_sound_base_volume(sfx)
@@ -53,4 +53,3 @@ func play_effect_compat(sfx : String, fallback : AudioStream=null) -> void:
play_effect_stream(fallback)
else:
push_warning("Failed to find sound %s" % sfx)
-
diff --git a/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd b/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd
index 021c9f2..45e91d3 100644
--- a/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd
+++ b/game/src/Game/GameSession/NationManagementScreen/BudgetMenu.gd
@@ -203,7 +203,7 @@ func _update_info() -> void:
if _active:
if _gold_label:
- _gold_label.text = "%s¤" % GUINode.float_to_string_dp(_incVal - (_incVal % 7), 1)
+ _gold_label.text = "%s¤" % GUINode.float_to_string_dp(_incVal - (_incVal % 7), 1)
if _total_inc_label:
_total_inc_label.text = "%s¤" % GUINode.float_to_string_dp_dynamic(_incVal)
diff --git a/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd b/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd
index eb57387..b55d227 100644
--- a/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd
+++ b/game/src/Game/GameSession/NationManagementScreen/PopulationMenu.gd
@@ -160,7 +160,7 @@ func _generate_province_list_row(index : int, type : MenuSingleton.ProvinceListE
return OK
func _setup_province_list() -> void:
- if not _province_listbox:
+ if not _province_listbox:
_province_listbox = get_gui_listbox_from_nodepath(^"./country_pop/pop_province_list")
if not _province_listbox:
diff --git a/game/src/Game/GameSession/ProvinceIndexSampler.gdshaderinc b/game/src/Game/GameSession/ProvinceIndexSampler.gdshaderinc
index 1adcd95..acebdc6 100644
--- a/game/src/Game/GameSession/ProvinceIndexSampler.gdshaderinc
+++ b/game/src/Game/GameSession/ProvinceIndexSampler.gdshaderinc
@@ -13,7 +13,7 @@ uvec3 vec3_to_uvec3(vec3 v) {
// (u, v) -> (province index bottom byte, province index top byte, terrain index byte)
uvec3 read_uvec3(vec2 uv) {
uv *= province_shape_subdivisions;
- vec2 subdivision_coords = mod(floor(uv), province_shape_subdivisions);
+ vec2 subdivision_coords = mod(floor(uv), province_shape_subdivisions);
float idx = subdivision_coords.x + subdivision_coords.y * province_shape_subdivisions.x;
return vec3_to_uvec3(texture(province_shape_tex, vec3(uv, idx)).rgb);
}
diff --git a/game/src/Game/GameSession/ProvinceOverviewPanel.gd b/game/src/Game/GameSession/ProvinceOverviewPanel.gd
index 66fd463..a9f0ae2 100644
--- a/game/src/Game/GameSession/ProvinceOverviewPanel.gd
+++ b/game/src/Game/GameSession/ProvinceOverviewPanel.gd
@@ -240,6 +240,10 @@ func _update_info() -> void:
const _province_info_controller_key : StringName = &"controller"
const _province_info_rgo_name_key : StringName = &"rgo_name"
const _province_info_rgo_icon_key : StringName = &"rgo_icon"
+ const _province_info_rgo_total_employees_key : StringName = &"rgo_total_employees"
+ const _province_info_rgo_employment_percentage_key : StringName = &"rgo_employment_percentage"
+ const _province_info_rgo_output_quantity_yesterday_key : StringName = &"rgo_output_quantity_yesterday"
+ const _province_info_rgo_revenue_yesterday_key : StringName = &"rgo_revenue_yesterday"
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"
@@ -305,22 +309,19 @@ func _update_info() -> void:
_rgo_icon.set_icon_index(_province_info.get(_province_info_rgo_icon_key, -1) + 2)
if _rgo_produced_label:
- # TODO - replace name with amount produced
- _rgo_produced_label.text = _province_info.get(_province_info_rgo_name_key, _province_info_rgo_name_key + _missing_suffix)
+ _rgo_produced_label.text = GUINode.float_to_string_dp(_province_info.get(_province_info_rgo_output_quantity_yesterday_key, 0), 3)
if _rgo_income_label:
- # TODO - add £ sign and replace placeholder with actual value
- _rgo_income_label.text = "%s¤" % GUINode.float_to_string_dp(12.34567, 3)
+ _rgo_income_label.text = "%s¤" % GUINode.float_to_string_dp(_province_info.get(_province_info_rgo_revenue_yesterday_key, 0), 3)
if _rgo_employment_percentage_icon:
- pass
+ _rgo_employment_percentage_icon.set_icon_index(int(_province_info.get(_province_info_rgo_employment_percentage_key, 0) / 10) + 1)
if _rgo_employment_population_label:
- # TODO - replace placeholder with actual value
- _rgo_employment_population_label.text = GUINode.int_to_string_suffixed(_province_info.get(_province_info_total_population_key, 0) / 10)
+ _rgo_employment_population_label.text = GUINode.int_to_string_suffixed(_province_info.get(_province_info_rgo_total_employees_key, 0))
if _rgo_employment_percentage_label:
- pass
+ _rgo_employment_percentage_label.text = "%d%%" % _province_info.get(_province_info_rgo_employment_percentage_key, 0)
if _crime_name_label:
_crime_name_label.text = _province_info.get(_province_info_crime_name_key, "")
diff --git a/game/src/Game/GameSession/Tooltip.gd b/game/src/Game/GameSession/Tooltip.gd
index c110e2e..f079e4c 100644
--- a/game/src/Game/GameSession/Tooltip.gd
+++ b/game/src/Game/GameSession/Tooltip.gd
@@ -7,17 +7,48 @@ func _ready() -> void:
_tooltip_label = get_gui_label_from_nodepath(^"./ToolTip")
if _tooltip_label:
+ _update_tooltip_max_size()
_tooltip_label.set_auto_adjust_to_content_size(true)
MenuSingleton.update_tooltip.connect(update_tooltip)
hide()
+func _notification(what : int) -> void:
+ match what:
+ NOTIFICATION_RESIZED:
+ _update_tooltip_max_size()
+
+func _update_tooltip_max_size() -> void:
+ if _tooltip_label:
+ var max_size : Vector2 = _tooltip_label.get_base_max_size()
+ var window_size : Vector2 = get_size()
+ _tooltip_label.set_max_size(Vector2(min(max_size.x, window_size.x), window_size.y))
+
func update_tooltip(text : String, substitution_dict : Dictionary, position : Vector2) -> void:
- if text:
+ if text and _tooltip_label:
_tooltip_label.set_text(text)
_tooltip_label.set_substitution_dict(substitution_dict)
+ _tooltip_label.force_update_lines()
+
+ var adjusted_rect : Rect2 = _tooltip_label.get_adjusted_rect()
+
+ # Shift position so that the tooltip doesn't go past the bottom or right sides of the window
+ var bottom_right : Vector2 = position + adjusted_rect.position + adjusted_rect.size - get_size()
+ if bottom_right.x > 0:
+ position.x -= bottom_right.x
+ if bottom_right.y > 0:
+ position.y -= bottom_right.y
+
+ # Shift position so that the tooltip doesn't go past the top or left sides of the window
+ var top_left : Vector2 = position + adjusted_rect.position
+ if top_left.x < 0:
+ position.x -= top_left.x
+ if top_left.y < 0:
+ position.y -= top_left.y
+
_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 2f1fdbf..aecdced 100644
--- a/game/src/Game/GameSession/Topbar.gd
+++ b/game/src/Game/GameSession/Topbar.gd
@@ -570,7 +570,7 @@ 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
+ # TODO - decide whether to disable these or not
# (they don't appear to get disabled in the base game)
#if _speed_up_button:
# _speed_up_button.disabled = not MenuSingleton.can_increase_speed()
diff --git a/game/src/Game/Model/XACLoader.gd b/game/src/Game/Model/XACLoader.gd
index 6b12cf2..c16d1cd 100644
--- a/game/src/Game/Model/XACLoader.gd
+++ b/game/src/Game/Model/XACLoader.gd
@@ -197,13 +197,13 @@ static func _load_xac_model(source_file : String, is_unit : bool) -> Node3D:
break
skinning_chunk_ind += 1
if skinning_chunk_ind >= len(skinningChunks):
- skinning_chunk_ind = 1
+ skinning_chunk_ind = 1
applyVertexWeights = false
var meshInstance : MeshInstance3D = MeshInstance3D.new()
node.add_child(meshInstance)
meshInstance.owner = node
-
+
#stop the culling of units near the tops of screens
meshInstance.extra_cull_margin = EXTRA_CULL_MARGIN
diff --git a/game/src/Game/Model/XSMLoader.gd b/game/src/Game/Model/XSMLoader.gd
index bc85f9b..e1706ae 100644
--- a/game/src/Game/Model/XSMLoader.gd
+++ b/game/src/Game/Model/XSMLoader.gd
@@ -122,8 +122,8 @@ class MetadataChunk:
var unused : float
var fMaxAcceptableError : float
var fps : int # int32
- var exporterMajorVersion : int # byte
- var exporterMinorVersion : int # byte
+ var exporterMajorVersion : int # byte
+ var exporterMinorVersion : int # byte
var pad : int # 2x byte
var sourceApp : String
var origFileName : String
diff --git a/game/src/Game/MusicConductor/MusicConductor.gd b/game/src/Game/MusicConductor/MusicConductor.gd
index 7103aff..ade8fb4 100644
--- a/game/src/Game/MusicConductor/MusicConductor.gd
+++ b/game/src/Game/MusicConductor/MusicConductor.gd
@@ -34,7 +34,7 @@ func get_all_song_names() -> PackedStringArray:
for si : SongInfo in _available_songs:
songNames.append(si.song_name)
return songNames
-
+
func get_all_song_paths() -> PackedStringArray:
var songPaths : PackedStringArray = []
for si : SongInfo in _available_songs:
@@ -96,15 +96,20 @@ func setup_compat_song(file_name) -> void:
var song = SongInfo.new()
var stream = SoundSingleton.get_song(file_name)
+ if stream == null:
+ push_error("Audio Stream for compat song %s was null" % file_name)
+ return
+
var metadata = MusicMetadata.new()
metadata.set_from_stream(stream)
var title = metadata.title
+
if title == "":
#use the file name without the extension if there's no metadata
title = file_name.split(".")[0]
song.init_stream(file_name,title,stream)
_available_songs.append(song)
-
+
func add_compat_songs() -> void:
for file_name : String in SoundSingleton.song_list:
setup_compat_song(file_name)
@@ -123,13 +128,13 @@ func add_ootb_music() -> void:
func generate_playlist() -> void:
var song_names = MusicConductor.get_all_song_paths()
var possible_indices = range(len(song_names)-1)
-
+
var title_index = song_names.find(SoundSingleton.title_theme)
possible_indices.remove_at(title_index)
-
+
var actual_playlist_len = min(preferred_playlist_len,len(possible_indices))
-
- #if the playlist size is too large or small, make it the same size as what we
+
+ #if the playlist size is too large or small, make it the same size as what we
#need to support
if len(playlist) != actual_playlist_len:
playlist.resize(actual_playlist_len)
@@ -138,14 +143,14 @@ func generate_playlist() -> void:
#The song we just played can be in the playlist, just not the first one
if last_played != -1:
possible_indices.remove_at(last_played)
-
+
#essentially shuffle-bag randomness, picking from a list of song indices
for i in range(actual_playlist_len):
var ind = randi_range(0,len(possible_indices)-1)
#add back the last song we just played as an option
if i==2:
possible_indices.append(last_played)
-
+
playlist[i] = possible_indices[ind]
possible_indices.remove_at(ind)
diff --git a/game/src/Game/MusicConductor/MusicPlayer.gd b/game/src/Game/MusicConductor/MusicPlayer.gd
index 17285dc..0db44ca 100644
--- a/game/src/Game/MusicConductor/MusicPlayer.gd
+++ b/game/src/Game/MusicConductor/MusicPlayer.gd
@@ -27,7 +27,7 @@ func _process(_delta : float) -> void:
_progress_slider.value = MusicConductor.get_current_song_progress_percentage()
func _update_play_pause_button(_arg1 : Variant = null, _arg2 : Variant = null) -> void:
- _play_pause_button.text = "◼" if MusicConductor.is_paused() else "▶"
+ _play_pause_button.text = "▶️" if MusicConductor.is_paused() else "❚❚"
func _on_play_pause_button_pressed() -> void:
MusicConductor.toggle_play_pause()