diff options
author | Hop311 <Hop3114@gmail.com> | 2023-04-18 19:55:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-18 19:55:10 +0200 |
commit | ea077c8a7c78477bd247c7fbd21de13bcf2285e9 (patch) | |
tree | 0cc2be6ef3ab1f2af5c2806f60abe988ca6aa7b5 /game | |
parent | 258a088018d36e987b3ffe4a9b418a6c21ad9217 (diff) | |
parent | 1fdd198f943a41468b03b2cdc62c24147f707239 (diff) |
Merge pull request #88 from OpenVic2Project/map-drawing
Further Map Stuff
Diffstat (limited to 'game')
26 files changed, 748 insertions, 95 deletions
diff --git a/game/art/terrain/farmlands.png b/game/art/terrain/farmlands.png Binary files differnew file mode 100644 index 0000000..3702ad0 --- /dev/null +++ b/game/art/terrain/farmlands.png diff --git a/game/art/terrain/terrain.png.import b/game/art/terrain/farmlands.png.import index d7a078f..4a06b1f 100644 --- a/game/art/terrain/terrain.png.import +++ b/game/art/terrain/farmlands.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cmw0pvjthnn8c" -path="res://.godot/imported/terrain.png-06c63c2b87b3131a2067f668f87a9d67.ctex" +uid="uid://ckf222w5usrsu" +path="res://.godot/imported/farmlands.png-821213ab9dba19cea6f6c966b3a3760b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://art/terrain/terrain.png" -dest_files=["res://.godot/imported/terrain.png-06c63c2b87b3131a2067f668f87a9d67.ctex"] +source_file="res://art/terrain/farmlands.png" +dest_files=["res://.godot/imported/farmlands.png-821213ab9dba19cea6f6c966b3a3760b.ctex"] [params] @@ -21,7 +21,7 @@ compress/lossy_quality=0.7 compress/hdr_compression=1 compress/normal_map=2 compress/channel_pack=0 -mipmaps/generate=true +mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" diff --git a/game/art/terrain/terrain.png b/game/art/terrain/terrain.png Binary files differdeleted file mode 100644 index 6d36dee..0000000 --- a/game/art/terrain/terrain.png +++ /dev/null diff --git a/game/common/map/provinces.json b/game/common/map/provinces.json index 66de29b..71be5cb 100644 --- a/game/common/map/provinces.json +++ b/game/common/map/provinces.json @@ -2,8 +2,222 @@ "prov_britain": [150, 0, 0], "prov_ireland": [23, 147, 31], "prov_iceland": "343D91", + "prov_corsica": "FFD800", + "prov_sardinia": "00FFFF", + "prov_sicily": "FFA13D", + "prov_malta": "96E6FF", + "prov_cyprus": "FFE682", + "prov_greenland": "7A66FF", + "prov_baleares": "FF9E21", + "prov_gotland": "8300FF", + "prov_crete": "FF3523", + "prov_jan_mayen": "003FFF", + "prov_faroes": "964B00", + "prov_mann": "935575", + "prov_shetlands": "916F7D", + "prov_orkney": "8E1C70", + "prov_channel_islands": "8C6267", + "prov_madiera": "87580C", + "prov_canarias": "843740", + "prov_sjaeland": "820B02", + "prov_bornholm": "7F512F", + "prov_bear_island": "AE2AD6", + "prov_pantelleria": "FFA575", + "prov_iberia": "FF425D", + "prov_scandinavia": "005F32", + "prov_jutland": "B7004B", + "prov_fyn": "B55C63", + "prov_hiiumaa": "52FFB2", + "prov_saaremaa": "B5E31D", + "prov_italy": "47872C", + "prov_elba": "333333", + "prov_france": "0B0BC6", + "prov_netherlands": "FF472C", + "prov_belgium": "8C6A16", + "prov_luxembourg": "8FB7C6", + "prov_switzerland": "A50000", + "prov_balkans": "00FF5D", + "prov_crimea": "752179", + "prov_germany": "303030", + "prov_poland": "C90043", + "prov_baltics": "6327C4", + "prov_finland": "E8E8E8", + "prov_aland": "8769B3", + "prov_ukraine": "C1CB00", + "prov_russia": "006311", + + "prov_north_america": "A114FF", "prov_cuba": "1E29FF", + "prov_nova_scotia": "1115FF", + "prov_bermuda": "FF2370", + "prov_jamaica": "329600", + "prov_hispaniola": "742B7C", + "prov_aleutians": "FF07AC", + "prov_bahamas": "824261", + "prov_turks_and_caicos": "7F4424", + "prov_puerto_rico": "0D7C57", + "prov_barbados": "747A48", + "prov_grenada": "32774B", + "prov_st_vincent": "535C75", + "prov_st_lucia": "E15CEE", + "prov_martinique": "EDB274", + "prov_dominica": "EAE77E", + "prov_guadeloupe": "E8279E", + "prov_montserrat": "80AAE5", + "prov_antigua": "E2AEB9", + "prov_barbuda": "E0966D", + "prov_st_kitts": "DD85DA", + "prov_west_virgin_islands": "304716", + "prov_east_virgin_islands": "44321E", + "prov_cayman_islands": "FF7900", + "prov_angulia": "FF3D57", + "prov_central_america": "005B5E", + "prov_mexico": "3BA533", + + "prov_south_america": "2F7A22", + "prov_galapagos": "638293", + "prov_falklands": "91451F", + "prov_south_georgia": "8E8B8E", + + "prov_africa": "7F3300", "prov_madagascar": "790091", + "prov_socotra": "89801A", + "prov_mauritius": "1C8400", + "prov_reunion": "7D821F", + "prov_comoros": "7F5731", + "prov_sao_tome": "FFAFE8", + "prov_fernando_po": "FF665B", + "prov_cape_verde": "00FF48", + "prov_ascension": "7C3B3E", + "prov_st_helena": "7A6C48", + "prov_tristan_da_cunha": "77680E", + "prov_seychelles": "EF68FF", + "prov_prince_edward_islands": "826F68", + "prov_kerguelen_islands": "671F7F", + "prov_heard_island": "7C4244", + "prov_egypt": "A5815B", + "prov_morocco": "D44509", + + "prov_middle_east": "615EA8", "prov_ceylon": "FF6A00", - "prov_formosa": "82B1FF" + "prov_formosa": "82B1FF", + "prov_sakhalin": "006421", + "prov_maldives": "DC0000", + "prov_hainan": "688785", + "prov_hokkaido": "BA0DB5", + "prov_diego_garcia": "752268", + "prov_philippines": "FFA5AD", + "prov_india": "720041", + "prov_andamans": "706054", + "prov_nicobar_islands": "30006B", + "prov_indochina": "007272", + "prov_korea": "1E2570", + "prov_okinawa": "216D38", + "prov_yaeyama": "6B120A", + "prov_kyushu": "9E2521", + "prov_shikoku": "6F9B61", + "prov_japan": "99581B", + "prov_kurils": "992B15", + "prov_manchuria": "B79900", + "prov_china": "B57A53", + "prov_central_asia": "00B2B2", + "prov_siberia": "000EAF", + "prov_iran": "703E1D", + "prov_anatolia": "A81000", + + "prov_oceania": "FF4C00", + "prov_indonesia": "A56A9E", + "prov_north_island": "DB41AF", + "prov_south_island": "D86E47", + "prov_tasmania": "D6BF2C", + "prov_australia": "5BB1D3", + "prov_hawaii": "008C5D", + + "prov_aral_sea": "AA61C6", + "prov_caspian_sea": "00C413", + "prov_lake_ladoga": "462A64", + "prov_lake_ontario": "46CD64", + "prov_lake_erie": "9F2663", + "prov_lake_huron": "9FC6EA", + "prov_lake_michigan": "9FC62A", + "prov_lake_superior": "9F352A", + "prov_lake_baikal": "B51453", + "prov_lake_woods": "9F892A", + "prov_lake_manitoba": "FF0071", + "prov_reindeer_lake": "FF7DFF", + "prov_lake_ronge": "D9FF51", + "prov_lake_athabasca": "FF7D3D", + "prov_great_slave_lake": "49FF6B", + "prov_great_bear_lake": "FFC6C9", + + "prov_azov_sea": "3E33FF", + "prov_black_sea": "3EE1FF", + "prov_marmara_sea": "00009D", + "prov_agean_sea": "0019FF", + "prov_ionian_sea": "003A9D", + "prov_adriatic_sea": "00E3FF", + "prov_tyrrhenian_sea": "0935FF", + "prov_east_mediterranean": "00BBFF", + "prov_central_mediterranean": "3A5FDC", + "prov_west_mediterranean": "93C5FF", + "prov_ligurian_sea": "0000B0", + "prov_balearic_sea": "001BFF", + "prov_alboran_sea": "3E98FF", + "prov_gulf_bothnia": "52E39D", + "prov_gulf_finland": "0935C2", + "prov_gulf_riga": "004987", + "prov_baltic_sea": "5BC5CB", + "prov_danish_straits": "004DB0", + "prov_english_channel": "0079FF", + "prov_irish_sea": "544DFF", + "prov_biscay_bay": "93EEFF", + "prov_north_sea": "31BBFF", + "prov_red_sea": "0952FF", + "prov_arabian_sea": "00007E", + "prov_persian_gulf": "3EA3FF", + "prov_andaman_sea": "0092FF", + "prov_bay_bengal": "4075FF", + "prov_okhotsk_sea": "66C5FF", + "prov_japan_sea": "3A92DC", + "prov_east_china_sea": "0066CB", + "prov_south_china_sea": "3EEEFF", + "prov_philippine_sea": "210066", + "prov_celebes_sea": "0066BB", + "prov_java_sea": "3E33C9", + "prov_banda_sea": "73A3FF", + "prov_arafura_sea": "0000D4", + "prov_gulf_mexico": "00639D", + "prov_caribbean_sea": "00C2DA", + "prov_mozambique_channel": "098FFF", + "prov_zanj_sea": "93B5FF", + "prov_kara_sea": "49FFFF", + "prov_barents_sea": "3A40DC", + "prov_norwegian_sea": "000087", + "prov_greenland_sea": "33EEFF", + "prov_labrador_sea": "003787", + "prov_hudson_bay": "93F7FF", + "prov_gulf_st_lawrence": "4DF7FF", + "prov_gulf_alaska": "2C2F87", + "prov_gulf_california": "2C2FCF", + "prov_east_siberian_sea": "52E3FF", + "prov_sargasso_sea": "0019DA", + "prov_gulf_guinea": "008BDA", + "prov_celtic_sea": "0050B0", + "prov_argentine_sea": "0082B0", + "prov_chilean_sea": "47FFFF", + "prov_north_atlantic": "00B3FF", + "prov_central_atlantic": "68C5FF", + "prov_south_atlantic": "004DDA", + "prov_indian_ocean": "000066", + "prov_great_australian_bight": "3A75FF", + "prov_tasman_sea": "002CD4", + "prov_coral_sea": "8919FF", + "prov_melanesia": "3AA8FF", + "prov_micronesia": "0098CB", + "prov_polynesia": "003EDA", + "prov_north_pacific": "00EECF", + "prov_south_pacific": "03B3FF", + "prov_bering_sea": "0049DA", + "prov_chukchi_sea": "0087A5", + "prov_beaufort_sea": "93BEFF" } diff --git a/game/common/map/provinces.png b/game/common/map/provinces.png Binary files differindex 68bf528..73cc33c 100644 --- a/game/common/map/provinces.png +++ b/game/common/map/provinces.png diff --git a/game/common/map/regions.json b/game/common/map/regions.json index bbeeb56..1684fb5 100644 --- a/game/common/map/regions.json +++ b/game/common/map/regions.json @@ -1,6 +1,13 @@ { - "region_europe": ["prov_britain", "prov_ireland", "prov_iceland"], - "region_america": ["prov_cuba"], - "region_africa": ["prov_madagascar"], - "region_asia": ["prov_ceylon", "prov_formosa"] + "region_europe": ["prov_britain", "prov_ireland", "prov_iceland", "prov_corsica", "prov_sardinia", "prov_sicily", "prov_malta", "prov_cyprus", "prov_greenland", "prov_baleares", "prov_gotland", "prov_crete", "prov_jan_mayen", "prov_faroes", "prov_mann", "prov_shetlands", "prov_orkney", "prov_channel_islands", "prov_madiera", "prov_canarias", "prov_sjaeland", "prov_bornholm", "prov_bear_island", "prov_pantelleria", "prov_iberia", "prov_scandinavia", "prov_jutland", "prov_fyn", "prov_hiiumaa", "prov_saaremaa", "prov_italy", "prov_elba", "prov_france", "prov_netherlands", "prov_belgium", "prov_luxembourg", "prov_switzerland", "prov_balkans", "prov_crimea", "prov_germany", "prov_poland", "prov_baltics", "prov_finland", "prov_aland", "prov_ukraine", "prov_russia"], + + "region_north_america": ["prov_north_america", "prov_cuba", "prov_nova_scotia", "prov_bermuda", "prov_jamaica", "prov_hispaniola", "prov_aleutians", "prov_bahamas", "prov_turks_and_caicos", "prov_puerto_rico", "prov_barbados", "prov_grenada", "prov_st_vincent", "prov_st_lucia", "prov_martinique", "prov_dominica", "prov_guadeloupe", "prov_montserrat", "prov_antigua", "prov_barbuda", "prov_st_kitts", "prov_west_virgin_islands", "prov_east_virgin_islands", "prov_cayman_islands", "prov_angulia", "prov_central_america", "prov_mexico"], + + "region_south_america": ["prov_south_america", "prov_galapagos", "prov_falklands", "prov_south_georgia"], + + "region_africa": ["prov_africa", "prov_madagascar", "prov_socotra", "prov_mauritius", "prov_reunion", "prov_comoros", "prov_sao_tome", "prov_fernando_po", "prov_cape_verde", "prov_ascension", "prov_st_helena", "prov_tristan_da_cunha", "prov_seychelles", "prov_prince_edward_islands", "prov_kerguelen_islands", "prov_heard_island", "prov_egypt", "prov_morocco"], + + "region_asia": ["prov_middle_east", "prov_ceylon", "prov_formosa", "prov_sakhalin", "prov_maldives", "prov_hainan", "prov_hokkaido", "prov_diego_garcia", "prov_philippines", "prov_india", "prov_andamans", "prov_nicobar_islands", "prov_indochina", "prov_korea", "prov_okinawa", "prov_yaeyama", "prov_kyushu", "prov_shikoku", "prov_japan", "prov_kurils", "prov_manchuria", "prov_china", "prov_central_asia", "prov_siberia", "prov_iran", "prov_anatolia"], + + "region_oceania": ["prov_indonesia", "prov_north_island", "prov_south_island", "prov_tasmania", "prov_australia", "prov_hawaii", "prov_oceania"] } diff --git a/game/common/map/water.json b/game/common/map/water.json new file mode 100644 index 0000000..fda53a9 --- /dev/null +++ b/game/common/map/water.json @@ -0,0 +1,6 @@ + +[ + "prov_aral_sea", "prov_caspian_sea", "prov_lake_ladoga", "prov_lake_ontario", "prov_lake_erie", "prov_lake_huron", "prov_lake_michigan", "prov_lake_superior", "prov_lake_baikal", "prov_lake_woods", "prov_lake_manitoba", "prov_reindeer_lake", "prov_lake_ronge", "prov_lake_athabasca", "prov_great_slave_lake", "prov_great_bear_lake", + + "prov_azov_sea", "prov_black_sea", "prov_marmara_sea", "prov_agean_sea", "prov_ionian_sea", "prov_adriatic_sea", "prov_tyrrhenian_sea", "prov_east_mediterranean", "prov_central_mediterranean", "prov_west_mediterranean", "prov_ligurian_sea", "prov_balearic_sea", "prov_alboran_sea", "prov_gulf_bothnia", "prov_gulf_finland", "prov_gulf_riga", "prov_baltic_sea", "prov_danish_straits", "prov_english_channel", "prov_irish_sea", "prov_biscay_bay", "prov_north_sea", "prov_red_sea", "prov_arabian_sea", "prov_persian_gulf", "prov_andaman_sea", "prov_bay_bengal", "prov_okhotsk_sea", "prov_japan_sea", "prov_east_china_sea", "prov_south_china_sea", "prov_philippine_sea", "prov_celebes_sea", "prov_java_sea", "prov_banda_sea", "prov_arafura_sea", "prov_gulf_mexico", "prov_caribbean_sea", "prov_mozambique_channel", "prov_zanj_sea", "prov_kara_sea", "prov_barents_sea", "prov_norwegian_sea", "prov_greenland_sea", "prov_labrador_sea", "prov_hudson_bay", "prov_gulf_st_lawrence", "prov_gulf_alaska", "prov_gulf_california", "prov_east_siberian_sea", "prov_sargasso_sea", "prov_gulf_guinea", "prov_celtic_sea", "prov_argentine_sea", "prov_chilean_sea", "prov_north_atlantic", "prov_central_atlantic", "prov_south_atlantic", "prov_indian_ocean", "prov_great_australian_bight", "prov_tasman_sea", "prov_coral_sea", "prov_melanesia", "prov_micronesia", "prov_polynesia", "prov_north_pacific", "prov_south_pacific", "prov_bering_sea", "prov_chukchi_sea", "prov_beaufort_sea" +] diff --git a/game/localisation/en_GB/mapmodes.csv b/game/localisation/en_GB/mapmodes.csv index c5b1bb0..440175f 100644 --- a/game/localisation/en_GB/mapmodes.csv +++ b/game/localisation/en_GB/mapmodes.csv @@ -2,4 +2,5 @@ ,, Test Mapmodes mapmode_province,Province Mapmode mapmode_region,Region Mapmode +mapmode_terrain,Terrain Mapmode mapmode_index,Index Mapmode diff --git a/game/localisation/en_GB/menus.csv b/game/localisation/en_GB/menus.csv index b483662..33e5c42 100644 --- a/game/localisation/en_GB/menus.csv +++ b/game/localisation/en_GB/menus.csv @@ -49,5 +49,17 @@ GAMELOBBY_START,Start Game GAMELOBBY_BACK,Back ,, Game Session Menu -GAMESESSIONMENU_RESIGN,Resign +GAMESESSIONMENU_SAVE,Save Game +GAMESESSIONMENU_LOAD,Load Game +GAMESESSIONMENU_OPTIONS,Options +GAMESESSIONMENU_MAINMENU,Resign +GAMESESSIONMENU_QUIT,Quit GAMESESSIONMENU_CLOSE,Close + +GAMESESSIONMENU_MAINMENU_DIALOG_TITLE,Resign Game +GAMESESSIONMENU_MAINMENU_DIALOG_TEXT,Are you sure you want to resign and return to the main menu? +GAMESESSIONMENU_QUIT_DIALOG_TITLE,Quit Game +GAMESESSIONMENU_QUIT_DIALOG_TEXT,Are you sure you want to quit and return to desktop? + +DIALOG_OK,OK +DIALOG_CANCEL,Cancel diff --git a/game/localisation/en_GB/provinces.csv b/game/localisation/en_GB/provinces.csv index 3b47955..24248a0 100644 --- a/game/localisation/en_GB/provinces.csv +++ b/game/localisation/en_GB/provinces.csv @@ -1,9 +1,230 @@ -,, Test Provinces +,, Europe prov_britain_NAME,Britain prov_ireland_NAME,Ireland prov_iceland_NAME,Iceland +prov_corsica_NAME,Corsica +prov_sardinia_NAME,Sardinia +prov_sicily_NAME,Sicily +prov_malta_NAME,Malta +prov_cyprus_NAME,Cyprus +prov_greenland_NAME,Greenland +prov_baleares_NAME,Balearic Islands +prov_gotland_NAME,Gotland +prov_crete_NAME,Crete +prov_jan_mayen_NAME,Jan Mayen +prov_faroes_NAME,Faroe Islands +prov_mann_NAME,Isle of Mann +prov_shetlands_NAME,Shetlands +prov_orkney_NAME,Orkney +prov_channel_islands_NAME,Channel Islands +prov_madiera_NAME,Madiera +prov_canarias_NAME,Canarias +prov_sjaeland_NAME,Sjaeland +prov_bornholm_NAME,Bornholm +prov_bear_island_NAME,Bear Island +prov_pantelleria_NAME,Pantelleria +prov_iberia_NAME,Iberia +prov_scandinavia_NAME,Scandinavia +prov_jutland_NAME,Jutland +prov_fyn_NAME,Fyn +prov_hiiumaa_NAME,Hiiumaa +prov_saaremaa_NAME,Saaremaa +prov_italy_NAME,Italy +prov_elba_NAME,Elba +prov_france_NAME,France +prov_netherlands_NAME,Netherlands +prov_belgium_NAME,Belgium +prov_luxembourg_NAME,Luxembourg +prov_switzerland_NAME,Switzerland +prov_balkans_NAME,Balkans +prov_crimea_NAME,Crimea +prov_germany_NAME,Germany +prov_poland_NAME,Poland +prov_baltics_NAME,Baltics +prov_finland_NAME,Finland +prov_aland_NAME,Åland +prov_ukraine_NAME,Ukraine +prov_russia_NAME,Russia + +,, North America +prov_north_america_NAME,North America prov_cuba_NAME,Cuba +prov_nova_scotia_NAME,Nova Scotia +prov_bermuda_NAME,Bermuda +prov_jamaica_NAME,Jamaica +prov_hispaniola_NAME,Hispaniola +prov_aleutians_name,Aleutian Islands +prov_bahamas_NAME,Bahamas +prov_turks_and_caicos_NAME,Turks and Caicos +prov_puerto_rico_NAME,Puerto Rico +prov_barbados_NAME,Barbados +prov_grenada_NAME,Grenada +prov_st_vincent_NAME,St Vincent +prov_st_lucia_NAME,St Lucia +prov_martinique_NAME,Martinique +prov_dominica_NAME,Dominica +prov_guadeloupe_NAME,Guadeloupe +prov_montserrat_NAME,Montserrat +prov_antigua_NAME,Antigua +prov_barbuda_NAME,Barbuda +prov_st_kitts_NAME,St Kitts +prov_west_virgin_islands_NAME,West Virgin Islands +prov_east_virgin_islands_NAME,East Virgin Islands +prov_cayman_islands_NAME,Cayman Islands +prov_angulia_NAME,Angulia +prov_central_america_NAME,Central America +prov_mexico_NAME,Mexico + +,, South America +prov_south_america_NAME,South America +prov_galapagos_NAME,Galapagos +prov_falklands_NAME,Falklands +prov_south_georgia_NAME,South Georgia + +,, Africa +prov_africa_NAME,Africa prov_madagascar_NAME,Madagascar +prov_socotra_NAME,Socotra +prov_mauritius_NAME,Mauritius +prov_reunion_NAME,Réunion +prov_comoros_NAME,Comoros +prov_sao_tome_NAME,Sao Tome +prov_fernando_po_NAME,Fernando Po +prov_cape_verde_NAME,Cape Verde +prov_ascension_NAME,Ascension +prov_st_helena_NAME,St Helena +prov_tristan_da_cunha_NAME,Tristan da Cunha +prov_seychelles_NAME,Seychelles +prov_prince_edward_islands_NAME,Prince Edward Islands +prov_kerguelen_islands_NAME,Kerguelen Islands +prov_heard_island_NAME,Heard Island +prov_egypt_NAME,Egypt +prov_morocco_NAME,Morocco + +,, Asia +prov_middle_east_NAME,Middle East prov_ceylon_NAME,Ceylon prov_formosa_NAME,Formosa +prov_sakhalin_NAME,Sakhalin +prov_maldives_NAME,Maldives +prov_hainan_NAME,Hainan +prov_hokkaido_NAME,Hokkaido +prov_diego_garcia_NAME,Diego Garcia +prov_philippines_NAME,Philippines +prov_india_NAME,India +prov_andamans_NAME,Andaman Islands +prov_nicobar_islands_NAME,Nicobar Islands +prov_indochina_NAME,Indochina +prov_korea_NAME,Korea +prov_okinawa_NAME,Okinawa +prov_yaeyama_NAME,Yaeyama +prov_kyushu_NAME,Kyushu +prov_shikoku_NAME,Shikoku +prov_japan_NAME,Japan +prov_kurils_NAME,Kuril Islands +prov_manchuria_NAME,Manchuria +prov_china_NAME,China +prov_central_asia_NAME,Central Asia +prov_siberia_NAME,Siberia +prov_iran_NAME,Iran +prov_anatolia_NAME,Anatolia + +,, Oceania +prov_oceania_NAME,Oceania +prov_indonesia_NAME,Indonesia +prov_north_island_NAME,North Island +prov_south_island_NAME,South Island +prov_tasmania_NAME,Tasmania +prov_australia_NAME,Australia +prov_hawaii_NAME,Hawaii + +,, Lakes +prov_aral_sea_NAME,Aral Sea +prov_caspian_sea_NAME,Caspian Sea +prov_lake_ladoga_NAME,Lake Ladoga +prov_lake_ontario_NAME,Lake Ontario +prov_lake_erie_NAME,Lake Erie +prov_lake_huron_NAME,Lake Huron +prov_lake_michigan_NAME,Lake Michigan +prov_lake_superior_NAME,Lake Superior +prov_lake_baikal_NAME,Lake Baikal +prov_lake_woods_NAME,Lake of the Woods +prov_lake_manitoba_NAME,Lake Manitoba +prov_reindeer_lake_NAME,Reindeer Lake +prov_lake_ronge_NAME,Lac la Ronge +prov_lake_athabasca_NAME,Lake Athabasca +prov_great_slave_lake_NAME,Great Slave Lake +prov_great_bear_lake_NAME,Great Bear Lake + +,, Seas and Oceans +prov_azov_sea_NAME,Sea of Azov +prov_black_sea_NAME,Black Sea +prov_marmara_sea_NAME,Sea of Marmara +prov_agean_sea_NAME,Agean Sea +prov_ionian_sea_NAME,Ionian Sea +prov_adriatic_sea_NAME,Adriatic Sea +prov_tyrrhenian_sea_NAME,Tyrrhenian Sea +prov_east_mediterranean_NAME,East Mediterranean Sea +prov_central_mediterranean_NAME,Central Mediterranean Sea +prov_west_mediterranean_NAME,West Mediterranean Sea +prov_ligurian_sea_NAME,Ligurian Sea +prov_balearic_sea_NAME,Balearic Sea +prov_alboran_sea_NAME,Alboran Sea +prov_gulf_bothnia_NAME,Gulf of Bothnia +prov_gulf_finland_NAME,Gulf of Finland +prov_gulf_riga_NAME,Gulf of Riga +prov_baltic_sea_NAME,Baltic Sea +prov_danish_straits_NAME,Danish Straits +prov_english_channel_NAME,English Channel +prov_irish_sea_NAME,Irish Sea +prov_biscay_bay_NAME,Bay of Biscay +prov_north_sea_NAME,North Sea +prov_red_sea_NAME,Red Sea +prov_arabian_sea_NAME,Arabian Sea +prov_persian_gulf_NAME,Persian Gulf +prov_andaman_sea_NAME,Andaman Sea +prov_bay_bengal_NAME,Bay of Bengal +prov_okhotsk_sea_NAME,Sea of Okhotsk +prov_japan_sea_NAME,Sea of Japan +prov_east_china_sea_NAME,East China Sea +prov_south_china_sea_NAME,South China Sea +prov_philippine_sea_NAME,Philippine Sea +prov_celebes_sea_NAME,Celebes Sea +prov_java_sea_NAME,Java Sea +prov_banda_sea_NAME,Banda Sea +prov_arafura_sea_NAME,Arafura Sea +prov_gulf_mexico_NAME,Gulf of Mexico +prov_caribbean_sea_NAME,Caribbean Sea +prov_mozambique_channel_NAME,Mozambique Channel +prov_zanj_sea_NAME,Sea of Zanj +prov_kara_sea_NAME,Kara Sea +prov_barents_sea_NAME,Barents Sea +prov_norwegian_sea_NAME,Norwegian Sea +prov_greenland_sea_NAME,Greenland Sea +prov_labrador_sea_NAME,Labrador Sea +prov_hudson_bay_NAME,Hudson Bay +prov_gulf_st_lawrence_NAME,Gulf of St Lawrence +prov_gulf_alaska_NAME,Gulf of Alaska +prov_gulf_california_NAME,Gulf of California +prov_east_siberian_sea_NAME,East Siberian Sea +prov_sargasso_sea_NAME,Sargasso Sea +prov_gulf_guinea_NAME,Gulf of Guinea +prov_celtic_sea_NAME,Celtic Sea +prov_argentine_sea_NAME,Argentine Sea +prov_chilean_sea_NAME,Chilean Sea +prov_north_atlantic_NAME,North Atlantic Ocean +prov_central_atlantic_NAME,Central Atlantic Ocean +prov_south_atlantic_NAME,South Atlantic Ocean +prov_indian_ocean_NAME,Indian Ocean +prov_great_australian_bight_NAME,Great Australian Bight +prov_tasman_sea_NAME,Tasman Sea +prov_coral_sea_NAME,Coral Sea +prov_melanesia_NAME,Melanesia +prov_micronesia_NAME,Micronesia +prov_polynesia_NAME,Polynesia +prov_north_pacific_NAME,North Pacific Ocean +prov_south_pacific_NAME,South Pacific Ocean +prov_bering_sea_NAME,Bering Sea +prov_chukchi_sea_NAME,Chukchi Sea +prov_beaufort_sea_NAME,Beaufort Sea diff --git a/game/localisation/en_GB/regions.csv b/game/localisation/en_GB/regions.csv new file mode 100644 index 0000000..8fe8943 --- /dev/null +++ b/game/localisation/en_GB/regions.csv @@ -0,0 +1,8 @@ + +,, Regions +region_europe_NAME,Europe +region_north_america_NAME,North America +region_south_america_NAME,South America +region_africa_NAME,Africa +region_asia_NAME,Asia +region_oceania_NAME,Oceania diff --git a/game/localisation/en_GB/regions.csv.import b/game/localisation/en_GB/regions.csv.import new file mode 100644 index 0000000..8dd0c09 --- /dev/null +++ b/game/localisation/en_GB/regions.csv.import @@ -0,0 +1,3 @@ +[remap] + +importer="keep" diff --git a/game/localisation/en_US/menus.csv b/game/localisation/en_US/menus.csv index 27a0858..807d1cb 100644 --- a/game/localisation/en_US/menus.csv +++ b/game/localisation/en_US/menus.csv @@ -1,3 +1,4 @@ + ,, Main Menu MAINMENU_TITLE,OpenVic2 MAINMENU_NEW_GAME,New Game @@ -48,5 +49,9 @@ GAMELOBBY_START,Start Game GAMELOBBY_BACK,Back ,, Game Session Menu -GAMESESSIONMENU_RESIGN,Resign +GAMESESSIONMENU_SAVE,Save Game +GAMESESSIONMENU_LOAD,Load Game +GAMESESSIONMENU_OPTIONS,Options +GAMESESSIONMENU_MAINMENU,Resign +GAMESESSIONMENU_QUIT,Quit GAMESESSIONMENU_CLOSE,Close diff --git a/game/localisation/fr_FR/menus.csv b/game/localisation/fr_FR/menus.csv index 8e8a7ad..0d84b64 100644 --- a/game/localisation/fr_FR/menus.csv +++ b/game/localisation/fr_FR/menus.csv @@ -1,3 +1,4 @@ + ,, Main Menu MAINMENU_TITLE,OpenVic2 MAINMENU_NEW_GAME,Nouveau Jeu @@ -48,5 +49,9 @@ GAMELOBBY_START,Démarrer Jeu GAMELOBBY_BACK,Retourner ,, Game Session Menu -GAMESESSIONMENU_RESIGN,Démissionner +GAMESESSIONMENU_SAVE,Sauvegarder la Partie +GAMESESSIONMENU_LOAD,Charger la Partie +GAMESESSIONMENU_OPTIONS,Options +GAMESESSIONMENU_MAINMENU,Démissionner +GAMESESSIONMENU_QUIT,Quitter GAMESESSIONMENU_CLOSE,Fermer diff --git a/game/src/Autoload/Events.gd b/game/src/Autoload/Events.gd index f4aac70..dbd3f9f 100644 --- a/game/src/Autoload/Events.gd +++ b/game/src/Autoload/Events.gd @@ -4,14 +4,17 @@ var Options = preload("Events/Options.gd").new() var Localisation = preload("Events/Localisation.gd").new() const _province_identifier_file : String = "res://common/map/provinces.json" +const _water_province_file : String = "res://common/map/water.json" const _region_file : String = "res://common/map/regions.json" const _province_shape_file : String = "res://common/map/provinces.png" # REQUIREMENTS -# * FS-333, FS-335, FS-341 +# * FS-333, FS-334, FS-335, FS-341 func _ready(): if MapSingleton.load_province_identifier_file(_province_identifier_file) != OK: push_error("Failed to load province identifiers") + if MapSingleton.load_water_province_file(_water_province_file) != OK: + push_error("Failed to load water provinces") if MapSingleton.load_region_file(_region_file) != OK: push_error("Failed to load regions") if MapSingleton.load_province_shape_file(_province_shape_file) != OK: diff --git a/game/src/GameSession/GameSession.gd b/game/src/GameSession/GameSession.gd index 38eaba1..fe83a8a 100644 --- a/game/src/GameSession/GameSession.gd +++ b/game/src/GameSession/GameSession.gd @@ -1,16 +1,11 @@ -extends Node +extends Control @export var _game_session_menu : Control func _ready(): - print("GameSession ready") + Events.Options.load_settings_from_file() # REQUIREMENTS: # * SS-42 func _on_game_session_menu_button_pressed(): _game_session_menu.visible = !_game_session_menu.visible - -# REQUIREMENTS: -# * SS-64 -func _on_game_session_menu_close_button_pressed(): - _game_session_menu.hide() diff --git a/game/src/GameSession/GameSession.tscn b/game/src/GameSession/GameSession.tscn index e270f8a..d23cb6c 100644 --- a/game/src/GameSession/GameSession.tscn +++ b/game/src/GameSession/GameSession.tscn @@ -1,13 +1,21 @@ -[gd_scene load_steps=6 format=3 uid="uid://bgnupcshe1m7r"] +[gd_scene load_steps=7 format=3 uid="uid://bgnupcshe1m7r"] [ext_resource type="Script" path="res://src/GameSession/GameSession.gd" id="1_eklvp"] [ext_resource type="PackedScene" uid="uid://g524p8lr574w" path="res://src/GameSession/MapControlPanel.tscn" id="3_afh6d"] [ext_resource type="PackedScene" uid="uid://dvdynl6eir40o" path="res://src/GameSession/GameSessionMenu.tscn" id="3_bvmqh"] [ext_resource type="PackedScene" uid="uid://dkehmdnuxih2r" path="res://src/GameSession/MapView.tscn" id="4_xkg5j"] [ext_resource type="PackedScene" uid="uid://byq323jbel48u" path="res://src/GameSession/ProvinceOverviewPanel.tscn" id="5_osjnn"] +[ext_resource type="PackedScene" uid="uid://cnbfxjy1m6wja" path="res://src/OptionMenu/OptionsMenu.tscn" id="6_p5mnx"] -[node name="GameSession" type="Node" node_paths=PackedStringArray("_game_session_menu")] +[node name="GameSession" type="Control" node_paths=PackedStringArray("_game_session_menu")] editor_description = "SS-102, UI-546" +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 script = ExtResource("1_eklvp") _game_session_menu = NodePath("GameSessionMenu") @@ -15,6 +23,7 @@ _game_session_menu = NodePath("GameSessionMenu") [node name="GameSessionMenu" parent="." instance=ExtResource("3_bvmqh")] visible = false +layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -24,28 +33,31 @@ grow_horizontal = 2 grow_vertical = 2 [node name="MapControlPanel" parent="." instance=ExtResource("3_afh6d")] +layout_mode = 1 anchors_preset = 3 anchor_left = 1.0 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = -350.0 -offset_top = -210.0 grow_horizontal = 0 grow_vertical = 0 [node name="ProvinceOverviewPanel" parent="." instance=ExtResource("5_osjnn")] -anchors_preset = -1 -anchor_top = 0.583333 -anchor_right = 0.15625 -offset_top = 0.0 -offset_right = 0.0 +layout_mode = 1 + +[node name="OptionsMenu" parent="." instance=ExtResource("6_p5mnx")] +visible = false +layout_mode = 1 [connection signal="map_view_camera_changed" from="MapView" to="MapControlPanel" method="_on_map_view_camera_changed"] [connection signal="province_selected" from="MapView" to="ProvinceOverviewPanel" method="_on_province_selected"] -[connection signal="close_button_pressed" from="GameSessionMenu" to="." method="_on_game_session_menu_close_button_pressed"] +[connection signal="options_button_pressed" from="GameSessionMenu" to="OptionsMenu" method="show"] [connection signal="game_session_menu_button_pressed" from="MapControlPanel" to="." method="_on_game_session_menu_button_pressed"] [connection signal="mapmode_changed" from="MapControlPanel" to="MapView" method="_update_colour_texture"] [connection signal="minimap_clicked" from="MapControlPanel" to="MapView" method="_on_minimap_clicked"] [connection signal="mouse_entered" from="MapControlPanel" to="MapView" method="_on_mouse_exited_viewport"] [connection signal="mouse_exited" from="MapControlPanel" to="MapView" method="_on_mouse_entered_viewport"] +[connection signal="zoom_in_button_pressed" from="MapControlPanel" to="MapView" method="zoom_in"] +[connection signal="zoom_out_button_pressed" from="MapControlPanel" to="MapView" method="zoom_out"] +[connection signal="back_button_pressed" from="OptionsMenu" to="MapView" method="enable_processing"] +[connection signal="back_button_pressed" from="OptionsMenu" to="OptionsMenu" method="hide"] diff --git a/game/src/GameSession/GameSessionMenu.gd b/game/src/GameSession/GameSessionMenu.gd index 3722b52..8a76c0f 100644 --- a/game/src/GameSession/GameSessionMenu.gd +++ b/game/src/GameSession/GameSessionMenu.gd @@ -1,19 +1,24 @@ extends PanelContainer -signal close_button_pressed - @export var _main_menu_scene : PackedScene -func _ready(): - print("GameSessionMenu ready") +signal options_button_pressed # REQUIREMENTS: # * SS-47 # * UIFUN-69 -func _on_to_main_menu_pressed(): +func _on_main_menu_confirmed() -> void: get_tree().change_scene_to_packed(_main_menu_scene) # REQUIREMENTS: -# * UIFUN-69 -func _on_close_button_pressed(): - close_button_pressed.emit() +# * SS-48 +# * UIFUN-70 +func _on_quit_confirmed() -> void: + get_tree().quit() + +# REQUIREMENTS: +# * SS-7, SS-46 +# * UIFUN-11 +func _on_options_button_pressed() -> void: + hide() + options_button_pressed.emit() diff --git a/game/src/GameSession/GameSessionMenu.tscn b/game/src/GameSession/GameSessionMenu.tscn index 45fff4b..a753184 100644 --- a/game/src/GameSession/GameSessionMenu.tscn +++ b/game/src/GameSession/GameSessionMenu.tscn @@ -8,21 +8,64 @@ editor_description = "UI-68" script = ExtResource("1_usq6o") _main_menu_scene = ExtResource("2_xi6a4") -[node name="VBoxContainer" type="VBoxContainer" parent="."] +[node name="MarginContainer" type="MarginContainer" parent="."] layout_mode = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 -[node name="MainMenuButton" type="Button" parent="VBoxContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="SaveButton" type="Button" parent="MarginContainer/VBoxContainer"] +editor_description = "UI-69" +layout_mode = 2 +text = "GAMESESSIONMENU_SAVE" + +[node name="LoadButton" type="Button" parent="MarginContainer/VBoxContainer"] +editor_description = "UI-70" +layout_mode = 2 +text = "GAMESESSIONMENU_LOAD" + +[node name="OptionsButton" type="Button" parent="MarginContainer/VBoxContainer"] +editor_description = "UI-10" +layout_mode = 2 +text = "GAMESESSIONMENU_OPTIONS" + +[node name="MainMenuButton" type="Button" parent="MarginContainer/VBoxContainer"] editor_description = "UI-71" layout_mode = 2 -text = "GAMESESSIONMENU_RESIGN" +text = "GAMESESSIONMENU_MAINMENU" + +[node name="QuitButton" type="Button" parent="MarginContainer/VBoxContainer"] +editor_description = "UI-72" +layout_mode = 2 +text = "GAMESESSIONMENU_QUIT" -[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer"] layout_mode = 2 -[node name="CloseButton" type="Button" parent="VBoxContainer"] -editor_description = "UI-80" +[node name="CloseButton" type="Button" parent="MarginContainer/VBoxContainer"] +editor_description = "SS-64, UI-80, UIFUN-79" layout_mode = 2 text = "GAMESESSIONMENU_CLOSE" -[connection signal="pressed" from="VBoxContainer/MainMenuButton" to="." method="_on_to_main_menu_pressed"] -[connection signal="pressed" from="VBoxContainer/CloseButton" to="." method="_on_close_button_pressed"] +[node name="MainMenuDialog" type="ConfirmationDialog" parent="."] +title = "GAMESESSIONMENU_MAINMENU_DIALOG_TITLE" +ok_button_text = "DIALOG_OK" +dialog_text = "GAMESESSIONMENU_MAINMENU_DIALOG_TEXT" +cancel_button_text = "DIALOG_CANCEL" + +[node name="QuitDialog" type="ConfirmationDialog" parent="."] +title = "GAMESESSIONMENU_QUIT_DIALOG_TITLE" +ok_button_text = "DIALOG_OK" +dialog_text = "GAMESESSIONMENU_QUIT_DIALOG_TEXT" +cancel_button_text = "DIALOG_CANCEL" + +[connection signal="pressed" from="MarginContainer/VBoxContainer/OptionsButton" to="." method="_on_options_button_pressed"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/MainMenuButton" to="MainMenuDialog" method="popup_centered"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/QuitButton" to="QuitDialog" method="popup_centered"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/CloseButton" to="." method="hide"] +[connection signal="confirmed" from="MainMenuDialog" to="." method="_on_main_menu_confirmed"] +[connection signal="confirmed" from="QuitDialog" to="." method="_on_quit_confirmed"] diff --git a/game/src/GameSession/MapControlPanel.gd b/game/src/GameSession/MapControlPanel.gd index 693890f..d5810c5 100644 --- a/game/src/GameSession/MapControlPanel.gd +++ b/game/src/GameSession/MapControlPanel.gd @@ -4,6 +4,8 @@ signal game_session_menu_button_pressed signal mapmode_changed signal map_view_camera_changed(near_left : Vector2, far_left : Vector2, far_right : Vector2, near_right : Vector2) signal minimap_clicked(pos_clicked : Vector2) +signal zoom_in_button_pressed +signal zoom_out_button_pressed @export var _mapmodes_grid : GridContainer @@ -17,6 +19,7 @@ func _add_mapmode_button(identifier : String) -> void: button.tooltip_text = identifier button.toggle_mode = true button.button_group = _mapmode_button_group + button.mouse_filter = MOUSE_FILTER_PASS _mapmodes_grid.add_child(button) if _mapmode_button_group.get_pressed_button() == null: button.button_pressed = true @@ -44,3 +47,13 @@ func _on_map_view_camera_changed(near_left : Vector2, far_left : Vector2, far_ri func _on_minimap_clicked(pos_clicked : Vector2) -> void: minimap_clicked.emit(pos_clicked) + +# REQUIREMENTS: +# * UIFUN-269 +func _on_zoom_in_button_pressed() -> void: + zoom_in_button_pressed.emit() + +# REQUIREMENTS: +# * UIFUN-270 +func _on_zoom_out_button_pressed() -> void: + zoom_out_button_pressed.emit() diff --git a/game/src/GameSession/MapControlPanel.tscn b/game/src/GameSession/MapControlPanel.tscn index 70d7eab..27205e3 100644 --- a/game/src/GameSession/MapControlPanel.tscn +++ b/game/src/GameSession/MapControlPanel.tscn @@ -15,49 +15,89 @@ events = [SubResource("InputEventAction_5nck3")] editor_description = "SS-103" mouse_filter = 1 script = ExtResource("1_ign64") -_mapmodes_grid = NodePath("HBoxContainer/VBoxContainer/MapmodesGrid") +_mapmodes_grid = NodePath("MarginContainer/HBoxContainer/VBoxContainer/MapmodesGrid") -[node name="HBoxContainer" type="HBoxContainer" parent="."] +[node name="MarginContainer" type="MarginContainer" parent="."] layout_mode = 2 -alignment = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_top = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 -[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] layout_mode = 2 +theme_override_constants/separation = 6 +alignment = 1 -[node name="MapmodesGrid" type="GridContainer" parent="HBoxContainer/VBoxContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer"] +layout_mode = 2 +alignment = 1 + +[node name="MapmodesGrid" type="GridContainer" parent="MarginContainer/HBoxContainer/VBoxContainer"] editor_description = "UI-750" layout_mode = 2 columns = 11 -[node name="Minimap" type="PanelContainer" parent="HBoxContainer/VBoxContainer"] +[node name="Minimap" type="PanelContainer" parent="MarginContainer/HBoxContainer/VBoxContainer"] editor_description = "UI-549" layout_mode = 2 mouse_filter = 1 -[node name="TextureRect" type="TextureRect" parent="HBoxContainer/VBoxContainer/Minimap"] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/HBoxContainer/VBoxContainer/Minimap"] editor_description = "UI-751, FS-338" layout_mode = 2 texture = ExtResource("2_r613r") -[node name="ViewportQuad" type="Control" parent="HBoxContainer/VBoxContainer/Minimap"] +[node name="ViewportQuad" type="Control" parent="MarginContainer/HBoxContainer/VBoxContainer/Minimap"] layout_mode = 2 mouse_filter = 2 script = ExtResource("3_s4dml") -[node name="Frame" type="NinePatchRect" parent="HBoxContainer/VBoxContainer/Minimap"] +[node name="Frame" type="NinePatchRect" parent="MarginContainer/HBoxContainer/VBoxContainer/Minimap"] layout_mode = 2 texture = ExtResource("4_f1exl") -[node name="AuxiliaryPanel" type="VBoxContainer" parent="HBoxContainer"] +[node name="AuxiliaryPanel" type="VBoxContainer" parent="MarginContainer/HBoxContainer"] editor_description = "UI-761" layout_mode = 2 -[node name="GameSessionMenuButton" type="Button" parent="HBoxContainer/AuxiliaryPanel"] +[node name="GameSessionMenuButton" type="Button" parent="MarginContainer/HBoxContainer/AuxiliaryPanel"] editor_description = "UI-9" layout_mode = 2 +mouse_filter = 1 shortcut = SubResource("Shortcut_fc1tk") text = "ESC" -[connection signal="map_view_camera_changed" from="." to="HBoxContainer/VBoxContainer/Minimap/ViewportQuad" method="_on_map_view_camera_changed"] -[connection signal="minimap_clicked" from="HBoxContainer/VBoxContainer/Minimap/ViewportQuad" to="." method="_on_minimap_clicked"] -[connection signal="pressed" from="HBoxContainer/AuxiliaryPanel/GameSessionMenuButton" to="." method="_on_game_session_menu_button_pressed"] +[node name="LedgerButton" type="Button" parent="MarginContainer/HBoxContainer/AuxiliaryPanel"] +editor_description = "UI-860" +layout_mode = 2 +mouse_filter = 1 +text = "L" + +[node name="FindButton" type="Button" parent="MarginContainer/HBoxContainer/AuxiliaryPanel"] +editor_description = "UI-861" +layout_mode = 2 +mouse_filter = 1 +text = "F" + +[node name="ZoomButtonsContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer/AuxiliaryPanel"] +layout_mode = 2 +alignment = 1 + +[node name="ZoomInButton" type="Button" parent="MarginContainer/HBoxContainer/AuxiliaryPanel/ZoomButtonsContainer"] +editor_description = "UI-862" +layout_mode = 2 +mouse_filter = 1 +text = "+" + +[node name="ZoomOutButton" type="Button" parent="MarginContainer/HBoxContainer/AuxiliaryPanel/ZoomButtonsContainer"] +editor_description = "UI-863" +layout_mode = 2 +mouse_filter = 1 +text = "-" + +[connection signal="map_view_camera_changed" from="." to="MarginContainer/HBoxContainer/VBoxContainer/Minimap/ViewportQuad" method="_on_map_view_camera_changed"] +[connection signal="minimap_clicked" from="MarginContainer/HBoxContainer/VBoxContainer/Minimap/ViewportQuad" to="." method="_on_minimap_clicked"] +[connection signal="pressed" from="MarginContainer/HBoxContainer/AuxiliaryPanel/GameSessionMenuButton" to="." method="_on_game_session_menu_button_pressed"] +[connection signal="pressed" from="MarginContainer/HBoxContainer/AuxiliaryPanel/ZoomButtonsContainer/ZoomInButton" to="." method="_on_zoom_in_button_pressed"] +[connection signal="pressed" from="MarginContainer/HBoxContainer/AuxiliaryPanel/ZoomButtonsContainer/ZoomOutButton" to="." method="_on_zoom_out_button_pressed"] diff --git a/game/src/GameSession/MapView.gd b/game/src/GameSession/MapView.gd index 54d8df8..ae49e82 100644 --- a/game/src/GameSession/MapView.gd +++ b/game/src/GameSession/MapView.gd @@ -16,6 +16,7 @@ const _shader_param_province_index : StringName = &"province_index_tex" const _shader_param_province_colour : StringName = &"province_colour_tex" const _shader_param_hover_index : StringName = &"hover_index" const _shader_param_selected_index : StringName = &"selected_index" +const _shader_param_terrain_tile_factor : StringName = &"terrain_tile_factor" @export var _camera : Camera3D @@ -25,9 +26,9 @@ const _shader_param_selected_index : StringName = &"selected_index" var _drag_anchor : Vector2 var _drag_active : bool = false -var _mouse_over_viewport : bool = false +var _mouse_over_viewport : bool = true -@export var _zoom_target_min : float = 0.2 +@export var _zoom_target_min : float = 0.05 @export var _zoom_target_max : float = 5.0 @export var _zoom_target_step : float = 0.1 @export var _zoom_epsilon : float = _zoom_target_step * 0.1 @@ -100,6 +101,7 @@ func _ready(): # Set map mesh size and get bounds _map_image_size = Vector2(Vector2i(MapSingleton.get_width(), MapSingleton.get_height())) _map_mesh.aspect_ratio = _map_image_size.x / _map_image_size.y + _map_shader_material.set_shader_parameter(_shader_param_terrain_tile_factor, _map_image_size.y / 64.0) var map_mesh_aabb := _map_mesh.get_core_aabb() * _map_mesh_instance.transform _map_mesh_corner = Vector2( min(map_mesh_aabb.position.x, map_mesh_aabb.end.x), @@ -137,10 +139,16 @@ func _viewport_to_map_coords(pos_viewport : Vector2) -> Vector2: push_error("Invalid intersection: ", intersection) return Vector2(0.5, 0.5) +func zoom_in() -> void: + _zoom_target -= _zoom_target_step + +func zoom_out() -> void: + _zoom_target += _zoom_target_step + # REQUIREMENTS # * SS-31 func _unhandled_input(event : InputEvent): - if event.is_action_pressed(_action_click): + if _mouse_over_viewport and event.is_action_pressed(_action_click): # Check if the mouse is outside of bounds if _map_mesh.is_valid_uv_coord(_mouse_pos_map): var selected_index := MapSingleton.get_province_index_from_uv_coords(_mouse_pos_map) @@ -159,9 +167,9 @@ func _unhandled_input(event : InputEvent): push_warning("Drag being deactivated while already not active!") _drag_active = false elif event.is_action_pressed(_action_zoomin, true): - _zoom_target -= _zoom_target_step + zoom_in() elif event.is_action_pressed(_action_zoomout, true): - _zoom_target += _zoom_target_step + zoom_out() func _physics_process(delta : float): _mouse_pos_viewport = get_viewport().get_mouse_position() @@ -228,7 +236,7 @@ func _zoom_process(delta : float) -> void: _camera.position.y = height func _update_orientation() -> void: - var dir := Vector3(0, -1, -exp(-_camera.position.y * 2.0 + 0.5)) + var dir := Vector3(0, -1, -exp(-_camera.position.y - 1)) _camera.look_at(_camera.position + dir) func _update_minimap_viewport() -> void: @@ -254,4 +262,12 @@ func _on_minimap_clicked(pos_clicked : Vector2): pos_clicked *= _map_mesh_dims _camera.position.x = pos_clicked.x _camera.position.z = pos_clicked.y - _clamp_over_map()
\ No newline at end of file + _clamp_over_map() + +func enable_processing() -> void: + set_process_unhandled_input(true) + set_physics_process(true) + +func disable_processing() -> void: + set_process_unhandled_input(false) + set_physics_process(false) diff --git a/game/src/GameSession/MapView.tscn b/game/src/GameSession/MapView.tscn index 93fc162..c8934c5 100644 --- a/game/src/GameSession/MapView.tscn +++ b/game/src/GameSession/MapView.tscn @@ -2,14 +2,15 @@ [ext_resource type="Script" path="res://src/GameSession/MapView.gd" id="1_exccw"] [ext_resource type="Shader" path="res://src/GameSession/TerrainMap.gdshader" id="1_upocn"] -[ext_resource type="Texture2D" uid="uid://cmw0pvjthnn8c" path="res://art/terrain/terrain.png" id="3_l8pnf"] +[ext_resource type="Texture2D" uid="uid://ckf222w5usrsu" path="res://art/terrain/farmlands.png" id="3_47mq1"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_tayeg"] render_priority = 0 shader = ExtResource("1_upocn") shader_parameter/hover_index = null shader_parameter/selected_index = null -shader_parameter/terrain_tex = ExtResource("3_l8pnf") +shader_parameter/terrain_tile_factor = null +shader_parameter/farmlands_tex = ExtResource("3_47mq1") [sub_resource type="MapMesh" id="MapMesh_3gtsd"] @@ -21,6 +22,7 @@ _map_mesh_instance = NodePath("MapMeshInstance") [node name="MapCamera" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0.25, 1.5, -2.75) +near = 0.01 [node name="MapMeshInstance" type="MeshInstance3D" parent="."] editor_description = "FS-343" diff --git a/game/src/GameSession/ProvinceOverviewPanel.gd b/game/src/GameSession/ProvinceOverviewPanel.gd index 434f6b1..4615df9 100644 --- a/game/src/GameSession/ProvinceOverviewPanel.gd +++ b/game/src/GameSession/ProvinceOverviewPanel.gd @@ -1,22 +1,33 @@ extends Panel @export var _province_name_label : Label +@export var _region_name_label : Label -@export var province_identifier: String = "": - get: return province_identifier +var _province_identifier: String = "": + get: return _province_identifier set(v): - province_identifier = v + _province_identifier = v update_info() +const _name_suffix : String = "_NAME" + func _ready(): update_info() func update_info() -> void: - _province_name_label.text = province_identifier + "_NAME" - visible = not province_identifier.is_empty() + if _province_identifier: + _province_name_label.text = _province_identifier + _name_suffix + var region_identifier := MapSingleton.get_region_identifier_from_province_identifier(_province_identifier) + if region_identifier: + _region_name_label.text = region_identifier + _name_suffix + else: + _region_name_label.text = "NO REGION" + show() + else: + hide() func _on_province_selected(identifier : String) -> void: - province_identifier = identifier + _province_identifier = identifier -func _on_button_pressed() -> void: - province_identifier = "" +func _on_close_button_pressed() -> void: + _province_identifier = "" diff --git a/game/src/GameSession/ProvinceOverviewPanel.tscn b/game/src/GameSession/ProvinceOverviewPanel.tscn index 2df95fb..7d21edc 100644 --- a/game/src/GameSession/ProvinceOverviewPanel.tscn +++ b/game/src/GameSession/ProvinceOverviewPanel.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://src/GameSession/ProvinceOverviewPanel.gd" id="1_3n8k5"] -[node name="ProvinceOverviewPanel" type="Panel" node_paths=PackedStringArray("_province_name_label")] +[node name="ProvinceOverviewPanel" type="Panel" node_paths=PackedStringArray("_province_name_label", "_region_name_label")] editor_description = "UI-56" anchors_preset = 2 anchor_top = 1.0 @@ -12,6 +12,7 @@ offset_right = 200.0 grow_vertical = 0 script = ExtResource("1_3n8k5") _province_name_label = NodePath("VBoxContainer/ProvinceName") +_region_name_label = NodePath("VBoxContainer/RegionName") [node name="VBoxContainer" type="VBoxContainer" parent="."] layout_mode = 1 @@ -29,7 +30,13 @@ layout_mode = 2 text = "PROVINCE_NAME" vertical_alignment = 1 -[node name="Button" type="Button" parent="."] +[node name="RegionName" type="Label" parent="VBoxContainer"] +editor_description = "UI-58" +layout_mode = 2 +text = "REGION_NAME" +vertical_alignment = 1 + +[node name="CloseButton" type="Button" parent="."] custom_minimum_size = Vector2(30, 30) layout_mode = 1 anchors_preset = -1 @@ -39,4 +46,4 @@ anchor_bottom = 0.103333 grow_horizontal = 0 text = "X" -[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] +[connection signal="pressed" from="CloseButton" to="." method="_on_close_button_pressed"] diff --git a/game/src/GameSession/TerrainMap.gdshader b/game/src/GameSession/TerrainMap.gdshader index 7aca0f9..9ce1a24 100644 --- a/game/src/GameSession/TerrainMap.gdshader +++ b/game/src/GameSession/TerrainMap.gdshader @@ -2,16 +2,18 @@ shader_type spatial; render_mode unshaded; -// Cosmetic terrain texture -uniform sampler2D terrain_tex: source_color, repeat_enable, filter_linear; +// Cosmetic farmlands terrain texture +uniform sampler2D farmlands_tex: source_color, repeat_enable, filter_linear; // Province index texture -uniform sampler2D province_index_tex : repeat_enable, filter_nearest; +uniform sampler2D province_index_tex : source_color, repeat_enable, filter_nearest; // Province colour texture uniform sampler2D province_colour_tex: source_color, repeat_enable, filter_nearest; // Index of the mouse over the map mesh uniform uint hover_index; // Index of the currently selected province uniform uint selected_index; +// The number of times the terrain textures should tile vertically +uniform float terrain_tile_factor; uvec2 vec2_to_uvec2(vec2 v) { return uvec2(v * 255.0); @@ -29,17 +31,39 @@ uint read_uint16(sampler2D tex, vec2 uv) { return uvec2_to_uint(read_uvec2(tex, uv)); } -void fragment() { - uvec2 prov_idx_split = read_uvec2(province_index_tex, UV); - uint prov_index = uvec2_to_uint(prov_idx_split); +const vec3 water_colour = vec3(0, 0, 1); + +vec3 get_terrain_colour(vec2 uv, vec2 corner, vec2 half_pixel_size, vec2 terrain_uv) { + uvec2 index_split = read_uvec2(province_index_tex, fma(corner, half_pixel_size, uv)); + uint index = uvec2_to_uint(index_split); + vec4 province_data = texelFetch(province_colour_tex, ivec2(index_split), 0); + vec3 province_colour = province_data.rgb; + float is_land = province_data.a; + vec3 farmlands_colour = texture(farmlands_tex, terrain_uv).rgb; + vec3 terrain_colour = mix(water_colour, farmlands_colour, is_land); + float mix_val = 0.4 + float(index == hover_index) * 0.2 + float(index == selected_index) * 0.2; + vec3 mixed_colour = mix(terrain_colour, province_colour, mix_val); + return mixed_colour; +} - // Boost prov_colour's contribution if it matches hover_colour or selected_colour - float mix_val = 0.3 + float(prov_index == hover_index) * 0.3 + float(prov_index == selected_index) * 0.3; - // Don't mix if the province index is 0 - mix_val *= float(prov_index != 0u); +vec3 mix_terrain_colour(vec2 uv) { + vec2 map_size = vec2(textureSize(province_index_tex, 0)); + vec2 pixel_offset = mod(fma(uv, map_size, vec2(0.5)), 1.0); + vec2 half_pixel_size = 0.49 / map_size; - vec3 terrain_colour = texture(terrain_tex, UV).rgb; - vec3 province_colour = texelFetch(province_colour_tex, ivec2(prov_idx_split), 0).rgb; + vec2 terrain_uv = uv; + terrain_uv.x *= map_size.x / map_size.y; + terrain_uv *= terrain_tile_factor; - ALBEDO = mix(terrain_colour, province_colour, mix_val); + return mix( + mix(get_terrain_colour(uv, vec2(-1, -1), half_pixel_size, terrain_uv), + get_terrain_colour(uv, vec2(+1, -1), half_pixel_size, terrain_uv), pixel_offset.x), + mix(get_terrain_colour(uv, vec2(-1, +1), half_pixel_size, terrain_uv), + get_terrain_colour(uv, vec2(+1, +1), half_pixel_size, terrain_uv), pixel_offset.x), + pixel_offset.y); +} + +void fragment() { + vec3 terrain_colour = mix_terrain_colour(UV); + ALBEDO = terrain_colour; } |