diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg index 131b289..db9dc38 100644 --- a/.godot/editor/editor_layout.cfg +++ b/.godot/editor/editor_layout.cfg @@ -2,14 +2,14 @@ dock_3_selected_tab_idx=0 dock_4_selected_tab_idx=0 -dock_5_selected_tab_idx=0 +dock_5_selected_tab_idx=1 dock_floating={} dock_filesystem_h_split_offset=480 dock_filesystem_v_split_offset=0 dock_filesystem_display_mode=0 dock_filesystem_file_sort=0 dock_filesystem_file_list_display_mode=1 -dock_filesystem_selected_paths=PackedStringArray("res://resources/audio_on.png") +dock_filesystem_selected_paths=PackedStringArray("res://resources/audio_off.png") dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/", "res://scenes/", "res://resources/") dock_node_current_tab=0 dock_history_include_scene=true @@ -28,7 +28,7 @@ dock_5="Inspector,Node,History" [EditorNode] -open_scenes=PackedStringArray("res://scenes/main.tscn") +open_scenes=PackedStringArray("res://scenes/main.tscn", "res://scenes/gamestate.tscn", "res://scenes/musicmanager.tscn") current_scene="res://scenes/main.tscn" center_split_offset=-864 selected_default_debugger_tab_idx=0 @@ -53,7 +53,7 @@ zoom_factor=1.0714285 [GameView] -floating_window_rect=Rect2i(4156, 1299, 1399, 813) +floating_window_rect=Rect2i(508, 56, 8600, 3424) floating_window_screen=1 [ShaderEditor] diff --git a/.godot/editor/editor_script_doc_cache.res b/.godot/editor/editor_script_doc_cache.res deleted file mode 100644 index 8ce99fe..0000000 Binary files a/.godot/editor/editor_script_doc_cache.res and /dev/null differ diff --git a/.godot/editor/filesystem_cache10 b/.godot/editor/filesystem_cache10 index f79f185..4c7fb04 100644 --- a/.godot/editor/filesystem_cache10 +++ b/.godot/editor/filesystem_cache10 @@ -1,12 +1,12 @@ 63f7b34db8d8cdea90c76aacccf841ec -::res://::1768994992 +::res://::1769073897 export_presets.cfg::TextFile::-1::1768659892::0::1::::<><><>0<>0<><>:: -::res://build/::1768659995 -::res://resources/::1768814043 -audio_off.png::CompressedTexture2D::976528084422995703::1768814036::1768814043::1::::<><><>0<>0<>8eb956cbe7f28bcd33a4d0f3f309056a<>res://.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.ctex:: -audio_on.png::CompressedTexture2D::3003704488001052360::1768814021::1768814043::1::::<><><>0<>0<>973b72d02e17330456b5163139ac14ea<>res://.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.ctex:: +::res://build/::1769067196 +::res://resources/::1769079583 +audio_off.png::CompressedTexture2D::976528084422995703::1769079374::1769079589::1::::<><><>0<>0<>8eb956cbe7f28bcd33a4d0f3f309056a<>res://.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.ctex:: +audio_on.png::CompressedTexture2D::3003704488001052360::1769079583::1769079589::1::::<><><>0<>0<>973b72d02e17330456b5163139ac14ea<>res://.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.ctex:: thomastanks_new.mp3::AudioStreamMP3::2620953876642984028::1768657428::1768657898::1::::<><><>0<>0<>71420e05b9122bd8011b233595a3388e<>res://.godot/imported/thomastanks_new.mp3-faeee3575032f4283c1731a17141e11b.mp3str:: -::res://resources/train kit/::1768551395 +::res://resources/train kit/::1769067197 railroad-corner-large-ramp.obj::Mesh::2409206090616818222::1727040297::1768551394::1::::<><><>0<>0<>a61f88305257a119568988a927ed078e<>res://.godot/imported/railroad-corner-large-ramp.obj-c7a23496c1b2b1d5a93b93632f472e09.mesh<*>res://.godot/imported/railroad-corner-large-ramp.obj-c7a23496c1b2b1d5a93b93632f472e09.mesh::uid://cdwwcby54pecs::::res://resources/train kit/Textures/colormap.png railroad-corner-large.obj::Mesh::1018263567210823548::1727040297::1768551394::1::::<><><>0<>0<>ba409591917422db5258b9c49d31d67d<>res://.godot/imported/railroad-corner-large.obj-767290257b068e81bba8afabe771bb45.mesh<*>res://.godot/imported/railroad-corner-large.obj-767290257b068e81bba8afabe771bb45.mesh::uid://cdwwcby54pecs::::res://resources/train kit/Textures/colormap.png railroad-corner-small-ramp.obj::Mesh::4748424812719052670::1727040297::1768551394::1::::<><><>0<>0<>47dfd4cc2518e09b75595da6e912f629<>res://.godot/imported/railroad-corner-small-ramp.obj-30da76b04fe12bfd305857de58c73650.mesh<*>res://.godot/imported/railroad-corner-small-ramp.obj-30da76b04fe12bfd305857de58c73650.mesh::uid://cdwwcby54pecs::::res://resources/train kit/Textures/colormap.png @@ -110,17 +110,17 @@ train-locomotive-passenger-b.obj::Mesh::1005507222256758922::1727040295::1768551 train-tram-classic.obj::Mesh::3684736170611761855::1727040295::1768551393::1::::<><><>0<>0<>d1d075ca4ec51c7c6d88bedade388eb6<>res://.godot/imported/train-tram-classic.obj-5c5f7e3ed997a3c6e1af166558bae205.mesh<*>res://.godot/imported/train-tram-classic.obj-5c5f7e3ed997a3c6e1af166558bae205.mesh::uid://cdwwcby54pecs::::res://resources/train kit/Textures/colormap.png train-tram-modern.obj::Mesh::7951114505230208222::1727040295::1768551393::1::::<><><>0<>0<>e6e1242a7148f32651a5ee57a18fd513<>res://.godot/imported/train-tram-modern.obj-91e1e88eed04b0393ca1115cb1980e1b.mesh<*>res://.godot/imported/train-tram-modern.obj-91e1e88eed04b0393ca1115cb1980e1b.mesh::uid://cdwwcby54pecs::::res://resources/train kit/Textures/colormap.png train-tram-round.obj::Mesh::115250456338501034::1727040295::1768551393::1::::<><><>0<>0<>5e3772ddb59635a364b94e1db000bd4a<>res://.godot/imported/train-tram-round.obj-1b613e087f922f3f788c8bf27b8a5616.mesh<*>res://.godot/imported/train-tram-round.obj-1b613e087f922f3f788c8bf27b8a5616.mesh::uid://cdwwcby54pecs::::res://resources/train kit/Textures/colormap.png -::res://resources/train kit/Textures/::1768551396 +::res://resources/train kit/Textures/::1769067197 colormap.png::CompressedTexture2D::5030163645319353198::1727040840::1768551396::1::::<><><>0<>0<>49486029a612050ab47ae771aec92b8c<>res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex:: -::res://scenes/::1768930393 -gamestate.tscn::PackedScene::4137542781585662412::1768815074::0::1::::<><><>0<>0<><>::uid://s80bt8i6u2hv::::res://scripts/gamestate.gd -main.tscn::PackedScene::7111673961189096216::1768930393::0::1::::<><><>0<>0<><>::uid://dfyo0h5yj3us8::::res://scripts/main.gd<>uid://bymoo78gun6a4::::res://scripts/track_generator.gd<>uid://cvn333pymsowx::::res://scripts/train.gd<>uid://cgy51h6a5syer::::res://scripts/train_camera.gd<>uid://cer3o7xlhju7v::::res://scenes/train.tscn<>uid://qrf08uiuhyqg::::res://scenes/musicmanager.tscn<>uid://bi2atrvjj23tk::::res://resources/audio_on.png<>uid://by7iywhy2d8uy::::res://scenes/gamestate.tscn<>uid://n6bjl02ikh00::::res://resources/audio_off.png +::res://scenes/::1769079144 +gamestate.tscn::PackedScene::4137542781585662412::1769074093::0::1::::<><><>0<>0<><>::uid://s80bt8i6u2hv::::res://scripts/gamestate.gd +main.tscn::PackedScene::7111673961189096216::1769079144::0::1::::<><><>0<>0<><>::uid://dfyo0h5yj3us8::::res://scripts/main.gd<>uid://bymoo78gun6a4::::res://scripts/track_generator.gd<>uid://cvn333pymsowx::::res://scripts/train.gd<>uid://cgy51h6a5syer::::res://scripts/train_camera.gd<>uid://cer3o7xlhju7v::::res://scenes/train.tscn<>uid://qrf08uiuhyqg::::res://scenes/musicmanager.tscn<>uid://bi2atrvjj23tk::::res://resources/audio_on.png<>uid://by7iywhy2d8uy::::res://scenes/gamestate.tscn<>uid://n6bjl02ikh00::::res://resources/audio_off.png musicmanager.tscn::PackedScene::1158465914396145662::1768815835::0::1::::<><><>0<>0<><>::uid://bdluyy5uodjb5::::res://resources/thomastanks_new.mp3 train.tscn::PackedScene::5090417957456705533::1768656983::0::1::::<><><>0<>0<><>:: -::res://scripts/::1768930355 -gamestate.gd::GDScript::1333044411309547839::1768893877::0::1::::GameState<>Node<><>0<>0<><>:: -main.gd::GDScript::7560646433224437573::1768930355::0::1::::<>Node3D<><>0<>0<><>:: +::res://scripts/::1769079144 +gamestate.gd::GDScript::1333044411309547839::1769079115::0::1::::<>Node<><>0<>0<><>:: +main.gd::GDScript::7560646433224437573::1769079144::0::1::::<>Node3D<><>0<>0<><>:: objloader.gd::GDScript::2596173299165953535::1768586602::0::1::::OBJLoader<>RefCounted<><>0<>0<><>:: track_generator.gd::GDScript::4096602235093631041::1768587411::0::1::::TrackGenerator<>Node3D<><>0<>0<><>:: -train.gd::GDScript::6275395567547538251::1768659862::0::1::::Train<>Node3D<><>0<>0<><>:: +train.gd::GDScript::6275395567547538251::1769077662::0::1::::Train<>Node3D<><>0<>0<><>:: train_camera.gd::GDScript::5245387851329565609::1768586722::0::1::::TrainCamera<>Camera3D<><>0<>0<><>:: diff --git a/.godot/editor/filesystem_update4 b/.godot/editor/filesystem_update4 index d987c53..19aa350 100644 --- a/.godot/editor/filesystem_update4 +++ b/.godot/editor/filesystem_update4 @@ -1,3 +1,6 @@ -res://scripts/main.gd res://scenes/main.tscn res://scripts/gamestate.gd +res://scripts/main.gd +res://scenes/gamestate.tscn +res://scripts/train.gd +res://scenes/musicmanager.tscn diff --git a/.godot/editor/gamemanager.gd-folding-ea87194edadc78abf01a231d607e6fcf.cfg b/.godot/editor/gamemanager.gd-folding-ea87194edadc78abf01a231d607e6fcf.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/gamemanager.gd-folding-ea87194edadc78abf01a231d607e6fcf.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/main.tscn-editstate-3ad5c15c4f3250da0cc7c1af1770d85f.cfg b/.godot/editor/main.tscn-editstate-3ad5c15c4f3250da0cc7c1af1770d85f.cfg index a29b7d9..03d2721 100644 --- a/.godot/editor/main.tscn-editstate-3ad5c15c4f3250da0cc7c1af1770d85f.cfg +++ b/.godot/editor/main.tscn-editstate-3ad5c15c4f3250da0cc7c1af1770d85f.cfg @@ -8,7 +8,7 @@ Anim={ "grid_snap_active": false, "grid_step": Vector2(8, 8), "grid_visibility": 1, -"ofs": Vector2(-1149.5973, 303.8107), +"ofs": Vector2(-929.1912, -15.849335), "primary_grid_step": Vector2i(8, 8), "show_group_gizmos": true, "show_guides": true, @@ -34,7 +34,7 @@ Anim={ "snap_rotation_step": 0.2617994, "snap_scale": false, "snap_scale_step": 0.1, -"zoom": 1.6105102 +"zoom": 1.3310001 } 3D={ "fov": 70.01, @@ -187,4 +187,4 @@ Anim={ "zfar": 4000.01, "znear": 0.05 } -selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@20438/@Panel@14/@VBoxContainer@15/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@26/DockVSplitCenter/@VSplitContainer@62/@VBoxContainer@63/@EditorMainScreen@103/MainScreen/@CanvasItemEditor@10871/@VSplitContainer@10516/@HSplitContainer@10518/@HSplitContainer@10520/@Control@10521/@SubViewportContainer@10522/@SubViewport@10523/Main/GameState")]) +selected_nodes=Array[NodePath]([]) diff --git a/.godot/editor/main.tscn-folding-3ad5c15c4f3250da0cc7c1af1770d85f.cfg b/.godot/editor/main.tscn-folding-3ad5c15c4f3250da0cc7c1af1770d85f.cfg index a363a85..6bd647a 100644 --- a/.godot/editor/main.tscn-folding-3ad5c15c4f3250da0cc7c1af1770d85f.cfg +++ b/.godot/editor/main.tscn-folding-3ad5c15c4f3250da0cc7c1af1770d85f.cfg @@ -1,5 +1,5 @@ [folding] -node_unfolds=[NodePath("."), PackedStringArray("Visibility", "Transform"), NodePath("TrackGenerator"), PackedStringArray("Visibility"), NodePath("Train"), PackedStringArray("Transform", "Train"), NodePath("TrainCamera"), PackedStringArray("Transform"), NodePath("HUD/tripdistance_label"), PackedStringArray("Layout", "Layout/Transform", "label_settings"), NodePath("HUD/speed_label"), PackedStringArray("label_settings", "Layout", "Layout/Transform"), NodePath("HUD/camera_label"), PackedStringArray("Layout", "Layout/Transform", "label_settings"), NodePath("HUD/controls_label"), PackedStringArray("Layout", "Layout/Transform"), NodePath("HUD/totaldistance_label"), PackedStringArray("Layout", "Layout/Transform"), NodePath("HUD/newtrain_button"), PackedStringArray("Layout", "Layout/Transform"), NodePath("HUD/audio_button"), PackedStringArray("Layout", "Layout/Transform"), NodePath("DirectionalLight3D"), PackedStringArray("Directional Shadow", "Light", "Shadow"), NodePath("WorldEnvironment"), PackedStringArray("environment")] +node_unfolds=[NodePath("."), PackedStringArray("Visibility", "Transform"), NodePath("TrackGenerator"), PackedStringArray("Visibility"), NodePath("Train"), PackedStringArray("Transform", "Train"), NodePath("TrainCamera"), PackedStringArray("Transform"), NodePath("HUD/tripdistance_label"), PackedStringArray("Layout", "Layout/Transform", "label_settings"), NodePath("HUD/speed_label"), PackedStringArray("label_settings", "Layout", "Layout/Transform"), NodePath("HUD/camera_label"), PackedStringArray("Layout", "Layout/Transform", "label_settings"), NodePath("HUD/controls_label"), PackedStringArray("Layout", "Layout/Transform"), NodePath("HUD/totaldistance_label"), PackedStringArray("Layout", "Layout/Transform"), NodePath("HUD/audio_button"), PackedStringArray("Layout", "Layout/Transform"), NodePath("DirectionalLight3D"), PackedStringArray("Directional Shadow", "Light", "Shadow"), NodePath("WorldEnvironment"), PackedStringArray("environment")] resource_unfolds=["res://scenes/main.tscn::LabelSettings_tbgi4", PackedStringArray("Font"), "res://scenes/main.tscn::LabelSettings_tefeu", PackedStringArray("Font"), "res://scenes/musicmanager.tscn::GDScript_ht1d5", PackedStringArray(), "res://scenes/main.tscn::Environment_tipki", PackedStringArray("Background", "Sky", "Fog", "Ambient Light", "Tonemap", "sky")] -nodes_folded=[] +nodes_folded=[NodePath("HUD")] diff --git a/.godot/editor/project_metadata.cfg b/.godot/editor/project_metadata.cfg index 5bd5168..bd40874 100644 --- a/.godot/editor/project_metadata.cfg +++ b/.godot/editor/project_metadata.cfg @@ -1,7 +1,7 @@ [game_view] select_mode=0 -embed_size_mode=2 +embed_size_mode=0 [editor_metadata] @@ -10,13 +10,13 @@ use_advanced_connections=false [recent_files] -scenes=["res://scenes/gamestate.tscn", "res://scenes/musicmanager.tscn", "res://scenes/main.tscn", "res://scenes/game_state.tscn", "res://scenes/train.tscn", "res://scenes/wagon.tscn"] -scripts=["res://scenes/musicmanager.tscn::GDScript_ht1d5", "res://Scripts/game_state.gd", "res://scripts/gamestate.gd", "res://scripts/musicmanager.gd", "res://scripts/common.gd", "res://scripts/train_camera.gd", "res://scripts/train.gd", "res://scripts/main.gd", "res://scripts/track_generator.gd"] +scenes=["res://scenes/musicmanager.tscn", "res://scenes/gamestate.tscn", "res://scenes/main.tscn", "res://scenes/game_state.tscn", "res://scenes/train.tscn", "res://scenes/wagon.tscn"] +scripts=["Texture2D", "res://scenes/musicmanager.tscn::GDScript_ht1d5", "res://scenes/gamemanager.gd", "res://Scripts/game_state.gd", "res://scripts/gamestate.gd", "res://scripts/musicmanager.gd", "res://scripts/common.gd", "res://scripts/train_camera.gd", "res://scripts/train.gd", "res://scripts/main.gd"] [dialog_bounds] create_new_node=Rect2(1146, 771, 1800, 1400) -project_settings=Rect2(889, 416, 2400, 1400) +project_settings=Rect2(2865, 809, 2400, 1400) export=Rect2(1020, 700, 1800, 1000) [script_setup] diff --git a/.godot/editor/recent_dirs b/.godot/editor/recent_dirs index 845f391..8545b2c 100644 --- a/.godot/editor/recent_dirs +++ b/.godot/editor/recent_dirs @@ -1,5 +1,5 @@ -res://resources res://scenes +res://scripts +res://resources C:/Users/FlavioFabbrizi/Downloads/godot_train_project/build C:/Users/FlavioFabbrizi/Downloads/godot_train_project -res://scripts diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg index b60aff6..f1dd4bf 100644 --- a/.godot/editor/script_editor_cache.cfg +++ b/.godot/editor/script_editor_cache.cfg @@ -17,11 +17,11 @@ state={ state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), -"column": 1, +"column": 88, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 21, -"scroll_position": 0.0, +"row": 117, +"scroll_position": 83.0, "selection": false, "syntax_highlighter": "GDScript" } @@ -34,8 +34,8 @@ state={ "column": 0, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 49, -"scroll_position": 0.0, +"row": 53, +"scroll_position": 21.0, "selection": false, "syntax_highlighter": "GDScript" } @@ -49,7 +49,7 @@ state={ "folded_lines": Array[int]([]), "h_scroll_position": 0, "row": 100, -"scroll_position": 49.0, +"scroll_position": 0.0, "selection": false, "syntax_highlighter": "GDScript" } @@ -77,10 +77,10 @@ state={ state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), -"column": 26, +"column": 0, "folded_lines": Array[int]([]), "h_scroll_position": 0, -"row": 24, +"row": 12, "scroll_position": 0.0, "selection": false, "syntax_highlighter": "GDScript" diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg index 2340fdf..230a2af 100644 --- a/.godot/global_script_class_cache.cfg +++ b/.godot/global_script_class_cache.cfg @@ -1,12 +1,4 @@ list=[{ -"base": &"Node", -"class": &"GameState", -"icon": "", -"is_abstract": false, -"is_tool": false, -"language": &"GDScript", -"path": "res://scripts/gamestate.gd" -}, { "base": &"RefCounted", "class": &"OBJLoader", "icon": "", diff --git a/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.ctex b/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.ctex index c406cb4..f89b840 100644 Binary files a/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.ctex and b/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.ctex differ diff --git a/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.md5 b/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.md5 index b51de31..4f1e4d5 100644 --- a/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.md5 +++ b/.godot/imported/audio_off.png-5de4b789ed4209650f8e97f1032a5f0f.md5 @@ -1,3 +1,3 @@ -source_md5="a14a08c48ef68a4afe2f75477955423e" -dest_md5="f06c7e7cf6f2019d54db26eea986ce71" +source_md5="f2a5a1f783dc0e6a910ee32b91a94921" +dest_md5="993e18380290b3898325c1c9341d99a3" diff --git a/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.ctex b/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.ctex index 72c8559..cc4cc49 100644 Binary files a/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.ctex and b/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.ctex differ diff --git a/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.md5 b/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.md5 index 1e0406d..a3f51a8 100644 --- a/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.md5 +++ b/.godot/imported/audio_on.png-657a96ae18a58fc0378492c2262197f8.md5 @@ -1,3 +1,3 @@ -source_md5="86413e68b659658d22adbd8952e64884" -dest_md5="be9ec99dd489a2d6d94ae1f7813f0107" +source_md5="fa9dcf4ce66b77000b02fafce4513ac0" +dest_md5="92988f039aec241d22c7300bac6acc82" diff --git a/.godot/scene_groups_cache.cfg b/.godot/scene_groups_cache.cfg index 1d57ba8..ec5e5d8 100644 --- a/.godot/scene_groups_cache.cfg +++ b/.godot/scene_groups_cache.cfg @@ -1,3 +1,3 @@ [res://scenes/main.tscn] -groups=[&"state"] +groups=[&"save_data"] diff --git a/.godot/uid_cache.bin b/.godot/uid_cache.bin index e1f6c35..d570421 100644 Binary files a/.godot/uid_cache.bin and b/.godot/uid_cache.bin differ diff --git a/project.godot b/project.godot index 3718be7..db841e2 100644 --- a/project.godot +++ b/project.godot @@ -26,7 +26,7 @@ window/stretch/mode="canvas_items" [global_group] -state="" +save_data="" [input] @@ -50,6 +50,11 @@ speed_down={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) ] } +change_train={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [rendering] diff --git a/resources/audio_off.png b/resources/audio_off.png index d91ca3a..7049675 100644 Binary files a/resources/audio_off.png and b/resources/audio_off.png differ diff --git a/resources/audio_on.png b/resources/audio_on.png index edcd35e..bc04a96 100644 Binary files a/resources/audio_on.png and b/resources/audio_on.png differ diff --git a/scenes/main.tscn b/scenes/main.tscn index e3a3936..d9ff323 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -85,9 +85,9 @@ label_settings = SubResource("LabelSettings_tefeu") [node name="camera_label" type="Label" parent="HUD"] layout_mode = 0 offset_left = 20.0 -offset_top = 93.0 +offset_top = 149.0 offset_right = 1280.0 -offset_bottom = 116.0 +offset_bottom = 172.0 size_flags_vertical = 0 text = "Camera: " label_settings = SubResource("LabelSettings_tefeu") @@ -95,14 +95,15 @@ label_settings = SubResource("LabelSettings_tefeu") [node name="controls_label" type="Label" parent="HUD"] layout_mode = 0 offset_left = 20.0 -offset_top = 145.0 +offset_top = 170.0 offset_right = 1280.0 -offset_bottom = 272.0 +offset_bottom = 297.0 size_flags_vertical = 0 text = "Comandi: \"W / S - Accelera / Rallenta\", \"A / D - Ruota camera\", \"SPACE - Cambia camera\", +\"TAB - Cambia treno\", \"ESC - Esci\"" label_settings = SubResource("LabelSettings_tefeu") @@ -116,29 +117,35 @@ size_flags_vertical = 0 text = "Distanza totale: 0" label_settings = SubResource("LabelSettings_tbgi4") -[node name="newtrain_button" type="Button" parent="HUD"] -layout_mode = 1 -anchors_preset = 7 -anchor_left = 0.5 -anchor_top = 1.0 -anchor_right = 0.5 -anchor_bottom = 1.0 -offset_left = 594.0 -offset_top = 640.0 -offset_right = 700.0 -offset_bottom = 671.0 -grow_horizontal = 2 -grow_vertical = 0 -text = "Nuovo treno" - [node name="audio_button" type="Button" parent="HUD"] layout_mode = 0 -offset_left = 4.0 -offset_top = 701.0 -offset_right = 179.0 -offset_bottom = 877.0 -scale = Vector2(0.1, 0.1) +offset_left = 6.0 +offset_top = 678.0 +offset_right = 181.0 +offset_bottom = 854.0 +scale = Vector2(0.2, 0.2) icon = ExtResource("6_tipki") +flat = true + +[node name="triptime_label" type="Label" parent="HUD"] +layout_mode = 0 +offset_left = 19.0 +offset_top = 94.0 +offset_right = 1279.0 +offset_bottom = 117.0 +size_flags_vertical = 0 +text = "Tempo viaggio: 0" +label_settings = SubResource("LabelSettings_tbgi4") + +[node name="totaltime_label" type="Label" parent="HUD"] +layout_mode = 0 +offset_left = 19.0 +offset_top = 117.0 +offset_right = 1279.0 +offset_bottom = 140.0 +size_flags_vertical = 0 +text = "Tempo totale: 0" +label_settings = SubResource("LabelSettings_tbgi4") [node name="MusicManager" parent="." instance=ExtResource("6_tefeu")] icon_active = ExtResource("6_tipki") @@ -152,11 +159,14 @@ shadow_bias = 0.04 [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_tipki") -[node name="GameState" parent="." groups=["state"] instance=ExtResource("7_o6xl0")] +[node name="GameState" parent="." groups=["save_data"] instance=ExtResource("7_o6xl0")] [node name="AutoSaveTimer" type="Timer" parent="."] wait_time = 10.0 -[connection signal="pressed" from="HUD/newtrain_button" to="Train" method="_on_button_pressed"] +[node name="TripTime" type="Timer" parent="."] +autostart = true + [connection signal="pressed" from="HUD/audio_button" to="MusicManager" method="_on_audio_button_pressed"] [connection signal="timeout" from="AutoSaveTimer" to="." method="_on_timer_timeout"] +[connection signal="timeout" from="TripTime" to="." method="_on_trip_time_timeout"] diff --git a/scenes/musicmanager.tscn b/scenes/musicmanager.tscn index 73d0b50..ff7fd5f 100644 --- a/scenes/musicmanager.tscn +++ b/scenes/musicmanager.tscn @@ -11,6 +11,7 @@ script/source = "extends Node @export var icon_inactive: Texture2D var isPlaying = true + func play_track(): player.play() isPlaying = true diff --git a/scripts/gamestate.gd b/scripts/gamestate.gd index 48f523b..838f5a3 100644 --- a/scripts/gamestate.gd +++ b/scripts/gamestate.gd @@ -1,30 +1,24 @@ extends Node -class_name GameState var total_distance : float = 0.0 -var initial_total_distance: float = 0.0 +var total_time : int = 0 +var initial_distance: float = 0.0 +var initial_time: int = 0 func _ready() -> void: - add_to_group("state") + add_to_group("save_data") -func getTotalDistance() -> float: - return total_distance + initial_total_distance - - -func AddToTotalDistance(value :float): - total_distance =+ value - - -func SetInitialValue(value :float): - initial_total_distance = value - total_distance = value +func SetInitialValue(distance :float, time: int): + initial_distance = distance + initial_time = time func save() -> Dictionary: return { "filename": get_scene_file_path(), "parent": get_parent().get_path(), - "total_distance": getTotalDistance() + "total_distance": initial_distance + total_distance, + "total_time": initial_time + total_time } diff --git a/scripts/main.gd b/scripts/main.gd index d140def..2ed7da4 100644 --- a/scripts/main.gd +++ b/scripts/main.gd @@ -8,18 +8,24 @@ extends Node3D @onready var camera_label : Label = $HUD/camera_label @onready var distance_label : Label = $HUD/tripdistance_label @onready var total_distance_label : Label = $HUD/totaldistance_label +@onready var time_label : Label = $HUD/triptime_label +@onready var totaltime_label : Label = $HUD/totaltime_label @onready var auto_save_timer = $AutoSaveTimer +@onready var trip_timer = $TripTime var savegame_path: String = "user://savegame.save" +var total_time_in_secs : int = 0 func _ready() -> void: - # caricamento stato gioco - ##load_game() + load_game() + # avvia autosaver auto_save_timer.start() - + # time + trip_timer.start() + train.track_generator = track_generator camera.train = train @@ -55,10 +61,24 @@ func _update_ui() -> void: var km = train.distance_traveled / 1000.0 distance_label.text = "Distanza viaggio: %.2f km" % km - if total_distance_label and train and Gamestate: - Gamestate.AddToTotalDistance(train.distance_traveled) - var km = (Gamestate.getTotalDistance() / 1000) + if total_distance_label and train: + Gamestate.total_distance = train.distance_traveled + var km = (Gamestate.total_distance + Gamestate.initial_distance) / 1000 total_distance_label.text = "Distanza totale: %.2f km" % km + + if time_label and train: + var h = int(total_time_in_secs / 3600.0) + var m = int(total_time_in_secs / 60.0) + var s = total_time_in_secs - m * 60 + time_label.text = "Tempo viaggio: %02d:%02d:%02d" % [h, m, s] + + if totaltime_label and train: + Gamestate.total_time = total_time_in_secs + var tot = Gamestate.total_time + Gamestate.initial_time + var h = int(tot / 3600.0) + var m = int(tot / 60.0) + var s = tot - m * 60 + totaltime_label.text = "Tempo totale: %02d:%02d:%02d" % [h, m, s] if camera_label and camera: camera_label.text = "Camera: %s" % camera.get_mode_name() @@ -74,7 +94,7 @@ func _update_ground() -> void: func save_game(): var save_file = FileAccess.open(savegame_path, FileAccess.WRITE) - var save_nodes = get_tree().get_nodes_in_group("state") + var save_nodes = get_tree().get_nodes_in_group("save_data") for node in save_nodes: if !node.has_method("save"): @@ -86,11 +106,7 @@ func save_game(): func load_game(): if not FileAccess.file_exists(savegame_path): return # nessun salvataggio trovato - - var existing_nodes = get_tree().get_nodes_in_group("state") - for node in existing_nodes: - node.queue_free() - + var save_file = FileAccess.open(savegame_path, FileAccess.READ) while save_file.get_position() < save_file.get_length(): var json_string = save_file.get_line() @@ -99,23 +115,14 @@ func load_game(): if node_data == null: continue - # Ricrea il nodo dalla scena salvata - var new_node = load(node_data["filename"]).instantiate() - - # Aggiungi al parent originale - get_node(node_data["parent"]).add_child(new_node) - - # Ripristina le proprietà - new_node.SetInitialValue(node_data["total_distance"]) - ##new_node.total_distance = new_node.initial_total_distance - - # Ripristina proprietà custom - for key in node_data.keys(): - if key in ["filename", "parent", "total_distance"]: - continue - if key in new_node: - new_node.set(key, node_data[key]) + if node_data["filename"] == "res://scenes/gamestate.tscn" and node_data["parent"] == "/root": + Gamestate.SetInitialValue(node_data["total_distance"], node_data["total_time"]) func _on_timer_timeout() -> void: save_game() + + +func _on_trip_time_timeout() -> void: + total_time_in_secs += 1 + diff --git a/scripts/train.gd b/scripts/train.gd index fedde91..ee19aa7 100644 --- a/scripts/train.gd +++ b/scripts/train.gd @@ -48,11 +48,6 @@ func _ready() -> void: current_speed = base_speed -func _on_button_pressed() -> void: - _create_train() - current_speed = base_speed - - func _remove_train(): for node in get_tree().get_nodes_in_group(group_name): node.queue_free() @@ -146,7 +141,9 @@ func _handle_input(delta: float) -> void: elif Input.is_action_pressed("speed_down"): current_speed = max(current_speed - acceleration * delta, min_speed) speed_changed.emit(current_speed) - + elif Input.is_action_pressed("change_train"): + _create_train() + current_speed = base_speed func _update_movement(delta: float) -> void: distance_traveled += current_speed * delta