From 2fd0828d4ce78bf69608f221a3dfa353f1c55b0b Mon Sep 17 00:00:00 2001 From: jc Date: Sat, 3 May 2025 15:32:48 -0500 Subject: [PATCH] Added building menu back in --- fonts/lilita_one_regular.ttf.import | 1 + mission/unit_1.02/census_planning_3.tres | 5 +- .../unit_1.02/construction_efficiency.tres | 5 +- mission/unit_1.02/market_research_1.tres | 5 +- mission/unit_1.02/market_research_2.tres | 5 +- mission/unit_1.02/market_research_3.tres | 5 +- mission/unit_1.02/market_research_4.tres | 5 +- mission/unit_1.02/unlock_buildings.tres | 4 +- mission/unit_1.03_1.05/grid_growth_1.tres | 5 +- mission/unit_1.03_1.05/grid_growth_2.tres | 5 +- mission/unit_1.03_1.05/grid_growth_3.tres | 5 +- mission/unit_1.03_1.05/grid_growth_4.tres | 5 +- mission/unit_1.03_1.05/traffic_flow_1.tres | 5 +- mission/unit_1.03_1.05/traffic_flow_2.tres | 5 +- mission/unit_1.03_1.05/traffic_flow_3.tres | 5 +- mission/unit_1.03_1.05/traffic_flow_4.tres | 5 +- mission/unit_1.06/sustainable_dev_1.tres | 5 +- mission/unit_1.06/sustainable_dev_2.tres | 5 +- mission/unit_1.06/sustainable_dev_2b.tres | 5 +- mission/unit_1.06/sustainable_dev_3.tres | 5 +- mission/unit_1.06/sustainable_dev_4.tres | 5 +- mission/unit_1.06/urban_planning_1.tres | 5 +- mission/unit_1.06/urban_planning_2.tres | 5 +- mission/unit_1.06/urban_planning_3.tres | 5 +- mission/unit_1.06/urban_planning_4.tres | 5 +- mission/unit_1.07/economic_forecast_1.tres | 5 +- mission/unit_1.07/economic_forecast_2.tres | 5 +- mission/unit_1.07/economic_forecast_3.tres | 5 +- mission/unit_1.07/resource_alloc_1.tres | 5 +- mission/unit_1.07/resource_alloc_2.tres | 5 +- mission/unit_1.07/resource_alloc_3.tres | 5 +- mission/unit_1.07/resource_alloc_4.tres | 5 +- models/building-arcology.glb.import | 1 + models/building-garage.glb.import | 1 + models/building-small-a.glb.import | 1 + models/building-small-b.glb.import | 1 + models/building-small-c.glb.import | 1 + models/grass-trees-tall.glb.import | 1 + models/grass-trees.glb.import | 1 + models/grass.glb.import | 1 + models/orb.glb.import | 1 + models/pavement-fountain.glb.import | 1 + models/pavement.glb.import | 1 + models/power_plant.glb.import | 1 + models/road-corner.glb.import | 1 + models/road-intersection.glb.import | 1 + models/road-split.glb.import | 1 + models/road-straight-lightposts.glb.import | 1 + models/road-straight.glb.import | 1 + models/store.glb.import | 1 + .../colormap.png.import~RF5930dbf.TMP | 36 ++ people/character-female-a.glb.import | 1 + people/character-female-d.glb.import | 1 + people/character-male-a.glb.import | 1 + people/character-male-b.glb.import | 1 + people/character-male-c.glb.import | 1 + people/character-male-d.glb.import | 1 + people/character-male-e.glb.import | 1 + people/character-male-f.glb.import | 1 + scenes/main.tscn | 34 +- scenes/structure_menu.tscn | 44 +++ scripts/builder.gd | 4 + scripts/hud_manager.gd | 27 ++ scripts/javascript_global.gd.uid | 1 + scripts/structure_menu.gd | 314 ++++++++++++++++++ scripts/structure_menu.gd.uid | 1 + scripts/structure_menu_new.gd | 175 ++++++++++ scripts/structure_menu_new.gd.uid | 1 + 68 files changed, 744 insertions(+), 74 deletions(-) create mode 100644 people/Textures/colormap.png.import~RF5930dbf.TMP create mode 100644 scenes/structure_menu.tscn create mode 100644 scripts/javascript_global.gd.uid create mode 100644 scripts/structure_menu.gd create mode 100644 scripts/structure_menu.gd.uid create mode 100644 scripts/structure_menu_new.gd create mode 100644 scripts/structure_menu_new.gd.uid diff --git a/fonts/lilita_one_regular.ttf.import b/fonts/lilita_one_regular.ttf.import index 2cf3216..c0d7278 100644 --- a/fonts/lilita_one_regular.ttf.import +++ b/fonts/lilita_one_regular.ttf.import @@ -23,6 +23,7 @@ allow_system_fallback=true force_autohinter=false hinting=1 subpixel_positioning=1 +keep_rounding_remainders=true oversampling=0.0 Fallbacks=null fallbacks=[] diff --git a/mission/unit_1.02/census_planning_3.tres b/mission/unit_1.02/census_planning_3.tres index 4c3169a..91836fd 100644 --- a/mission/unit_1.02/census_planning_3.tres +++ b/mission/unit_1.02/census_planning_3.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://cjr36hqnmyn0x"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_dhx01"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="2_b4llw"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_dhx01"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_b4llw"] [sub_resource type="Resource" id="Resource_c06be"] script = ExtResource("1_dhx01") @@ -60,3 +60,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/store.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.02/construction_efficiency.tres b/mission/unit_1.02/construction_efficiency.tres index 8df6537..587bc80 100644 --- a/mission/unit_1.02/construction_efficiency.tres +++ b/mission/unit_1.02/construction_efficiency.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=9 format=3 uid="uid://bh148683scgge"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_objective"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="2_mission"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_objective"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_mission"] [ext_resource type="Resource" uid="uid://dykbopx8n3c3v" path="res://resources/patterns/road_square.tres" id="3_pattern"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="4_building_a"] [ext_resource type="Resource" uid="uid://bh65eqgid4kxy" path="res://structures/building-small-c.tres" id="5_building_c"] @@ -83,3 +83,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://structures/building-small-a.tres", "res://structures/building-small-b.tres", "res://structures/building-small-c.tres", "res://structures/building-garage.tres"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.02/market_research_1.tres b/mission/unit_1.02/market_research_1.tres index 15b890e..d78f37f 100644 --- a/mission/unit_1.02/market_research_1.tres +++ b/mission/unit_1.02/market_research_1.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://442cwthak2pa"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_tcpuf"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_tcpuf"] [ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_d7dn8"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_viy3t"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_viy3t"] [sub_resource type="Resource" id="Resource_1rxby"] script = ExtResource("1_tcpuf") @@ -36,3 +36,4 @@ num_of_user_inputs = 1 input_labels = Array[String]([]) companion_dialog = {} unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.02/market_research_2.tres b/mission/unit_1.02/market_research_2.tres index bd7cc2a..f2236fa 100644 --- a/mission/unit_1.02/market_research_2.tres +++ b/mission/unit_1.02/market_research_2.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://bom5bu47dy5kp"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_pfd6v"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_pfd6v"] [ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_ktjdq"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_w1cq1"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_w1cq1"] [sub_resource type="Resource" id="Resource_a42kn"] script = ExtResource("1_pfd6v") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.02/market_research_3.tres b/mission/unit_1.02/market_research_3.tres index 2a19103..b6d1e95 100644 --- a/mission/unit_1.02/market_research_3.tres +++ b/mission/unit_1.02/market_research_3.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://csrqvfwp63ygr"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_a8iy6"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="2_5q4dp"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_a8iy6"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_5q4dp"] [sub_resource type="Resource" id="Resource_m1jev"] script = ExtResource("1_a8iy6") @@ -45,3 +45,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/road-straight-lightposts.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.02/market_research_4.tres b/mission/unit_1.02/market_research_4.tres index 6d04cfc..f34b00c 100644 --- a/mission/unit_1.02/market_research_4.tres +++ b/mission/unit_1.02/market_research_4.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://qwiwim2pg88f"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_lsd8i"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_lsd8i"] [ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="2_v2q1j"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_gtu3s"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_gtu3s"] [sub_resource type="Resource" id="Resource_mhw3l"] script = ExtResource("1_lsd8i") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/road-intersection.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.02/unlock_buildings.tres b/mission/unit_1.02/unlock_buildings.tres index c858e24..ea05cac 100644 --- a/mission/unit_1.02/unlock_buildings.tres +++ b/mission/unit_1.02/unlock_buildings.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cua0khnbyusip"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_objective"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="2_mission"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_objective"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_mission"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="3_building_a"] [sub_resource type="Resource" id="Resource_objective1"] diff --git a/mission/unit_1.03_1.05/grid_growth_1.tres b/mission/unit_1.03_1.05/grid_growth_1.tres index 147ba7f..c6557cb 100644 --- a/mission/unit_1.03_1.05/grid_growth_1.tres +++ b/mission/unit_1.03_1.05/grid_growth_1.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cfgw8dblm55c5"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_fvshb"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_fvshb"] [ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_evy85"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_mtrpd"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_mtrpd"] [sub_resource type="Resource" id="Resource_pj2vg"] script = ExtResource("1_fvshb") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/grid_growth_2.tres b/mission/unit_1.03_1.05/grid_growth_2.tres index 38aa9c0..779bfc9 100644 --- a/mission/unit_1.03_1.05/grid_growth_2.tres +++ b/mission/unit_1.03_1.05/grid_growth_2.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ba3ndftq7dht7"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_miqck"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_miqck"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_r3vpw"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_mdu3m"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_mdu3m"] [sub_resource type="Resource" id="Resource_utswr"] script = ExtResource("1_miqck") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/power_plant.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/grid_growth_3.tres b/mission/unit_1.03_1.05/grid_growth_3.tres index f437fea..b1c798b 100644 --- a/mission/unit_1.03_1.05/grid_growth_3.tres +++ b/mission/unit_1.03_1.05/grid_growth_3.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://dgimr2v12rjqu"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_8rvyb"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_8rvyb"] [ext_resource type="Resource" uid="uid://c4qbn3d85prxx" path="res://structures/power-plant.tres" id="2_0kbkj"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_8cjg3"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_8cjg3"] [sub_resource type="Resource" id="Resource_fmshv"] script = ExtResource("1_8rvyb") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/grass-trees-tall.glb", "res://models/grass.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/grid_growth_4.tres b/mission/unit_1.03_1.05/grid_growth_4.tres index 923cfbb..8bd6d8d 100644 --- a/mission/unit_1.03_1.05/grid_growth_4.tres +++ b/mission/unit_1.03_1.05/grid_growth_4.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=7 format=3 uid="uid://dm2o4dq2oml53"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_x4c68"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_x4c68"] [ext_resource type="Resource" uid="uid://tm532uesguhk" path="res://structures/grass.tres" id="2_ckbw6"] [ext_resource type="Resource" uid="uid://y6jafhfnhbrp" path="res://structures/grass-trees-tall.tres" id="3_i0070"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_mjpfs"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_mjpfs"] [sub_resource type="Resource" id="Resource_mldwf"] script = ExtResource("1_x4c68") @@ -58,3 +58,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/traffic_flow_1.tres b/mission/unit_1.03_1.05/traffic_flow_1.tres index 39117ac..7df7046 100644 --- a/mission/unit_1.03_1.05/traffic_flow_1.tres +++ b/mission/unit_1.03_1.05/traffic_flow_1.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://btwrfq37q8vey"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_ajvs5"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_ajvs5"] [ext_resource type="Resource" uid="uid://d2jplegnkl6u2" path="res://structures/road-corner.tres" id="2_exdai"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_kexcf"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_kexcf"] [sub_resource type="Resource" id="Resource_qykcx"] script = ExtResource("1_ajvs5") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/traffic_flow_2.tres b/mission/unit_1.03_1.05/traffic_flow_2.tres index c8f9860..d2be3e1 100644 --- a/mission/unit_1.03_1.05/traffic_flow_2.tres +++ b/mission/unit_1.03_1.05/traffic_flow_2.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cf7gpb4j7gq1g"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_8k2sf"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_8k2sf"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_4a8uo"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_aihyv"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_aihyv"] [sub_resource type="Resource" id="Resource_fmsjh"] script = ExtResource("1_8k2sf") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/traffic_flow_3.tres b/mission/unit_1.03_1.05/traffic_flow_3.tres index 5f423bf..eb3b317 100644 --- a/mission/unit_1.03_1.05/traffic_flow_3.tres +++ b/mission/unit_1.03_1.05/traffic_flow_3.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ddmxjjyxgxyxo"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_1hl01"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_1hl01"] [ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_i3hgc"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_6fq1p"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_6fq1p"] [sub_resource type="Resource" id="Resource_h6f0e"] script = ExtResource("1_1hl01") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.03_1.05/traffic_flow_4.tres b/mission/unit_1.03_1.05/traffic_flow_4.tres index d337013..b76dce5 100644 --- a/mission/unit_1.03_1.05/traffic_flow_4.tres +++ b/mission/unit_1.03_1.05/traffic_flow_4.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://doxd30r8qbgdq"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_kdkdo"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_kdkdo"] [ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="2_0dtbf"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_uodr7"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_uodr7"] [sub_resource type="Resource" id="Resource_uq2hw"] script = ExtResource("1_kdkdo") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/sustainable_dev_1.tres b/mission/unit_1.06/sustainable_dev_1.tres index 7848393..3868533 100644 --- a/mission/unit_1.06/sustainable_dev_1.tres +++ b/mission/unit_1.06/sustainable_dev_1.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://duaxn13myfx22"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_40kcw"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="2_x8j3r"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_40kcw"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_x8j3r"] [sub_resource type="Resource" id="Resource_qlixo"] script = ExtResource("1_40kcw") @@ -45,3 +45,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/sustainable_dev_2.tres b/mission/unit_1.06/sustainable_dev_2.tres index 653394d..c9e1c4c 100644 --- a/mission/unit_1.06/sustainable_dev_2.tres +++ b/mission/unit_1.06/sustainable_dev_2.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://fuxb3pfbbwjm"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_75i2t"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_75i2t"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_lh8y5"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="4_30pdy"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="4_30pdy"] [sub_resource type="Resource" id="Resource_qb5w1"] script = ExtResource("1_75i2t") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/sustainable_dev_2b.tres b/mission/unit_1.06/sustainable_dev_2b.tres index ce4e9b0..89e039a 100644 --- a/mission/unit_1.06/sustainable_dev_2b.tres +++ b/mission/unit_1.06/sustainable_dev_2b.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://bsic030rpgh08"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_75i2t"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_75i2t"] [ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_3t66o"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_30pdy"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_30pdy"] [sub_resource type="Resource" id="Resource_vcbou"] script = ExtResource("1_75i2t") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://structures/store.tres"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/sustainable_dev_3.tres b/mission/unit_1.06/sustainable_dev_3.tres index 0c9df68..ad5f59d 100644 --- a/mission/unit_1.06/sustainable_dev_3.tres +++ b/mission/unit_1.06/sustainable_dev_3.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://byd5jxiutxpky"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_3s3sm"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_3s3sm"] [ext_resource type="Resource" uid="uid://c4qbn3d85prxx" path="res://structures/power-plant.tres" id="2_5l1dw"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_w8jc7"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_w8jc7"] [sub_resource type="Resource" id="Resource_d7jw4"] script = ExtResource("1_3s3sm") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/sustainable_dev_4.tres b/mission/unit_1.06/sustainable_dev_4.tres index 26e50c6..e12d6ba 100644 --- a/mission/unit_1.06/sustainable_dev_4.tres +++ b/mission/unit_1.06/sustainable_dev_4.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://daug1o7kppqit"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_oa16m"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_oa16m"] [ext_resource type="Resource" uid="uid://y6jafhfnhbrp" path="res://structures/grass-trees-tall.tres" id="2_x4xh6"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_3tpnw"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_3tpnw"] [sub_resource type="Resource" id="Resource_8dxyl"] script = ExtResource("1_oa16m") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/urban_planning_1.tres b/mission/unit_1.06/urban_planning_1.tres index 873c71a..d86df7d 100644 --- a/mission/unit_1.06/urban_planning_1.tres +++ b/mission/unit_1.06/urban_planning_1.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cp7tcpktwlrkt"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_fywct"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_fywct"] [ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_a71iq"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_38y5t"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_38y5t"] [sub_resource type="Resource" id="Resource_wq8mf"] script = ExtResource("1_fywct") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/urban_planning_2.tres b/mission/unit_1.06/urban_planning_2.tres index f964be8..c6652fd 100644 --- a/mission/unit_1.06/urban_planning_2.tres +++ b/mission/unit_1.06/urban_planning_2.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://c3q1afcvwi4rk"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_0s0wv"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_0s0wv"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_6f04c"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_7jlc0"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_7jlc0"] [sub_resource type="Resource" id="Resource_3fy3g"] script = ExtResource("1_0s0wv") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/urban_planning_3.tres b/mission/unit_1.06/urban_planning_3.tres index 8666eb0..5a7c0ab 100644 --- a/mission/unit_1.06/urban_planning_3.tres +++ b/mission/unit_1.06/urban_planning_3.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ct1k7n2oopwdu"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_40klq"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_40klq"] [ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="2_u46hd"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_j3mtn"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_j3mtn"] [sub_resource type="Resource" id="Resource_fai8r"] script = ExtResource("1_40klq") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/pavement-fountain.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.06/urban_planning_4.tres b/mission/unit_1.06/urban_planning_4.tres index dc7d446..6621105 100644 --- a/mission/unit_1.06/urban_planning_4.tres +++ b/mission/unit_1.06/urban_planning_4.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=7 format=3 uid="uid://d1fykuxfmh2q1"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_wnlf0"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_wnlf0"] [ext_resource type="Resource" uid="uid://dqqe3iofnleup" path="res://structures/pavement-fountain.tres" id="2_bmmdj"] [ext_resource type="Resource" uid="uid://y6jafhfnhbrp" path="res://structures/grass-trees-tall.tres" id="3_fegi2"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="4_8gmvv"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="4_8gmvv"] [sub_resource type="Resource" id="Resource_1ht3m"] script = ExtResource("1_wnlf0") @@ -57,3 +57,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/economic_forecast_1.tres b/mission/unit_1.07/economic_forecast_1.tres index c6bfb42..10253bb 100644 --- a/mission/unit_1.07/economic_forecast_1.tres +++ b/mission/unit_1.07/economic_forecast_1.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=4 format=3 uid="uid://detwnqsq87r30"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_cjqfg"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="2_pv8r1"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_cjqfg"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="2_pv8r1"] [sub_resource type="Resource" id="Resource_e2jx7"] script = ExtResource("1_cjqfg") @@ -45,3 +45,4 @@ companion_dialog = { } } unlocked_items = Array[String](["res://models/building-small-c.glb"]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/economic_forecast_2.tres b/mission/unit_1.07/economic_forecast_2.tres index b2c374b..7b5d98e 100644 --- a/mission/unit_1.07/economic_forecast_2.tres +++ b/mission/unit_1.07/economic_forecast_2.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=7 format=3 uid="uid://bj7tjuknfaeyg"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_t87pd"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_t87pd"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_ys3mw"] [ext_resource type="Resource" uid="uid://bh65eqgid4kxy" path="res://structures/building-small-c.tres" id="3_jl18p"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="4_2h1ol"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="4_2h1ol"] [sub_resource type="Resource" id="Resource_mht7j"] script = ExtResource("1_t87pd") @@ -57,3 +57,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/economic_forecast_3.tres b/mission/unit_1.07/economic_forecast_3.tres index afcc471..21ed6ec 100644 --- a/mission/unit_1.07/economic_forecast_3.tres +++ b/mission/unit_1.07/economic_forecast_3.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://ctyrlnq5cxuiu"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_r0j2r"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_r0j2r"] [ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_oqy42"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_r78ev"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_r78ev"] [sub_resource type="Resource" id="Resource_c21kt"] script = ExtResource("1_r0j2r") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/resource_alloc_1.tres b/mission/unit_1.07/resource_alloc_1.tres index 88f7ec4..0f59b94 100644 --- a/mission/unit_1.07/resource_alloc_1.tres +++ b/mission/unit_1.07/resource_alloc_1.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://bwrkqv42wk8f"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_1k37f"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_1k37f"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="2_qlnvj"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_4udbq"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_4udbq"] [sub_resource type="Resource" id="Resource_0fxto"] script = ExtResource("1_1k37f") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/resource_alloc_2.tres b/mission/unit_1.07/resource_alloc_2.tres index ee9ea43..f3c21de 100644 --- a/mission/unit_1.07/resource_alloc_2.tres +++ b/mission/unit_1.07/resource_alloc_2.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://d0nblitd4ixir"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_vdhxy"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_vdhxy"] [ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="2_hh0xb"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_k5ivn"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_k5ivn"] [sub_resource type="Resource" id="Resource_21csl"] script = ExtResource("1_vdhxy") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/resource_alloc_3.tres b/mission/unit_1.07/resource_alloc_3.tres index 6e7d54a..c1ff157 100644 --- a/mission/unit_1.07/resource_alloc_3.tres +++ b/mission/unit_1.07/resource_alloc_3.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cxh8dgf54oimx"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_c76o5"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_c76o5"] [ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_4rkoa"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_iqaae"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_iqaae"] [sub_resource type="Resource" id="Resource_r01e3"] script = ExtResource("1_c76o5") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/mission/unit_1.07/resource_alloc_4.tres b/mission/unit_1.07/resource_alloc_4.tres index f02fdf7..c9cdbc6 100644 --- a/mission/unit_1.07/resource_alloc_4.tres +++ b/mission/unit_1.07/resource_alloc_4.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="MissionData" load_steps=5 format=3 uid="uid://cpfr2xnjtpcog"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="1_4b0uw"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="1_4b0uw"] [ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="2_y8alv"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="3_p34yh"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="3_p34yh"] [sub_resource type="Resource" id="Resource_grdmr"] script = ExtResource("1_4b0uw") @@ -47,3 +47,4 @@ companion_dialog = { } } unlocked_items = Array[String]([]) +starting_structures = Array[String]([]) diff --git a/models/building-arcology.glb.import b/models/building-arcology.glb.import index c2f09d0..e8cbf88 100644 --- a/models/building-arcology.glb.import +++ b/models/building-arcology.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/building-garage.glb.import b/models/building-garage.glb.import index bc34f24..90489b8 100644 --- a/models/building-garage.glb.import +++ b/models/building-garage.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/building-small-a.glb.import b/models/building-small-a.glb.import index 45016a3..57a8598 100644 --- a/models/building-small-a.glb.import +++ b/models/building-small-a.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/building-small-b.glb.import b/models/building-small-b.glb.import index a7fb7d8..31bebe0 100644 --- a/models/building-small-b.glb.import +++ b/models/building-small-b.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/building-small-c.glb.import b/models/building-small-c.glb.import index 2279e06..73068f3 100644 --- a/models/building-small-c.glb.import +++ b/models/building-small-c.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/grass-trees-tall.glb.import b/models/grass-trees-tall.glb.import index 436ec44..81ab2a8 100644 --- a/models/grass-trees-tall.glb.import +++ b/models/grass-trees-tall.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/grass-trees.glb.import b/models/grass-trees.glb.import index 9e87226..109f75c 100644 --- a/models/grass-trees.glb.import +++ b/models/grass-trees.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/grass.glb.import b/models/grass.glb.import index 9517802..d7463d4 100644 --- a/models/grass.glb.import +++ b/models/grass.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/orb.glb.import b/models/orb.glb.import index 543da10..78b9c38 100644 --- a/models/orb.glb.import +++ b/models/orb.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/pavement-fountain.glb.import b/models/pavement-fountain.glb.import index baff4cd..4244037 100644 --- a/models/pavement-fountain.glb.import +++ b/models/pavement-fountain.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/pavement.glb.import b/models/pavement.glb.import index 2a906e7..85f9eed 100644 --- a/models/pavement.glb.import +++ b/models/pavement.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/power_plant.glb.import b/models/power_plant.glb.import index 9057ff1..09c9374 100644 --- a/models/power_plant.glb.import +++ b/models/power_plant.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/road-corner.glb.import b/models/road-corner.glb.import index 2749d65..4ca15d3 100644 --- a/models/road-corner.glb.import +++ b/models/road-corner.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/road-intersection.glb.import b/models/road-intersection.glb.import index 7bf6a46..6f60e3a 100644 --- a/models/road-intersection.glb.import +++ b/models/road-intersection.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/road-split.glb.import b/models/road-split.glb.import index 49d7cb1..5f68323 100644 --- a/models/road-split.glb.import +++ b/models/road-split.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/road-straight-lightposts.glb.import b/models/road-straight-lightposts.glb.import index f8bbe28..eb75c53 100644 --- a/models/road-straight-lightposts.glb.import +++ b/models/road-straight-lightposts.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/road-straight.glb.import b/models/road-straight.glb.import index d11a8d2..bc9e256 100644 --- a/models/road-straight.glb.import +++ b/models/road-straight.glb.import @@ -18,6 +18,7 @@ nodes/root_name="" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/models/store.glb.import b/models/store.glb.import index 8420836..d4078db 100644 --- a/models/store.glb.import +++ b/models/store.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/Textures/colormap.png.import~RF5930dbf.TMP b/people/Textures/colormap.png.import~RF5930dbf.TMP new file mode 100644 index 0000000..a8c56b9 --- /dev/null +++ b/people/Textures/colormap.png.import~RF5930dbf.TMP @@ -0,0 +1,36 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crbry5s73b6rw" +path.s3tc="res://.godot/imported/colormap.png-212e5588ca846efe35817fd63dff6086.s3tc.ctex" +path.etc2="res://.godot/imported/colormap.png-212e5588ca846efe35817fd63dff6086.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://people/Textures/colormap.png" +dest_files=["res://.godot/imported/colormap.png-212e5588ca846efe35817fd63dff6086.s3tc.ctex", "res://.godot/imported/colormap.png-212e5588ca846efe35817fd63dff6086.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/people/character-female-a.glb.import b/people/character-female-a.glb.import index 07579bb..6cfbf0f 100644 --- a/people/character-female-a.glb.import +++ b/people/character-female-a.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-female-d.glb.import b/people/character-female-d.glb.import index c3dc70f..51e5035 100644 --- a/people/character-female-d.glb.import +++ b/people/character-female-d.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-male-a.glb.import b/people/character-male-a.glb.import index d2e6620..b30a2bd 100644 --- a/people/character-male-a.glb.import +++ b/people/character-male-a.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-male-b.glb.import b/people/character-male-b.glb.import index e238e0b..8e0692d 100644 --- a/people/character-male-b.glb.import +++ b/people/character-male-b.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-male-c.glb.import b/people/character-male-c.glb.import index 01d0609..3362357 100644 --- a/people/character-male-c.glb.import +++ b/people/character-male-c.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-male-d.glb.import b/people/character-male-d.glb.import index 5b12b97..d55f076 100644 --- a/people/character-male-d.glb.import +++ b/people/character-male-d.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-male-e.glb.import b/people/character-male-e.glb.import index a3e394d..74b3747 100644 --- a/people/character-male-e.glb.import +++ b/people/character-male-e.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/people/character-male-f.glb.import b/people/character-male-f.glb.import index b2fe348..9bdc45c 100644 --- a/people/character-male-f.glb.import +++ b/people/character-male-f.glb.import @@ -18,6 +18,7 @@ nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true diff --git a/scenes/main.tscn b/scenes/main.tscn index 7fb1b2a..91fa1b2 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -1,40 +1,40 @@ -[gd_scene load_steps=73 format=3 uid="uid://b6eb1v02n61vv"] +[gd_scene load_steps=74 format=3 uid="uid://vgwrcfy1qawf"] -[ext_resource type="Script" path="res://scripts/builder.gd" id="1_jybm7"] +[ext_resource type="Script" uid="uid://c37h6na3e4twn" path="res://scripts/builder.gd" id="1_jybm7"] [ext_resource type="Environment" uid="uid://jbptgqvstei3" path="res://scenes/main-environment.tres" id="1_yndf3"] -[ext_resource type="Script" path="res://scripts/structure.gd" id="2_54v6r"] +[ext_resource type="Script" uid="uid://uxn26t1x4ehr" path="res://scripts/structure.gd" id="2_54v6r"] [ext_resource type="Resource" uid="uid://dv14kkhb6umkv" path="res://structures/road-straight.tres" id="2_bwyku"] [ext_resource type="Texture2D" uid="uid://cbk07cxgshg26" path="res://sprites/selector.png" id="4_wr1wv"] [ext_resource type="Resource" uid="uid://cntgl86ianngh" path="res://structures/building-small-a.tres" id="5_v5o2m"] [ext_resource type="Resource" uid="uid://ccb475jeg7ym5" path="res://structures/grass-trees.tres" id="6_fwsy4"] [ext_resource type="Resource" uid="uid://y6jafhfnhbrp" path="res://structures/grass-trees-tall.tres" id="7_t5ykj"] -[ext_resource type="Script" path="res://scripts/view.gd" id="8_yovpv"] +[ext_resource type="Script" uid="uid://d3n8yylhejdoh" path="res://scripts/view.gd" id="8_yovpv"] [ext_resource type="Resource" uid="uid://tm532uesguhk" path="res://structures/grass.tres" id="9_e755i"] -[ext_resource type="Script" path="res://scripts/mission/mission_manager.gd" id="10_oe3re"] +[ext_resource type="Script" uid="uid://otnxt4e77gmc" path="res://scripts/mission/mission_manager.gd" id="10_oe3re"] [ext_resource type="Resource" uid="uid://mxrnqinnsqnt" path="res://structures/road-straight-lightposts.tres" id="11_20frt"] [ext_resource type="Resource" uid="uid://ch8vtcpine1lc" path="res://structures/pavement.tres" id="11_ro3en"] [ext_resource type="Resource" uid="uid://c4qbn3d85prxx" path="res://structures/power-plant.tres" id="12_xtc7p"] [ext_resource type="PackedScene" uid="uid://dmsy06s02tcw4" path="res://scenes/generic_text_panel.tscn" id="13_7i6dj"] [ext_resource type="Resource" uid="uid://bh65eqgid4kxy" path="res://structures/building-small-c.tres" id="13_kf5aa"] -[ext_resource type="Script" path="res://scripts/mission/mission_ui.gd" id="13_xvw5w"] -[ext_resource type="Script" path="res://resources/generic_text_panel.resource.gd" id="14_76jlq"] -[ext_resource type="Script" path="res://scripts/mission/learning_panel.gd" id="14_q2ymb"] +[ext_resource type="Script" uid="uid://ctqqmg4ydlbse" path="res://scripts/mission/mission_ui.gd" id="13_xvw5w"] +[ext_resource type="Script" uid="uid://b6kf2nelnggk6" path="res://resources/generic_text_panel.resource.gd" id="14_76jlq"] +[ext_resource type="Script" uid="uid://dnquivpg0ead" path="res://scripts/mission/learning_panel.gd" id="14_q2ymb"] [ext_resource type="Resource" uid="uid://dqqe3iofnleup" path="res://structures/pavement-fountain.tres" id="14_t5ykj"] -[ext_resource type="Script" path="res://scripts/mission/mission_data.gd" id="14_vcrh8"] +[ext_resource type="Script" uid="uid://cjaik5ku37xqx" path="res://scripts/mission/mission_data.gd" id="14_vcrh8"] [ext_resource type="Resource" uid="uid://dveu4dnue0d54" path="res://structures/road-intersection.tres" id="15_e755i"] [ext_resource type="Resource" uid="uid://cjr36hqnmyn0x" path="res://mission/unit_1.02/census_planning_3.tres" id="17_rrdy6"] [ext_resource type="FontFile" uid="uid://d0cxd77jybrcn" path="res://fonts/lilita_one_regular.ttf" id="17_vlub6"] [ext_resource type="PackedScene" uid="uid://b4gkfwf4i3ydl" path="res://scenes/character.tscn" id="18_8lrh8"] [ext_resource type="PackedScene" uid="uid://cgk66f6rg03mj" path="res://scenes/hud.tscn" id="18_hud"] [ext_resource type="PackedScene" uid="uid://bqjnp7uypupog" path="res://scenes/controls_panel.tscn" id="19_controls"] -[ext_resource type="Script" path="res://scripts/game_manager.gd" id="20_game_manager"] +[ext_resource type="Script" uid="uid://b5nubrdeseay4" path="res://scripts/game_manager.gd" id="20_game_manager"] [ext_resource type="Resource" uid="uid://442cwthak2pa" path="res://mission/unit_1.02/market_research_1.tres" id="20_ngu16"] [ext_resource type="PackedScene" uid="uid://b4s46k58ddpyc" path="res://scenes/sound_panel.tscn" id="21_sound_panel"] [ext_resource type="Resource" uid="uid://dtal0tl2ee336" path="res://structures/store.tres" id="21_y11qv"] [ext_resource type="PackedScene" uid="uid://btfwonjc8uj0w" path="res://scenes/mission_select_menu.tscn" id="24_ro3en"] [ext_resource type="Resource" uid="uid://bom5bu47dy5kp" path="res://mission/unit_1.02/market_research_2.tres" id="24_xud6a"] [ext_resource type="Resource" uid="uid://csrqvfwp63ygr" path="res://mission/unit_1.02/market_research_3.tres" id="25_6hx7u"] -[ext_resource type="PackedScene" uid="uid://b4k3xfm8pd8qw" path="res://scenes/building_selector.tscn" id="25_od4ux"] +[ext_resource type="PackedScene" path="res://scenes/building_selector.tscn" id="25_od4ux"] [ext_resource type="Resource" uid="uid://qwiwim2pg88f" path="res://mission/unit_1.02/market_research_4.tres" id="26_lvk23"] [ext_resource type="PackedScene" uid="uid://cb2rylpbex3ep" path="res://models/building-arcology.glb" id="27_m8wco"] [ext_resource type="Resource" uid="uid://cfgw8dblm55c5" path="res://mission/unit_1.03_1.05/grid_growth_1.tres" id="27_s0e58"] @@ -62,8 +62,9 @@ [ext_resource type="Resource" uid="uid://d0nblitd4ixir" path="res://mission/unit_1.07/resource_alloc_2.tres" id="48_ck35a"] [ext_resource type="Resource" uid="uid://cxh8dgf54oimx" path="res://mission/unit_1.07/resource_alloc_3.tres" id="49_cvgxw"] [ext_resource type="Resource" uid="uid://cpfr2xnjtpcog" path="res://mission/unit_1.07/resource_alloc_4.tres" id="50_6ke0d"] -[ext_resource type="Script" path="res://scripts/mission/mission_objective.gd" id="51_kf5aa"] +[ext_resource type="Script" uid="uid://be2nkvjhpebhi" path="res://scripts/mission/mission_objective.gd" id="51_kf5aa"] [ext_resource type="Resource" uid="uid://bsic030rpgh08" path="res://mission/unit_1.06/sustainable_dev_2b.tres" id="57_e755i"] +[ext_resource type="PackedScene" uid="uid://blfrsgh3cct2l" path="res://scenes/structure_menu.tscn" id="58_structure_menu"] [sub_resource type="Resource" id="Resource_1gdbm"] script = ExtResource("14_76jlq") @@ -259,8 +260,17 @@ visible = false [node name="BuildingSelector" parent="CanvasLayer" instance=ExtResource("25_od4ux")] visible = false +layout_direction = 2 offset_right = -277.0 +[node name="StructureMenu" parent="CanvasLayer" instance=ExtResource("58_structure_menu")] +offset_left = 4.0 +offset_top = 83.0 +offset_right = 304.0 +offset_bottom = 683.0 +grow_horizontal = 1 +grow_vertical = 1 + [node name="MissionManager" type="Node" parent="." node_paths=PackedStringArray("mission_ui", "builder")] script = ExtResource("10_oe3re") missions = Array[ExtResource("14_vcrh8")]([ExtResource("28_ro3en"), ExtResource("30_od4ux"), ExtResource("17_rrdy6"), ExtResource("20_ngu16"), ExtResource("24_xud6a"), ExtResource("25_6hx7u"), ExtResource("26_lvk23"), ExtResource("27_s0e58"), ExtResource("28_hurxs"), ExtResource("29_rhn1n"), ExtResource("30_4rwkv"), ExtResource("31_j2idb"), ExtResource("32_ipu0c"), ExtResource("33_c0l5e"), ExtResource("34_21t20"), ExtResource("35_o0bjh"), ExtResource("36_2wodh"), ExtResource("37_psgx1"), ExtResource("38_hw762"), ExtResource("39_ymw5p"), ExtResource("40_uggp1"), ExtResource("41_f0dxf"), ExtResource("42_fv8gl"), ExtResource("43_qvne6"), ExtResource("44_haub2"), ExtResource("45_xs8xk"), SubResource("Resource_t5ykj"), ExtResource("47_6w4y8"), ExtResource("48_ck35a"), ExtResource("49_cvgxw"), ExtResource("50_6ke0d"), ExtResource("57_e755i")]) diff --git a/scenes/structure_menu.tscn b/scenes/structure_menu.tscn new file mode 100644 index 0000000..ba3f940 --- /dev/null +++ b/scenes/structure_menu.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=2 format=3 uid="uid://blfrsgh3cct2l"] + +[ext_resource type="Script" uid="uid://cprx4wmn43sgk" path="res://scripts/structure_menu.gd" id="1_structure_menu"] + +[node name="StructureMenu" type="Control"] +layout_mode = 3 +anchors_preset = 0 +offset_right = 300.0 +offset_bottom = 600.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_structure_menu") + +[node name="MenuPanel" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="MenuPanel"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +horizontal_scroll_mode = 0 + +[node name="ItemsContainer" type="HBoxContainer" parent="MenuPanel/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 10 + +[node name="ToggleButton" type="Button" parent="."] +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_right = 40.0 +offset_bottom = 40.0 +grow_horizontal = 0 +text = ">" diff --git a/scripts/builder.gd b/scripts/builder.gd index 0ea1376..83c3211 100644 --- a/scripts/builder.gd +++ b/scripts/builder.gd @@ -213,6 +213,10 @@ func _process(delta): # Function to check if the mouse is over any UI elements func is_mouse_over_ui() -> bool: + # Check if mouse is over the structure menu via HUD + if hud_manager and hud_manager.has_method("is_mouse_over_structure_menu") and hud_manager.is_mouse_over_structure_menu(): + return true + # Get mouse position var mouse_pos = get_viewport().get_mouse_position() diff --git a/scripts/hud_manager.gd b/scripts/hud_manager.gd index 61aa4a3..4a9768e 100644 --- a/scripts/hud_manager.gd +++ b/scripts/hud_manager.gd @@ -24,6 +24,7 @@ var population_tooltip: Control var electricity_tooltip: Control var controls_panel: PanelContainer var sound_panel: PanelContainer +var structure_menu: Control @onready var _builder = get_node_or_null("/root/Main/Builder") func _ready(): @@ -43,6 +44,7 @@ func _ready(): # Get references to panels controls_panel = get_node_or_null("/root/Main/CanvasLayer/ControlsPanel") sound_panel = get_node_or_null("/root/Main/CanvasLayer/SoundPanel") + structure_menu = get_node_or_null("/root/Main/CanvasLayer/StructureMenu") # Setup mission select button if mission_select_button: @@ -54,6 +56,9 @@ func _ready(): # Setup mission select menu _setup_mission_select_menu() + # Setup structure menu + _setup_structure_menu() + # Wait a frame to ensure all nodes are ready await get_tree().process_frame @@ -100,6 +105,23 @@ func _setup_mission_select_menu(): canvas_layer.add_child(mission_select_menu) # Make sure it's initially hidden mission_select_menu.hide() + +# Set up the structure menu +func _setup_structure_menu(): + # Check if the structure menu already exists + structure_menu = get_node_or_null("/root/Main/CanvasLayer/StructureMenu") + + # If not, instantiate and add it + if not structure_menu: + var structure_menu_scene = load("res://scenes/structure_menu.tscn") + if structure_menu_scene: + structure_menu = structure_menu_scene.instantiate() + var canvas_layer = get_node_or_null("/root/Main/CanvasLayer") + if canvas_layer: + canvas_layer.add_child(structure_menu) + # Set the builder reference + if _builder: + structure_menu.builder = _builder # Update mission select visibility based on export variable func _update_mission_select_visibility(): @@ -288,3 +310,8 @@ func _on_music_muted_changed(is_muted): # Called when the sfx is muted func _on_sfx_muted_changed(is_muted): pass # Sound panel handles this through signals + +func is_mouse_over_structure_menu() -> bool: + if structure_menu and structure_menu.has_method("is_mouse_over_menu"): + return structure_menu.is_mouse_over_menu() + return false diff --git a/scripts/javascript_global.gd.uid b/scripts/javascript_global.gd.uid new file mode 100644 index 0000000..62f68fa --- /dev/null +++ b/scripts/javascript_global.gd.uid @@ -0,0 +1 @@ +uid://boq8j7e7veaup diff --git a/scripts/structure_menu.gd b/scripts/structure_menu.gd new file mode 100644 index 0000000..69b3cfa --- /dev/null +++ b/scripts/structure_menu.gd @@ -0,0 +1,314 @@ +extends Control + +@export var builder: Node3D +@export var base_menu_width: float = 300.0 # Base width for the menu +@export var item_width: float = 280.0 # Width of each item +@export var item_spacing: float = 20.0 # Spacing between items +@export var menu_speed: float = 0.3 +@export var visible_menu_width: float = 600.0 # The visible width of the menu panel +@export var item_height: float = 180.0 +@export var menu_vertical_offset: float = 40.0 + +var is_open: bool = false +var selected_index: int = -1 +var menu_width: float = base_menu_width # Will be updated based on items + +@onready var toggle_button = $ToggleButton +@onready var menu_panel = $MenuPanel +@onready var items_container = $MenuPanel/ScrollContainer/ItemsContainer + +func _ready(): + # Ensure we have a valid builder reference + if not builder: + builder = get_node_or_null("/root/Main/Builder") + if not builder: + push_error("StructureMenu: Builder node not found!") + return + + # Initialize menu panel position and size + menu_panel.size.x = base_menu_width + menu_panel.position.x = -menu_panel.size.x # Start closed + + # Vertically center the toggle button on the menu panel + toggle_button.anchor_top = 0.5 + toggle_button.anchor_bottom = 0.5 + toggle_button.offset_top = -toggle_button.size.y / 2 + toggle_button.offset_bottom = toggle_button.size.y / 2 + + # Place toggle button at the left edge of the menu + toggle_button.position.x = 0 + toggle_button.text = "▶" + + # Connect signals + toggle_button.pressed.connect(_on_toggle_button_pressed) + + # Connect to builder's structure update signal if it exists + if "structure_updated" in builder: + print("Connecting to builder's structure_updated signal") # Debug print + builder.structure_updated.connect(_on_builder_structure_updated) + + # Wait a frame to ensure all nodes are ready + await get_tree().process_frame + _center_toggle_button() + + # Populate the menu + populate_menu() + + # Print debug info + print("StructureMenu: Builder found: ", builder != null) + print("StructureMenu: Structures array size: ", builder.structures.size() if builder and "structures" in builder else 0) + + # Initialize selection if builder has a current index + if builder and "index" in builder: + selected_index = builder.index + update_selection_highlight() + +func _center_toggle_button(): + # Vertically center the toggle button on the menu panel + var menu_height = menu_panel.size.y + var button_height = toggle_button.size.y + toggle_button.position.y = (menu_height - button_height) / 2 + # Horizontally: always at 0 when closed, at menu_panel.size.x when open + toggle_button.position.x = menu_panel.size.x if is_open else 0 + +func _on_toggle_button_pressed(): + is_open = !is_open + var tween = create_tween() + tween.tween_property(menu_panel, "position:x", 0.0 if is_open else -menu_panel.size.x, menu_speed) + tween.parallel().tween_property(toggle_button, "position:x", menu_panel.size.x if is_open else 0.0, menu_speed) + toggle_button.text = "◀" if is_open else "▶" + _center_toggle_button() + +func _on_builder_structure_updated(index): + print("Builder structure updated signal received. Index: ", index) # Debug print + # Update the selected index and highlight + selected_index = index + update_selection_highlight() + +func populate_menu(): + if not builder or not "structures" in builder: + push_error("StructureMenu: Builder or structures array not found!") + return + + # Clear existing items + for child in items_container.get_children(): + child.queue_free() + + # Count unlocked structures + var unlocked_count = 0 + for structure in builder.structures: + if "unlocked" in structure and structure.unlocked: + unlocked_count += 1 + + # Calculate menu width and height using the user's formula + var padding = item_spacing + menu_width = (unlocked_count * item_width) + ((unlocked_count + 1) * padding) + var menu_height = item_height + 2 * padding + + # Center the menu panel horizontally and set its size using anchors and offsets + menu_panel.anchor_left = 0.5 + menu_panel.anchor_right = 0.5 + menu_panel.offset_left = -menu_width / 2 + menu_panel.offset_right = menu_width / 2 + menu_panel.anchor_top = 0.0 + menu_panel.anchor_bottom = 0.0 + menu_panel.offset_top = 0 + menu_panel.offset_bottom = menu_height + $MenuPanel/ScrollContainer.size.x = menu_width + $MenuPanel/ScrollContainer.size.y = menu_height + $MenuPanel/ScrollContainer.position.y = 0 + $MenuPanel/ScrollContainer.clip_contents = true + + # If menu is closed, keep it offscreen + if not is_open: + menu_panel.position.x = -menu_width + _center_toggle_button() + + # Create a MarginContainer for all-side padding + var margin = MarginContainer.new() + margin.add_theme_constant_override("margin_left", padding) + margin.add_theme_constant_override("margin_right", padding) + margin.add_theme_constant_override("margin_top", padding) + margin.add_theme_constant_override("margin_bottom", padding) + margin.size_flags_horizontal = Control.SIZE_EXPAND_FILL + margin.size_flags_vertical = Control.SIZE_EXPAND_FILL + items_container.add_child(margin) + margin.position.y = menu_vertical_offset + + # Create a CenterContainer to center the row both horizontally and vertically + var center = CenterContainer.new() + center.size_flags_horizontal = Control.SIZE_EXPAND_FILL + center.size_flags_vertical = Control.SIZE_EXPAND_FILL + margin.add_child(center) + + # Create a horizontal container for all items + var row = HBoxContainer.new() + row.add_theme_constant_override("separation", padding) + # DO NOT set row.size_flags_horizontal so it doesn't expand + center.add_child(row) + + # Add all unlocked structures to the row + for i in range(builder.structures.size()): + var structure = builder.structures[i] + if "unlocked" in structure and structure.unlocked: + var item = create_structure_item(structure, i) + row.add_child(item) + + # Update selection highlight after populating + update_selection_highlight() + +func create_structure_item(structure, index): + var item = PanelContainer.new() + item.custom_minimum_size = Vector2(item_width, item_height) + item.size_flags_horizontal = 0 # Prevent horizontal expansion + item.add_theme_stylebox_override("panel", StyleBoxFlat.new()) + + var style = item.get_theme_stylebox("panel") as StyleBoxFlat + style.bg_color = Color(0.2, 0.2, 0.2, 0.8) + style.border_width_left = 2 + style.border_width_top = 2 + style.border_width_right = 2 + style.border_width_bottom = 2 + style.border_color = Color(0.3, 0.3, 0.3) + style.corner_radius_top_left = 5 + style.corner_radius_top_right = 5 + style.corner_radius_bottom_left = 5 + style.corner_radius_bottom_right = 5 + + # Store the structure index in the item for reference + item.set_meta("structure_index", index) + + # Main container for vertical layout + var vbox = VBoxContainer.new() + vbox.custom_minimum_size = Vector2(item_width, item_height) + vbox.size_flags_horizontal = 0 # Prevent horizontal expansion + vbox.add_theme_constant_override("separation", item_spacing) + item.add_child(vbox) + + # Thumbnail container + var thumbnail_container = CenterContainer.new() + thumbnail_container.custom_minimum_size = Vector2(128, 128) + thumbnail_container.size_flags_horizontal = Control.SIZE_SHRINK_CENTER + vbox.add_child(thumbnail_container) + + # Thumbnail + var thumbnail = TextureRect.new() + thumbnail.custom_minimum_size = Vector2(128, 128) + thumbnail.size_flags_horizontal = Control.SIZE_SHRINK_CENTER + thumbnail.size_flags_vertical = Control.SIZE_SHRINK_CENTER + thumbnail.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED + + # Try to load thumbnail + if "thumbnail" in structure and structure.thumbnail != null: + var texture = load(structure.thumbnail) + if texture != null: + # Scale the texture to 128x128 + var image = texture.get_image() + image.resize(128, 128) + var scaled_texture = ImageTexture.create_from_image(image) + thumbnail.texture = scaled_texture + print("Structure ", index, " thumbnail loaded: ", structure.thumbnail) + print("Texture size: ", scaled_texture.get_size()) + print("Thumbnail size: ", thumbnail.size) + print("Thumbnail container size: ", thumbnail_container.size) + + thumbnail_container.add_child(thumbnail) + + # Debug print after adding to container + print("After adding to container:") + print("Thumbnail size: ", thumbnail.size) + print("Thumbnail container size: ", thumbnail_container.size) + print("Thumbnail custom_minimum_size: ", thumbnail.custom_minimum_size) + print("Container custom_minimum_size: ", thumbnail_container.custom_minimum_size) + + # Info container + var info = VBoxContainer.new() + info.size_flags_horizontal = Control.SIZE_EXPAND_FILL + info.add_theme_constant_override("separation", 5) + vbox.add_child(info) + + # Structure name + var name_label = Label.new() + if "title" in structure and structure.title != null: + name_label.text = structure.title + else: + name_label.text = "Structure " + str(index) + name_label.add_theme_font_size_override("font_size", 18) + name_label.add_theme_color_override("font_color", Color(0.9, 0.9, 0.2)) + name_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + info.add_child(name_label) + + # Structure cost + var cost_label = Label.new() + if "price" in structure: + cost_label.text = "Cost: $" + str(structure.price) + else: + cost_label.text = "Cost: $0" + cost_label.add_theme_color_override("font_color", Color(0.2, 0.8, 0.2)) + cost_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + info.add_child(cost_label) + + # Connect click handler + item.gui_input.connect(func(event): _on_item_gui_input(event, index)) + + # Add to container + items_container.add_child(item) + + # Add separator if not last item + if index < builder.structures.size() - 1: + var sep = HSeparator.new() + items_container.add_child(sep) + +func _on_item_gui_input(event, index): + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + select_structure(index) + +func select_structure(index): + if not builder or not "structures" in builder: + return + + if index >= 0 and index < builder.structures.size(): + print("Selecting structure index: ", index) # Debug print + # Update builder's selected structure + builder.index = index + if "update_structure" in builder: + builder.update_structure() + + # Update our selected index + selected_index = index + + # Update visual feedback + update_selection_highlight() + +func update_selection_highlight(): + print("Updating selection highlight. Selected index: ", selected_index) # Debug print + # Update selection highlight for all items + for i in range(items_container.get_child_count()): + var child = items_container.get_child(i) + if child is PanelContainer: + var style = child.get_theme_stylebox("panel") as StyleBoxFlat + var item_index = child.get_meta("structure_index") + if item_index == selected_index: + print("Highlighting item: ", item_index) # Debug print + # Selected item + style.border_color = Color(0.9, 0.9, 0.2) # Yellow border + style.bg_color = Color(0.3, 0.3, 0.3, 0.8) # Slightly lighter background + else: + # Unselected item + style.border_color = Color(0.3, 0.3, 0.3) + style.bg_color = Color(0.2, 0.2, 0.2, 0.8) + +func get_structure_name(structure): + var file_name = structure.model.resource_path.get_file().get_basename() + var names = file_name.split("-") + var title = "" + + for part in names: + if part.length() > 0: + title += part[0].to_upper() + part.substring(1) + " " + + return title.strip_edges() + +func is_mouse_over_menu() -> bool: + var mouse_pos = get_viewport().get_mouse_position() + return menu_panel.get_global_rect().has_point(mouse_pos) or toggle_button.get_global_rect().has_point(mouse_pos) diff --git a/scripts/structure_menu.gd.uid b/scripts/structure_menu.gd.uid new file mode 100644 index 0000000..f6a49d3 --- /dev/null +++ b/scripts/structure_menu.gd.uid @@ -0,0 +1 @@ +uid://cprx4wmn43sgk diff --git a/scripts/structure_menu_new.gd b/scripts/structure_menu_new.gd new file mode 100644 index 0000000..2be5514 --- /dev/null +++ b/scripts/structure_menu_new.gd @@ -0,0 +1,175 @@ +extends Control + +# Reference to the builder node +@export var builder: Node3D + +# Menu properties +@export var menu_width: float = 300.0 +@export var menu_speed: float = 0.3 + +# Menu state +var is_open: bool = false +var selected_index: int = -1 + +# References to UI elements +@onready var toggle_button = $ToggleButton +@onready var menu_panel = $MenuPanel +@onready var items_container = $MenuPanel/ScrollContainer/ItemsContainer + +func _ready(): + # Initialize menu state + menu_panel.position.x = -menu_width + menu_panel.size.x = menu_width + + # Connect toggle button + toggle_button.pressed.connect(_on_toggle_button_pressed) + + # Initial population + populate_menu() + + # Connect to mission manager for updates + var mission_manager = get_node_or_null("/root/Main/MissionManager") + if mission_manager: + mission_manager.mission_started.connect(_on_mission_started) + mission_manager.mission_completed.connect(_on_mission_completed) + +func _on_toggle_button_pressed(): + is_open = !is_open + + # Animate menu + var tween = create_tween() + tween.tween_property(menu_panel, "position:x", 0.0 if is_open else -menu_width, menu_speed) + + # Update toggle button text + toggle_button.text = "◀" if is_open else "▶" + +func populate_menu(): + # Clear existing items + for child in items_container.get_children(): + child.queue_free() + + # Add unlocked structures + for i in range(builder.structures.size()): + var structure = builder.structures[i] + if "unlocked" in structure and structure.unlocked: + create_structure_item(structure, i) + +func create_structure_item(structure, index): + var item = PanelContainer.new() + item.custom_minimum_size = Vector2(menu_width - 20, 100) + item.add_theme_stylebox_override("panel", StyleBoxFlat.new()) + + var style = item.get_theme_stylebox("panel") as StyleBoxFlat + style.bg_color = Color(0.2, 0.2, 0.2, 0.8) + style.border_width_left = 2 + style.border_width_top = 2 + style.border_width_right = 2 + style.border_width_bottom = 2 + style.border_color = Color(0.3, 0.3, 0.3) + style.corner_radius_top_left = 5 + style.corner_radius_top_right = 5 + style.corner_radius_bottom_left = 5 + style.corner_radius_bottom_right = 5 + + var hbox = HBoxContainer.new() + hbox.custom_minimum_size = Vector2(menu_width - 20, 100) + item.add_child(hbox) + + # Thumbnail + var thumbnail = TextureRect.new() + thumbnail.custom_minimum_size = Vector2(80, 80) + thumbnail.expand_mode = TextureRect.EXPAND_FILL_WIDTH + thumbnail.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED + + # Try to load thumbnail + if "thumbnail" in structure and structure.thumbnail: + var texture = load(structure.thumbnail) + if texture: + thumbnail.texture = texture + else: + # Try to get thumbnail from model path + var model_path = structure.model.resource_path + var colormap_path = model_path.get_basename() + "_colormap.png" + if ResourceLoader.exists(colormap_path): + thumbnail.texture = load(colormap_path) + + hbox.add_child(thumbnail) + + # Info container + var info = VBoxContainer.new() + info.size_flags_horizontal = Control.SIZE_EXPAND_FILL + hbox.add_child(info) + + # Structure name + var name_label = Label.new() + if "title" in structure and structure.title: + name_label.text = structure.title + else: + name_label.text = get_structure_name(structure) + name_label.add_theme_font_size_override("font_size", 18) + name_label.add_theme_color_override("font_color", Color(0.9, 0.9, 0.2)) + info.add_child(name_label) + + # Structure cost + var cost_label = Label.new() + cost_label.text = "Cost: $" + str(structure.price) + cost_label.add_theme_color_override("font_color", Color(0.2, 0.8, 0.2)) + info.add_child(cost_label) + + # Structure description + var desc = Label.new() + if "description" in structure and structure.description: + desc.text = structure.description + else: + desc.text = "A structure for your city!" + desc.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART + info.add_child(desc) + + # Connect click handler + item.gui_input.connect(func(event): _on_item_gui_input(event, index)) + + # Add to container + items_container.add_child(item) + + # Add separator if not last item + if index < builder.structures.size() - 1: + var sep = HSeparator.new() + items_container.add_child(sep) + +func _on_item_gui_input(event, index): + if event is InputEventMouseButton and event.pressed and event.button_index == MouseButton.LEFT: + select_structure(index) + +func select_structure(index): + if index >= 0 and index < builder.structures.size(): + builder.index = index + builder.update_structure() + + # Update selection highlight + for i in range(items_container.get_child_count()): + var child = items_container.get_child(i) + if child is PanelContainer: + var style = child.get_theme_stylebox("panel") as StyleBoxFlat + if i/2 == index: # Divide by 2 because of separators + style.border_color = Color(0.9, 0.9, 0.2) + else: + style.border_color = Color(0.3, 0.3, 0.3) + +func get_structure_name(structure): + var file_name = structure.model.resource_path.get_file().get_basename() + var names = file_name.split("-") + var title = "" + + for part in names: + if part.length() > 0: + title += part[0].to_upper() + part.substr(1) + " " + + return title.strip_edges() + +func _on_mission_started(mission): + # Update menu when a new mission starts + populate_menu() + +func _on_mission_completed(mission): + # Update menu when a mission is completed (new structures may be unlocked) + populate_menu() diff --git a/scripts/structure_menu_new.gd.uid b/scripts/structure_menu_new.gd.uid new file mode 100644 index 0000000..f2c3c44 --- /dev/null +++ b/scripts/structure_menu_new.gd.uid @@ -0,0 +1 @@ +uid://0nf5shqoqhn8