diff --git a/Assets/Data/Tablica3.csv b/Assets/Data/Tablica3.csv new file mode 100644 index 0000000..37f8087 --- /dev/null +++ b/Assets/Data/Tablica3.csv @@ -0,0 +1,141 @@ +Ranga stanowiska ,wybrany sposób parkowania,Klasyfikacja gabarytu ,od planwane,do planowane,od rzeczywiste,do rzeczywiste,czas miedzy sprawdzaniem miejsca +1,,Duży,13,16,12:59,16:01,60 +1,T,Duży,13,16,13:05,16:10,60 +1,P,Duży,13:30,16:30,13:31,16:35,60 +1,P,Duży,14,17,13:57,17:01,60 +1,,Duży,13,16,13:08,16:15,60 +1,P,Duży,12:30,16:30,12:25,16:38,60 +1,T,Duży,12:30,15:30,12:31,15:29,60 +1,,Duży,13,15,12:56,14:58,60 +1,,Duży,13,16,12:54,16:02,60 +1,T,Duży,13:30,15:30,13:30,15:35,60 +1,,Duży,14,16,13:56,15:58,60 +1,P,Duży,12:30,17,12:27,16:59,60 +1,P,Duży,13,16,12:55,15:58,60 +1,,Duży,12:30,16,12:01,16:02,60 +1,,Duży,13,15:30,12:56,15:43,60 +2,,Duży,13,16,12:58,16:03,15 +2,T,Duży,13:30,16:30,13:28,16:35,15 +2,,Duży,14,17,14:04,16:58,15 +2,T,Duży,12:30,16,12:31,16:40,15 +2,P,Duży,13:30,15:30,13:27,15:31,15 +2,P,Duży,13:30,16:30,13:19,16:32,15 +2,P,Duży,13,16,12:58,16:04,15 +2,T,Duży,13,15,13:08,15:05,15 +2,T,Duży,13:30,15:30,13:28,15:32,15 +2,P,Duży,12:30,16:30,12:34,16:41,15 +2,,Duży,13:30,16:30,13:24,16:29,15 +2,,Duży,12:30,15:30,12:28,15:35,15 +2,,Duży,13,16,12:55,16:01,15 +2,T,Duży,13,15,12:58,15:19,15 +2,,Duży,13,17,12:55,17:01,15 +2,P,Duży,13:30,15:30,13:27,15:32,15 +2,,Duży,13:30,16:30,12:25,16:37,15 +2,T,Duży,14,17,14:02,17:05,15 +2,P,Duży,14,16,14:06,15:40,15 +2,,Duży,12:30,15:30,12:34,15:38,15 +2,T,Duży,13:30,16:30,13:29,16:39,15 +2,,Duży,13,16,13:10,16:13,15 +2,P,Duży,13,17,12:49,16:51,15 +2,P,Duży,14,17,14:04,17:11,15 +2,T,Duży,13,16,13:02,16:03,15 +2,,Duży,13:30,15:30,13:31,15:39,15 +2,,Duży,13,17,12:55,16:59,15 +2,,Duży,12:30,16:30,12:38,16:45,15 +2,P,Duży,13,16,12:45,16:10,15 +2,T,Duży,12:30,15:30,12:09,15:40,15 +2,,Duży,13:30,16:30,13:15,16:32,15 +2,,Duży,13:30,16:30,13:38,16:43,15 +2,,Duży,14,17,14:02,17:11,15 +2,P,Duży,12:30,16:30,12:35,16:47,15 +2,P,Duży,13,17,12:54,16:40,15 +2,,Duży,13:30,15:30,13:32,15:37,15 +2,,Duży,12:30,16:30,12:35,16:31,15 +2,P,Duży,12:30,15:30,12:43,15:47,15 +2,,Duży,13:30,17:30,13:36,17:30,15 +2,T,Duży,13,16,12:55,16:11,15 +2,P,Duży,12:30,16:30,12:39,16:44,15 +2,T,Duży,14,17,14:08,17:14,15 +2,,Duży,13:30,16,13:31,15:55,15 +2,,Duży,12:30,16,12:26,15:57,15 +2,,Duży,13,17,12:50,16:59,15 +2,P,Duży,14:00,17:30,13:57,17:34,15 +2,,Duży,13,16,12:57,16:01,15 +2,,Duży,13:30,16:30,13:32,16:30,15 +2,T,Duży,13,15:30,12:54,15:31,15 +2,T,Duży,14,17,13:49,16:58,15 +2,,Duży,13:30,17:30,13:30,17:28,15 +2,P,Duży,12:30,16:30,12:25,16:32,15 +2,T,Duży,13,17,13:04,17:01,15 +2,,Duży,14,17,13:58,17:03,15 +2,,Duży,12:30,16:30,12:29,16:10,15 +2,,Duży,13:30,17:30,13:28,17:33,15 +2,P,Duży,14,17,13:57,17:04,15 +2,P,Duży,13,16,13:04,15:52,15 +2,P,Duży,13:30,17,13:34,16:59,15 +2,,Duży,13:30,16,13:25,15:49,15 +2,P,Mały,13,16,13:03,15:56,15 +2,,Średni,13:30,16:30,13:28,16:34,15 +2,,Średni,8,12,7:53,12:01,15 +2,,Mały,12:30,16:30,12:28,16:35,15 +2,,Średni,13,17,12:56,16:59,15 +2,,Mały,7:30,12,7:24,11:58,15 +2,,Mały,8,13,8:01,13:07,15 +2,T,Średni,8,13,8:10,13:12,15 +2,P,Średni,8,11,8:45,11:02,15 +3,P,Średni,8,10,7:53,10:01,15 +3,,Mały,9,11,8:53,10:45,15 +3,,Średni,8,11,7:45,11:01,15 +3,T,Duży,9,11,9:30,10:59,15 +3,T,Średni,9,11,9,11:10,15 +3,,Mały,10,11,9:50,11:04,15 +3,,Duży,9,11,9:20,10:40,15 +3,P,Średni,9,11,9,11:15,15 +3,,Średni,9,11,8:45,11:23,15 +3,P,Mały,9,11,9,10:57,15 +3,,Średni,10,11,9:50,10:45,15 +3,T,Średni,9,11,9:30,11:06,15 +3,,Średni,8,11,7:56,10:34,15 +3,T,Duży,9,11,9:04,11:03,15 +3,T,Średni,8,13,7:50,12:10,15 +3,,Średni,7,13,6:40,13:02,15 +3,,Duży,7,12,7:05,12:03,15 +3,P,Mały,10,13,9:49,12:58,15 +3,,Średni,8,12,7:45,12:04,15 +3,P,Średni,9,13,9:23,12:58,15 +3,,Mały,8,13,7:49,13:01,15 +3,,Średni,7:30,12:30,7:27,12:36,15 +3,,Mały,8,13,8:10,12:50,15 +3,P,Mały,7:30,13,7:53,12:37,15 +3,,Średni,8,13,7:53,13:01,15 +3,P,Średni,7:30,13,7:35,13:00,15 +3,T,Średni,8,12:30,7:53,12:40,15 +3,,Mały,8,13,7:57,13:01,15 +3,P,Mały,8,13,7:45,13:10,15 +3,P,Duży,8,12:30,7:49,12:25,15 +3,,Średni,10,13,10:05,13:08,15 +3,T,Średni,7,12,7,12:10,15 +3,P,Mały,8,13,8:05,12:55,15 +3,,Mały,8,13,7:45,13:10,15 +3,,Mały,8,13,7:50,12:58,15 +3,T,Średni,8,12,8:03,12:49,15 +3,,Średni,8,10,8,9:58,15 +3,P,Mały,7:30,12:30,7:25,12:32,15 +3,,Mały,8,12,8:02,12:05,15 +3,P,Średni,7:30,13,7:28,12:40,15 +3,T,Średni,7:30,12:30,7:15,12:17,15 +3,,Mały,8,12:30,7:45,12:10,15 +3,P,Średni,7,13,6:58,13:02,15 +3,,Średni,8,12,7:57,11:58,15 +3,P,Mały,8,13,8:05,13:10,15 +3,,Średni,8,12:30,8:01,12:34,15 +3,T,Mały,8,13,7:47,13:01,15 +3,,Mały,7,12,6:57,12,15 +3,T,Mały,8,13,7:45,12:59,15 +3,P,Średni,8,13,8:02,12:47,15 +3,P,Średni,8:30,13,8:21,12:48,15 +3,,Duży,9,13,9:02,13:04,15 +3,T,Średni,9,12:30,8:57,12:35,15 +3,T,Mały,8,13,8:04,13:12,15 +3,T,Mały,8,13,7:52,12:57,15 +3,,Mały,8,13,7:50,12:59,15 diff --git a/Assets/Data/Tablica3.csv.meta b/Assets/Data/Tablica3.csv.meta new file mode 100644 index 0000000..76cc651 --- /dev/null +++ b/Assets/Data/Tablica3.csv.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 42d8da2851a0cc3498a773a59311f4ec +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/Tablica4.csv b/Assets/Data/Tablica4.csv new file mode 100644 index 0000000..5690a46 --- /dev/null +++ b/Assets/Data/Tablica4.csv @@ -0,0 +1,141 @@ +Ranga stanowiska ,wybrany sposób parkowania,Klasyfikacja gabarytu ,od planwane,do planowane,od rzeczywiste,do rzeczywiste,czas miedzy sprawdzaniem miejsca +1,,Duży,8,11,8:45,11:02,60 +1,T,Duży,8,10,7:53,10:01,60 +1,P,Duży,9,11,8:53,10:45,60 +1,P,Duży,8,11,7:45,11:01,60 +1,,Duży,9,11,9:30,10:59,60 +1,P,Duży,9,11,9,11:10,60 +1,T,Duży,10,11,9:50,11:04,60 +1,,Duży,9,11,9:20,10:40,60 +1,,Duży,9,11,9,11:15,60 +1,T,Duży,9,11,8:45,11:23,60 +1,,Duży,9,11,9,10:57,60 +1,P,Duży,10,11,9:50,10:45,60 +1,P,Duży,9,11,9:30,11:06,60 +1,,Duży,8,11,7:56,10:34,60 +1,,Duży,9,11,9:04,11:03,60 +2,,Duży,8,13,7:50,12:10,15 +2,T,Duży,7,13,6:40,13:02,15 +2,,Duży,7,12,7:05,12:03,15 +2,T,Duży,10,13,9:49,12:58,15 +2,P,Duży,8,12,7:45,12:04,15 +2,P,Duży,9,13,9:23,12:58,15 +2,P,Duży,8,13,7:49,13:01,15 +2,T,Duży,7:30,12:30,7:27,12:36,15 +2,T,Duży,8,13,8:10,12:50,15 +2,P,Duży,7:30,13,7:53,12:37,15 +2,,Duży,8,13,7:53,13:01,15 +2,,Duży,7:30,13,7:35,13:00,15 +2,,Duży,8,12:30,7:53,12:40,15 +2,T,Duży,8,13,7:57,13:01,15 +2,,Duży,8,13,7:45,13:10,15 +2,P,Duży,8,12:30,7:49,12:25,15 +2,,Duży,10,13,10:05,13:08,15 +2,T,Duży,7,12,7,12:10,15 +2,P,Duży,8,13,8:05,12:55,15 +2,,Duży,8,13,7:45,13:10,15 +2,T,Duży,8,13,7:50,12:58,15 +2,,Duży,8,12,8:03,12:49,15 +2,P,Duży,8,10,8,9:58,15 +2,P,Duży,7:30,12:30,7:25,12:32,15 +2,T,Duży,8,12,8:02,12:05,15 +2,,Duży,7:30,13,7:28,12:40,15 +2,,Duży,7:30,12:30,7:15,12:17,15 +2,,Duży,8,12:30,7:45,12:10,15 +2,P,Duży,7,13,6:58,13:02,15 +2,T,Duży,8,12,7:57,11:58,15 +2,,Duży,8,13,8:05,13:10,15 +2,,Duży,8,12:30,8:01,12:34,15 +2,,Duży,8,13,7:47,13:01,15 +2,P,Duży,7,12,6:57,12,15 +2,P,Duży,8,13,7:45,12:59,15 +2,,Duży,8,13,8:02,12:47,15 +2,,Duży,8:30,13,8:21,12:48,15 +2,P,Duży,9,13,9:02,13:04,15 +2,,Duży,9,12:30,8:57,12:35,15 +2,T,Duży,8,13,8:04,13:12,15 +2,P,Duży,8,13,7:52,12:57,15 +2,T,Duży,7,12,7:08,12:14,15 +2,,Duży,7:30,13,7:31,12:55,15 +2,,Duży,8,13,7:56,12:57,15 +2,,Duży,8,13,7:50,12:59,15 +2,P,Duży,8:30,12:30,8:27,12:34,15 +2,,Duży,7,12,6:57,12:01,15 +2,,Duży,8,13,8:02,13:00,15 +2,T,Duży,7,12:30,6:54,12:31,15 +2,T,Duży,8,13,7:49,12:58,15 +2,,Duży,8,12:30,8,12:28,15 +2,P,Duży,8:30,12:30,8:25,12:32,15 +2,T,Duży,8,13,8:04,13:02,15 +2,,Duży,7,13,6:58,13:03,15 +2,,Duży,7:30,12:30,7:29,12:40,15 +2,,Duży,7:30,12:30,7:28,12:33,15 +2,P,Duży,7,13,6:57,12:59,15 +2,P,Duży,7,13,7:04,12:52,15 +2,P,Duży,8,13,8:04,12:59,15 +2,,Duży,7:30,13,7:25,12:49,15 +2,P,Duży,8,13,8:02,12:56,15 +2,,Duży,7:30,12:30,7:28,12:34,15 +2,,Duży,8,12,7:53,12:01,15 +2,,Duży,7,12,6:58,12:05,15 +2,,Duży,8,13,7:56,12:59,15 +2,,Duży,7:30,12,7:24,11:58,15 +2,,Duży,8,13,8:01,13:07,15 +2,T,Duży,8,13,8:10,13:12,15 +2,P,Duży,7:30,13,7:22,12:40,15 +3,P,Średni,11,19,10:59,19:01,15 +3,,Mały,12,16,12:05,16:10,15 +3,,Średni,12:30,17:30,12:31,17:35,15 +3,T,Duży,14,18,13:57,18:01,15 +3,T,Średni,12,20,12:08,20:15,15 +3,,Mały,12:30,20:30,12:25,20:28,15 +3,,Duży,12:30,20:30,12:31,20:29,15 +3,P,Średni,13,21,12:56,20:58,15 +3,,Średni,13,21,12:54,21:02,15 +3,P,Mały,13:30,21:30,13:30,21:35,15 +3,,Średni,8,16,7:56,15:58,15 +3,T,Średni,12,20,11:57,19:59,15 +3,,Średni,13,21,12:55,20:58,15 +3,T,Duży,12,20,12:01,20:07,15 +3,T,Średni,13,21,12:56,21:05,15 +3,,Średni,13,21,12:58,21:03,15 +3,,Duży,13:30,21:30,13:28,21:35,15 +3,P,Mały,12,20,12:04,19:58,15 +3,,Średni,12,20,12:01,19:40,15 +3,P,Średni,7:30,15:30,7:27,15:31,15 +3,,Mały,13:30,21:30,13:19,21:32,15 +3,,Średni,12,20,11:58,20:04,15 +3,,Mały,12,20,12:08,20:05,15 +3,P,Mały,13:30,21:30,13:28,21:35,15 +3,,Średni,12:30,20:30,12:34,20:41,15 +3,P,Średni,13:30,21:30,13:24,21:29,15 +3,T,Średni,12:30,20:30,12:28,20:35,15 +3,,Mały,13,21,12:55,21:01,15 +3,P,Mały,13,21,12:58,21:10,15 +3,P,Duży,13,21,12:55,21:01,15 +3,,Średni,13:30,21:30,13:27,21:32,15 +3,T,Średni,13:30,21:30,12:25,21:37,15 +3,P,Mały,12,20,12:02,20:05,15 +3,,Mały,8,16,8:06,15:40,15 +3,,Mały,12:30,20:30,12:34,20:37,15 +3,T,Średni,13:30,21:30,13:29,21:39,15 +3,,Średni,13,21,13:10,21:17,15 +3,P,Mały,12,20,11:49,19:51,15 +3,,Mały,12,20,12:04,20:11,15 +3,P,Średni,13,21,13:02,21:03,15 +3,T,Średni,13:30,21:30,13:31,21:39,15 +3,,Mały,13,21,12:55,20:59,15 +3,P,Średni,12:30,20:30,12:38,20:45,15 +3,,Średni,12,20,11:45,20:10,15 +3,P,Mały,12:30,20:30,12:09,20:40,15 +3,,Średni,13:30,21:30,13:15,21:32,15 +3,T,Mały,13:30,21:30,13:38,21:43,15 +3,,Mały,12,20,12:02,20:11,15 +3,T,Mały,12:30,20:30,12:35,20:17,15 +3,P,Średni,12,20,11:54,19:40,15 +3,P,Średni,13:30,21:30,13:32,21:35,15 +3,,Duży,12:30,20:30,12:35,20:31,15 +3,T,Średni,12:30,20:30,12:43,20:47,15 +3,T,Mały,13:30,21:30,13:36,21:30,15 +3,T,Mały,8,16,7:55,16:11,15 +3,,Mały,12:30,20:30,12:39,20:44,15 diff --git a/Assets/Data/Tablica4.csv.meta b/Assets/Data/Tablica4.csv.meta new file mode 100644 index 0000000..3dee2a4 --- /dev/null +++ b/Assets/Data/Tablica4.csv.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 971656022cb5ad3028a88d2e9b988a45 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 48326be..4fc2374 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -216,9 +216,8 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1365705406} - - {fileID: 861769592} + - {fileID: 799530712} - {fileID: 489742540} - - {fileID: 762547646} - {fileID: 1540189690} m_Father: {fileID: 0} m_RootOrder: 8 @@ -509,6 +508,37 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &557435655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 557435656} + m_Layer: 0 + m_Name: MainPlanContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &557435656 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557435655} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.6363324, y: 1.5066413, z: -0.28673837} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &590403309 GameObject: m_ObjectHideFlags: 0 @@ -593,6 +623,37 @@ Transform: m_Father: {fileID: 1081467226} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} +--- !u!1 &632826359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 632826360} + m_Layer: 0 + m_Name: EmergencyPlanContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &632826360 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 632826359} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.6363324, y: 1.5066413, z: -0.28673837} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &762547645 GameObject: m_ObjectHideFlags: 0 @@ -605,7 +666,7 @@ GameObject: - component: {fileID: 762547648} - component: {fileID: 762547647} m_Layer: 5 - m_Name: Rejected + m_Name: Rejected count m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -618,17 +679,17 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 762547645} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 107864146} - m_RootOrder: 3 + m_Father: {fileID: 1540189690} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 261} + m_AnchoredPosition: {x: 0, y: -58} m_SizeDelta: {x: 1000, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &762547647 @@ -728,6 +789,276 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 762547645} m_CullTransparentMesh: 1 +--- !u!1 &799530711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 799530712} + - component: {fileID: 799530715} + - component: {fileID: 799530714} + - component: {fileID: 799530713} + m_Layer: 5 + m_Name: Time advance button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &799530712 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799530711} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 820792684} + - {fileID: 861769592} + m_Father: {fileID: 107864146} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -300, y: -261.92} + m_SizeDelta: {x: 239.464, y: 69.846} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &799530713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799530711} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 799530714} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1300650500} + m_TargetAssemblyTypeName: ParkingManager, Assembly-CSharp + m_MethodName: AdvanceTime + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &799530714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799530711} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &799530715 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 799530711} + m_CullTransparentMesh: 1 +--- !u!1 &820792683 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 820792684} + - component: {fileID: 820792686} + - component: {fileID: 820792685} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &820792684 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820792683} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 799530712} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &820792685 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820792683} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "15 min p\xF3\u017Aniej" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 31 + m_fontSizeBase: 31 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 0 + m_fontSizeMax: 0 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &820792686 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820792683} + m_CullTransparentMesh: 1 --- !u!1 &861769591 GameObject: m_ObjectHideFlags: 0 @@ -753,17 +1084,17 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 861769591} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 107864146} + m_Father: {fileID: 799530712} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 131.212, y: -261.92} + m_AnchoredPosition: {x: 293.212, y: 0} m_SizeDelta: {x: 254.411, y: 69.844} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &861769593 @@ -992,7 +1323,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "15 min p\xF3\u017Aniej" + m_text: Awaria m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -1001,8 +1332,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -1219,6 +1550,8 @@ MonoBehaviour: spotPrefabC: {fileID: 13560301962479332, guid: a3f9da106063d979294b8c400bc015ce, type: 3} spotPrefabD: {fileID: 13560302402692915} carPrefab: {fileID: 6930264687477137091, guid: e78fd5078b51c856ea96f94520af409b, type: 3} + mainPlanContainer: {fileID: 557435656} + emergencyPlanContainer: {fileID: 632826360} --- !u!1001 &1356388471 PrefabInstance: m_ObjectHideFlags: 0 @@ -1294,7 +1627,7 @@ GameObject: - component: {fileID: 1365705408} - component: {fileID: 1365705407} m_Layer: 5 - m_Name: Jump step + m_Name: Emergency button m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1318,7 +1651,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -139, y: -261.92} + m_AnchoredPosition: {x: 300, y: -261.92} m_SizeDelta: {x: 239.464, y: 69.846} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1365705407 @@ -1342,10 +1675,10 @@ MonoBehaviour: m_SelectOnRight: {fileID: 0} m_Transition: 1 m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_NormalColor: {r: 0.7923705, g: 0, b: 0, a: 1} + m_HighlightedColor: {r: 1, g: 0.23113209, b: 0.23113209, a: 1} + m_PressedColor: {r: 0.6132076, g: 0, b: 0, a: 1} + m_SelectedColor: {r: 0.7923705, g: 0, b: 0, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 @@ -1366,8 +1699,8 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 1300650500} - m_TargetAssemblyTypeName: ParkingManager, Assembly-CSharp - m_MethodName: AdvanceTime + m_TargetAssemblyTypeName: Parking.ParkingManager, Assembly-CSharp + m_MethodName: Emergency m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -1390,7 +1723,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0.7924528, g: 0, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -1578,7 +1911,7 @@ GameObject: - component: {fileID: 1540189692} - component: {fileID: 1540189691} m_Layer: 5 - m_Name: Rejected (1) + m_Name: Rejected count title m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1595,9 +1928,10 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 762547646} m_Father: {fileID: 107864146} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} diff --git a/Assets/Scripts/ParkingManager.cs b/Assets/Scripts/ParkingManager.cs index 6895e87..ae04928 100644 --- a/Assets/Scripts/ParkingManager.cs +++ b/Assets/Scripts/ParkingManager.cs @@ -26,16 +26,19 @@ namespace Parking [SerializeField] public GameObject spotPrefabC; [SerializeField] public GameObject spotPrefabD; [SerializeField] public GameObject carPrefab; + [SerializeField] public Transform mainPlanContainer; + [SerializeField] public Transform emergencyPlanContainer; private readonly float[] _spotHeights = {3.5f, 4f, 5f, 7.5f}; private readonly List> _spotMap = new() {new List(), new List(), new List(), new List()}; + private bool _emergencyActivated; + private int _initialConfigurationSpotCount; private int[] _rejectedDrivers = {0, 0, 0, 0}; - private void Awake() { Instance = this; @@ -46,24 +49,32 @@ namespace Parking timeText.text = _currentTime.ToString(); rejectedText.text = $"Małe: {_rejectedDrivers[0]} Średnie: {_rejectedDrivers[1]} " + $"Duże: {_rejectedDrivers[2]}"; - DataImporter.ReadFile("Assets/Data/Tablica1.csv"); + GenerateEmergencyPlan(); + + DataImporter.ReadFile("Assets/Data/Tablica4.csv"); InitialConfigurationGenerator generator = new(); ArrangeSpots(generator.FindSolution()); ReserveInitialSpots(); } + public void Emergency() + { + ResetDrivers(); + _emergencyActivated = true; + } + private void ReserveInitialSpots() { - for (var j = 3; j >= 0; j--) + for (int j = 3; j >= 0; j--) foreach (Spot spot in _spotMap[j]) { spot.Reserved = false; spot.ReservedPriority = 0; } - for (var i = 0; i < Math.Min(DataImporter.Drivers.Count, _initialConfigurationSpotCount); i++) { + for (int i = 0; i < Math.Min(DataImporter.Drivers.Count, _initialConfigurationSpotCount); i++) { bool found = false; // Find spot - for (var j = 3; j >= 0 && !found; j--) + for (int j = 3; j >= 0 && !found; j--) foreach (Spot spot in _spotMap[j]) if (spot.Size == DataImporter.Drivers[i].Size && !spot.Reserved) { spot.Reserved = true; @@ -86,24 +97,33 @@ namespace Parking _currentTime += TimeSpan.FromMinutes(stepTime); if (_currentTime > EndTime) { _currentTime = StartTime; - ReserveInitialSpots(); - ResetDrivers(); + timeText.text = _currentTime.ToString(); _rejectedDrivers = new[] {0, 0, 0, 0}; rejectedText.text = $"Małe: {_rejectedDrivers[0]} Średnie: {_rejectedDrivers[1]} " + $"Duże: {_rejectedDrivers[2]}"; - timeText.text = _currentTime.ToString(); + if (_emergencyActivated) { + emergencyPlanContainer.gameObject.SetActive(true); + mainPlanContainer.gameObject.SetActive(false); + } + else { + ReserveInitialSpots(); + ResetDrivers(); + } return; } timeText.text = _currentTime.ToString(); + if (_emergencyActivated) + return; foreach (Driver driver in DataImporter.Drivers) { // TODO: Check if car can stay before other reservation - may not work for priority-based reservations - var triesToPark = _currentTime <= driver.Times[3].TimeOfDay && _currentTime > driver.Times[2].TimeOfDay; - var leftTheParking = _currentTime > driver.Times[3].TimeOfDay && driver.Parked; + bool triesToPark = _currentTime <= driver.Times[3].TimeOfDay && + _currentTime > driver.Times[2].TimeOfDay; + bool leftTheParking = _currentTime > driver.Times[3].TimeOfDay && driver.Parked; bool reservedButTimedout = - (_currentTime - driver.Times[0].TimeOfDay).TotalMinutes > driver.UpdateInterval && + (_currentTime - driver.Times[0].TimeOfDay).TotalMinutes > driver.UpdateInterval && GetReservedSpotCount(driver.Priority, driver.Size) > 0 && !driver.Parked && !driver.Rejected && _currentTime <= driver.Times[3].TimeOfDay; if (triesToPark && !driver.Parked && !driver.Rejected) { @@ -118,7 +138,8 @@ namespace Parking else if (leftTheParking) { driver.Spot.Reserved = false; driver.Reset(); - } else if (reservedButTimedout) { + } + else if (reservedButTimedout) { Debug.Log($"Reserved but timed out driver {driver.Number}"); driver.Rejected = true; } @@ -129,11 +150,12 @@ namespace Parking private void ResetDrivers() { - foreach (Driver driver in DataImporter.Drivers){ + foreach (Driver driver in DataImporter.Drivers) { if (driver.Spot != null) { driver.Spot.Reserved = false; driver.Spot.ReservedPriority = 0; } + driver.Reset(); } } @@ -141,12 +163,10 @@ namespace Parking private int GetReservedSpotCount(int priority, Size size) { int count = 0; - foreach (List list in _spotMap) { - foreach (Spot spot in list) { - if (spot.Size == size && spot.Reserved && spot.ReservedPriority == priority) - count++; - } - } + foreach (var list in _spotMap) + foreach (Spot spot in list) + if (spot.Size == size && spot.Reserved && spot.ReservedPriority == priority) + count++; return count; } @@ -172,18 +192,18 @@ namespace Parking PlaceDriverOnSpot(driver, reservedSpot); return true; } - else - Debug.Log("Spot should be reserved but is taken"); + + Debug.Log("Spot should be reserved but is taken"); } foreach (var t in _spotMap) foreach (Spot spot in t) { - var spotAvailable = spot.Size == driver.Size && spot.Free && - (spot.ParkingDirection == driver.ParkingPreference || - spot.ParkingDirection == ParkingPreference.Any) - && !spot.Reserved; - + bool spotAvailable = spot.Size == driver.Size && spot.Free && + (spot.ParkingDirection == driver.ParkingPreference || + spot.ParkingDirection == ParkingPreference.Any) + && !spot.Reserved; + if (spotAvailable) { PlaceDriverOnSpot(driver, spot); return true; @@ -222,7 +242,7 @@ namespace Parking private void ReconfigureSpots() { - var freeSpots = GetFreeSpotCount(); + int[] freeSpots = GetFreeSpotCount(); var nextCars = GetNextCars(10); int[] plannedSpots = {0, 0, 0, 0}; foreach (Driver driver in nextCars) @@ -230,7 +250,7 @@ namespace Parking int[] neededSpots = {0, 0, 0, 0}; - for (var i = 0; i < neededSpots.Length; i++) + for (int i = 0; i < neededSpots.Length; i++) neededSpots[i] = Math.Max(plannedSpots[i] - freeSpots[i], 0); if (neededSpots.Sum() > 5) { Debug.Log($"Needed spots = {neededSpots[0]} {neededSpots[1]} {neededSpots[2]} {neededSpots[3]}"); @@ -272,17 +292,17 @@ namespace Parking float[] spotSizes = {4, 4.5f, 5, 0}; float maxP3 = 0; float maxP2 = 0; - foreach (Spot spot in spotMap[2]) - if(spot.Size != Size.D) + foreach (Spot spot in spotMap[2]) + if (spot.Size != Size.D) maxP3 = Math.Max(maxP3, _spotHeights[(int) spot.Size]); - foreach (Spot spot in spotMap[1]) - if(spot.Size != Size.D) + foreach (Spot spot in spotMap[1]) + if (spot.Size != Size.D) maxP2 = Math.Max(maxP2, _spotHeights[(int) spot.Size]); // float maxP3 = spotMap[2].Count == 0 ? 0 : _spotHeights[(int) spotMap[2].Max().Size]; // float maxP2 = spotMap[1].Count == 0 ? 0 : _spotHeights[(int) spotMap[1].Max().Size]; - for (var i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { float currentY; bool parkingFromTop = i % 2 != 0; switch (i) { @@ -307,35 +327,37 @@ namespace Parking if (i != 0) currentX = -Width / 2f - 2.25f / 2f + 2.25f; else currentX = -Width / 2f + 5.5f - 2.25f / 2f + 2.25f + 1.75f; - var flipped = false; + bool flipped = false; - for (var j = 0; j < spotMap[i].Count; j++) { + for (int j = 0; j < spotMap[i].Count; j++) { spotMap[i][j].Flipped = flipped; - var alignTop = i % 2 != 0; + bool alignTop = i % 2 != 0; switch (spotMap[i][j].Size) { case Size.A: - spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabA); + spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabA, mainPlanContainer); break; case Size.B: - spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabB); + spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabB, mainPlanContainer); break; case Size.C: - spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabC); + spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabC, mainPlanContainer); break; case Size.D: - spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabD); + spotMap[i][j].GameObject = Instantiate(Instance.spotPrefabD, mainPlanContainer); spotMap[i][j].GameObject.transform.position = new Vector3(currentX, currentY, 0); break; } + spotMap[i][j].GameObject.transform.position = - new Vector3(currentX, currentY + (alignTop ? -1 : 1) * spotSizes[(int)spotMap[i][j].Size] / 2.0f, 0); + new Vector3(currentX, + currentY + (alignTop ? -1 : 1) * spotSizes[(int) spotMap[i][j].Size] / 2.0f, 0); spotMap[i][j].GameObject.transform.rotation = Quaternion.Euler(new Vector3(0, 0, spotMap[i][j].Flipped ? 180 : 0)); - var frontalParking = !parkingFromTop ^ flipped; + bool frontalParking = !parkingFromTop ^ flipped; spotMap[i][j].ParkingDirection = frontalParking ? ParkingPreference.Front : ParkingPreference.Back; currentX += 2.25f; @@ -345,11 +367,68 @@ namespace Parking } } + private void GenerateEmergencyPlan() + { + emergencyPlanContainer.gameObject.SetActive(false); + for (int i = 0; i < 4; i++) { + float currentY; + switch (i) { + case 0: + currentY = -Height / 2.0f; + break; + case 1: + currentY = Height / 2.0f - 5.5f - 5.0f - 5.0f; + break; + case 2: + currentY = Height / 2.0f - 5.5f - 5.0f - 5.0f; + break; + case 3: + currentY = Height / 2.0f; + break; + default: + currentY = -10; + break; + } + + float currentX; + if (i != 0) currentX = -Width / 2f - 2.25f / 2f + 2.25f; + else currentX = Width / 2f - 5.0f / 2f; + + bool flipped = false; + + GameObject spawnedSpot; + + int[] emergencyMap = new[] {12, 27, 27, 20}; + + for (int j = 0; j < emergencyMap[i]; j++) { + + if (i == 0) { + Vector3 position = new Vector3(currentX, currentY + 2.25f/2.0f, 0); + spawnedSpot = Instantiate(Instance.spotPrefabC, position, + Quaternion.Euler(new Vector3(0, 0, 90)), emergencyPlanContainer); + currentX -= 5; + }else { + bool alignTop = i % 2 != 0; + Vector3 position = new Vector3(currentX, currentY, 0); + spawnedSpot = Instantiate(Instance.spotPrefabC, position, + Quaternion.Euler(new Vector3(0, 0, 0)), emergencyPlanContainer); + + spawnedSpot.transform.position = + new Vector3(currentX, + currentY + (alignTop ? -1 : 1) * 5.0f / 2.0f, + 0); + + currentX += 2.25f; + } + } + } + } + private List> GenerateSpotMap(int[,] spotsCreated) { - for (var i = 0; i < 4; i++) - for (var j = 0; j < spotsCreated.GetLength(1); j++) - for (var k = 0; k < spotsCreated[i, j]; k++) { + for (int i = 0; i < 4; i++) + for (int j = 0; j < spotsCreated.GetLength(1); j++) + for (int k = 0; k < spotsCreated[i, j]; k++) { _spotMap[i].Add(new Spot((Size) j, false)); _initialConfigurationSpotCount++; }