WIP reconfiguration

This commit is contained in:
Dawid Pietrykowski 2022-09-08 00:43:34 +02:00
parent 3270cc0b10
commit f2f74c07a3
3 changed files with 592 additions and 70 deletions

View File

@ -140,7 +140,7 @@ GameObject:
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
m_IsActive: 1 m_IsActive: 0
--- !u!224 &44030830 --- !u!224 &44030830
RectTransform: RectTransform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -157,7 +157,7 @@ RectTransform:
- {fileID: 369720528} - {fileID: 369720528}
- {fileID: 70943246} - {fileID: 70943246}
m_Father: {fileID: 107864146} m_Father: {fileID: 107864146}
m_RootOrder: 4 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -429,8 +429,7 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1365705406} - {fileID: 1347097429}
- {fileID: 799530712}
- {fileID: 489742540} - {fileID: 489742540}
- {fileID: 1540189690} - {fileID: 1540189690}
- {fileID: 44030830} - {fileID: 44030830}
@ -677,6 +676,105 @@ Transform:
m_CorrespondingSourceObject: {fileID: 13560301962479320, guid: dbfe1689c60c23f129ff74156ff8e6a8, type: 3} m_CorrespondingSourceObject: {fileID: 13560301962479320, guid: dbfe1689c60c23f129ff74156ff8e6a8, type: 3}
m_PrefabInstance: {fileID: 440632606} m_PrefabInstance: {fileID: 440632606}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &441283503
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 441283504}
- component: {fileID: 441283505}
m_Layer: 5
m_Name: Reconfiguration toggle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &441283504
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441283503}
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: 719677295}
- {fileID: 1040615156}
m_Father: {fileID: 1347097429}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 250, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &441283505
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 441283503}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 719677296}
toggleTransition: 1
graphic: {fileID: 1690960237}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1300650500}
m_TargetAssemblyTypeName: Parking.ParkingManager, Assembly-CSharp
m_MethodName: ReconfigurationToggle
m_Mode: 6
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
m_IsOn: 1
--- !u!1 &489742539 --- !u!1 &489742539
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -708,7 +806,7 @@ RectTransform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 107864146} m_Father: {fileID: 107864146}
m_RootOrder: 2 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -1176,6 +1274,83 @@ Transform:
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 9 m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &719677294
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 719677295}
- component: {fileID: 719677297}
- component: {fileID: 719677296}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &719677295
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 719677294}
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: 1690960236}
m_Father: {fileID: 441283504}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 10, y: -10}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &719677296
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 719677294}
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 &719677297
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 719677294}
m_CullTransparentMesh: 1
--- !u!1 &762547645 --- !u!1 &762547645
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1337,20 +1512,19 @@ RectTransform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 799530711} m_GameObject: {fileID: 799530711}
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_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 820792684} - {fileID: 820792684}
- {fileID: 861769592} m_Father: {fileID: 1347097429}
m_Father: {fileID: 107864146} m_RootOrder: 0
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: -300, y: -261.92} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 239.464, y: 69.846} m_SizeDelta: {x: 250, y: 60}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &799530713 --- !u!114 &799530713
MonoBehaviour: MonoBehaviour:
@ -1611,13 +1785,13 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 799530712} m_Father: {fileID: 1347097429}
m_RootOrder: 1 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 293.212, y: 0} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 254.411, y: 69.844} m_SizeDelta: {x: 250, y: 60}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &861769593 --- !u!114 &861769593
MonoBehaviour: MonoBehaviour:
@ -1856,6 +2030,86 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934996861} m_GameObject: {fileID: 934996861}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1040615155
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1040615156}
- component: {fileID: 1040615158}
- component: {fileID: 1040615157}
m_Layer: 5
m_Name: Label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1040615156
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040615155}
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: 441283504}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 9, y: -0.5}
m_SizeDelta: {x: -28, y: -3}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1040615157
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040615155}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, 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_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Rekonfiguracja aktywna
--- !u!222 &1040615158
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040615155}
m_CullTransparentMesh: 1
--- !u!1 &1079236959 --- !u!1 &1079236959
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2503,6 +2757,75 @@ MonoBehaviour:
carPrefab: {fileID: 6930264687477137091, guid: e78fd5078b51c856ea96f94520af409b, type: 3} carPrefab: {fileID: 6930264687477137091, guid: e78fd5078b51c856ea96f94520af409b, type: 3}
mainPlanContainer: {fileID: 557435656} mainPlanContainer: {fileID: 557435656}
emergencyPlanContainer: {fileID: 632826360} emergencyPlanContainer: {fileID: 632826360}
reconfigurationToggle: {fileID: 441283505}
defaultPath: Assets/Data/Tablica1.csv
--- !u!1 &1347097428
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1347097429}
- component: {fileID: 1347097430}
m_Layer: 5
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1347097429
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1347097428}
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: 799530712}
- {fileID: 861769592}
- {fileID: 1365705406}
- {fileID: 441283504}
m_Father: {fileID: 107864146}
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.92}
m_SizeDelta: {x: 1300, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1347097430
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1347097428}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 4
m_Spacing: 0
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1001 &1356388471 --- !u!1001 &1356388471
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2591,19 +2914,19 @@ RectTransform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1365705405} m_GameObject: {fileID: 1365705405}
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_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1092905955} - {fileID: 1092905955}
m_Father: {fileID: 107864146} m_Father: {fileID: 1347097429}
m_RootOrder: 0 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 300, y: -261.92} m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 239.464, y: 69.846} m_SizeDelta: {x: 250, y: 60}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1365705407 --- !u!114 &1365705407
MonoBehaviour: MonoBehaviour:
@ -2882,7 +3205,7 @@ RectTransform:
m_Children: m_Children:
- {fileID: 762547646} - {fileID: 762547646}
m_Father: {fileID: 107864146} m_Father: {fileID: 107864146}
m_RootOrder: 3 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
@ -3083,6 +3406,82 @@ Transform:
m_CorrespondingSourceObject: {fileID: 13560301962479320, guid: 547c30e1f8f23f122968c9f6363ea48d, type: 3} m_CorrespondingSourceObject: {fileID: 13560301962479320, guid: 547c30e1f8f23f122968c9f6363ea48d, type: 3}
m_PrefabInstance: {fileID: 1623836583} m_PrefabInstance: {fileID: 1623836583}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &1690960235
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1690960236}
- component: {fileID: 1690960238}
- component: {fileID: 1690960237}
m_Layer: 5
m_Name: Checkmark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1690960236
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1690960235}
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: 719677295}
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: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1690960237
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1690960235}
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: 10901, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 0
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 &1690960238
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1690960235}
m_CullTransparentMesh: 1
--- !u!1 &1728782014 --- !u!1 &1728782014
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -50,6 +50,7 @@ namespace Parking
public bool Reserved = false; public bool Reserved = false;
public int ReservedPriority = 0; public int ReservedPriority = 0;
public Size Size; public Size Size;
public TimeSpan LastReconfiguration = TimeSpan.Zero;
public Spot(Size size, bool flipped) public Spot(Size size, bool flipped)
{ {

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
namespace Parking namespace Parking
{ {
@ -31,6 +32,8 @@ namespace Parking
[SerializeField] public GameObject carPrefab; [SerializeField] public GameObject carPrefab;
[SerializeField] public Transform mainPlanContainer; [SerializeField] public Transform mainPlanContainer;
[SerializeField] public Transform emergencyPlanContainer; [SerializeField] public Transform emergencyPlanContainer;
[SerializeField] public Toggle reconfigurationToggle;
[SerializeField] public string defaultPath = "Assets/Data/Tablica2.csv";
private readonly float[] _spotHeights = {4f, 4.5f, 5f, 7.5f}; private readonly float[] _spotHeights = {4f, 4.5f, 5f, 7.5f};
@ -38,6 +41,7 @@ namespace Parking
{new List<Spot>(), new List<Spot>(), new List<Spot>(), new List<Spot>()}; {new List<Spot>(), new List<Spot>(), new List<Spot>(), new List<Spot>()};
private bool _emergencyActivated; private bool _emergencyActivated;
private bool _reconfigurationActive = true;
private int _initialConfigurationSpotCount; private int _initialConfigurationSpotCount;
private int[,] _initialSolution; private int[,] _initialSolution;
@ -52,15 +56,26 @@ namespace Parking
private void Start() private void Start()
{ {
_spotPrefabs = new List<GameObject> {spotPrefabA, spotPrefabB, spotPrefabC, spotPrefabD}; _spotPrefabs = new List<GameObject> {spotPrefabA, spotPrefabB, spotPrefabC, spotPrefabD};
startPanel.SetActive(true);
reconfigurationToggle.onValueChanged.AddListener(ReconfigurationToggle);
}
public void ReconfigurationToggle(bool value)
{
_reconfigurationActive = value;
Debug.Log($"Reconfiguration {(value ? "activated" : "deactivated")}");
} }
public void ReadDataButtonClick() public void ReadDataButtonClick()
{ {
if (!DataImporter.ReadFile(pathText.text.Replace("\u200B", ""))) { string path = pathText.text.Replace("\u200B", "");
if (path.Length == 0)
path = defaultPath;
if (!DataImporter.ReadFile(path)) {
notFoundPanel.SetActive(true); notFoundPanel.SetActive(true);
return; return;
} }
InitiateManager(); InitiateManager();
startPanel.SetActive(false); startPanel.SetActive(false);
} }
@ -134,7 +149,8 @@ namespace Parking
if (_emergencyActivated) if (_emergencyActivated)
return; return;
ReconfigureSpots(); if(_reconfigurationActive)
ReconfigureSpots();
foreach (Driver driver in DataImporter.Drivers) { foreach (Driver driver in DataImporter.Drivers) {
// TODO: Check if car can stay before other reservation - may not work for priority-based reservations // TODO: Check if car can stay before other reservation - may not work for priority-based reservations
@ -147,7 +163,7 @@ namespace Parking
&& !driver.Parked && !driver.Rejected && _currentTime <= driver.Times[3].TimeOfDay; && !driver.Parked && !driver.Rejected && _currentTime <= driver.Times[3].TimeOfDay;
if (triesToPark && !driver.Parked && !driver.Rejected) { if (triesToPark && !driver.Parked && !driver.Rejected) {
if (!PlaceCarOnParking(driver)) { if (!PlaceCarOnParking(driver)) {
if (TryReconfigureSpotForSize(driver.Size)) { if (_reconfigurationActive && TryReconfigureSpotForSize(driver.Size)) {
if (!PlaceCarOnParking(driver)) { if (!PlaceCarOnParking(driver)) {
Debug.Log($"Placing failed for car {driver.Number} size {driver.Size}"); Debug.Log($"Placing failed for car {driver.Number} size {driver.Size}");
driver.Rejected = true; driver.Rejected = true;
@ -206,7 +222,7 @@ namespace Parking
private int GetReservedSpotCount(int priority, Size size) private int GetReservedSpotCount(int priority, Size size)
{ {
int count = 0; int count = 0;
foreach (var list in _spotMap) foreach (List<Spot> list in _spotMap)
foreach (Spot spot in list) foreach (Spot spot in list)
if (spot.Size == size && spot.Reserved && spot.ReservedPriority == priority) if (spot.Size == size && spot.Reserved && spot.ReservedPriority == priority)
count++; count++;
@ -216,7 +232,7 @@ namespace Parking
private bool FindReservedSpot(Driver driver, out Spot spot) private bool FindReservedSpot(Driver driver, out Spot spot)
{ {
foreach (var list in _spotMap) foreach (List<Spot> list in _spotMap)
foreach (Spot spot1 in list) foreach (Spot spot1 in list)
if (spot1.Reserved && spot1.ReservedPriority == driver.Priority) { if (spot1.Reserved && spot1.ReservedPriority == driver.Priority) {
spot = spot1; spot = spot1;
@ -240,7 +256,7 @@ namespace Parking
} }
foreach (var t in _spotMap) foreach (List<Spot> t in _spotMap)
foreach (Spot spot in t) { foreach (Spot spot in t) {
bool spotAvailable = spot.Size == driver.Size && spot.Free && bool spotAvailable = spot.Size == driver.Size && spot.Free &&
(spot.ParkingDirection == driver.ParkingPreference || (spot.ParkingDirection == driver.ParkingPreference ||
@ -253,7 +269,7 @@ namespace Parking
} }
} }
foreach (var t in _spotMap) foreach (List<Spot> t in _spotMap)
foreach (Spot spot in t) foreach (Spot spot in t)
if (spot.Size == driver.Size && spot.Free && !spot.Reserved) { if (spot.Size == driver.Size && spot.Free && !spot.Reserved) {
PlaceDriverOnSpot(driver, spot); PlaceDriverOnSpot(driver, spot);
@ -288,7 +304,7 @@ namespace Parking
private void ReconfigureSpots() private void ReconfigureSpots()
{ {
int[] freeSpots = GetFreeSpotCount(); int[] freeSpots = GetFreeSpotCount();
var nextCars = GetNextCars(1); List<Driver> nextCars = GetNextCars(1);
int[] plannedSpots = {0, 0, 0, 0}; int[] plannedSpots = {0, 0, 0, 0};
foreach (Driver driver in nextCars) foreach (Driver driver in nextCars)
plannedSpots[(int) driver.Size]++; plannedSpots[(int) driver.Size]++;
@ -301,7 +317,7 @@ namespace Parking
Debug.Log($"Needed spots = {neededSpots[0]} {neededSpots[1]} {neededSpots[2]} {neededSpots[3]}"); Debug.Log($"Needed spots = {neededSpots[0]} {neededSpots[1]} {neededSpots[2]} {neededSpots[3]}");
Debug.Log("Attempting reconfiguration..."); Debug.Log("Attempting reconfiguration...");
var spotlessCars = new List<Driver>(); List<Driver> spotlessCars = new List<Driver>();
// Filter drivers by assigning free space // Filter drivers by assigning free space
foreach (Driver nextCar in nextCars) foreach (Driver nextCar in nextCars)
@ -311,21 +327,24 @@ namespace Parking
spotlessCars.Add(nextCar); spotlessCars.Add(nextCar);
foreach (Driver nextCar in spotlessCars) { foreach (Driver nextCar in spotlessCars)
TryReconfigureSpotForSize(nextCar.Size); TryReconfigureSpotForSize(nextCar.Size);
}
} }
} }
private bool TryReconfigureSpotForSize(Size newSize) private bool TryReconfigureSpotForSize(Size newSize)
{ {
foreach (var currentLaneSpots in _spotMap) foreach (List<Spot> currentLaneSpots in _spotMap)
foreach (Spot spot in currentLaneSpots) { foreach (Spot spot in currentLaneSpots) {
if (spot.Size > newSize && spot.Free && spot.Size != Size.D && !spot.Reserved) { if (!(spot.Free && spot.Size != Size.D)) // && !spot.Reserved))
if (GetSpotCountOfSize(Size.A) <= 2 && spot.Size == Size.A) continue;
continue; if (GetSpotCountOfSize(Size.A) <= 2 && spot.Size == Size.A)
if (GetSpotCountOfSize(Size.B) <= 2 && spot.Size == Size.B) continue;
continue; if (GetSpotCountOfSize(Size.B) <= 2 && spot.Size == Size.B)
continue;
if (spot.LastReconfiguration == _currentTime)
continue;
if (spot.Size > newSize) {
int size = (int) newSize; int size = (int) newSize;
@ -349,31 +368,77 @@ namespace Parking
Vector3 newPosition = position + offset; Vector3 newPosition = position + offset;
if (!spot.Perpendicular) { if (!spot.Perpendicular) {
var allBorders = new List<float>(); float newX = GetNextBorderHorizontal(position, spot, true) -
foreach (Spot spot1 in currentLaneSpots) { _spotHeights[(int) spot.Size] / 2.0f;
if (spot1 == spot) newPosition = new Vector3(newX,
continue; newPosition.y, newPosition.z);
Vector3 spotPosition = spot1.GameObject.transform.position; }
float sizeOffset = _spotHeights[(int) spot1.Size] / 2.0f; else {
allBorders.Add(spotPosition.x + sizeOffset); float newX = GetNextBorderHorizontal(position, spot, true) - 2.25f / 2.0f;
allBorders.Add(spotPosition.x - sizeOffset); if (spot.Lane == 0) {
float xRelativeToRight = newX - Width / 2.0f - 2.25f / 2.0f;
xRelativeToRight -= (xRelativeToRight + 2.25f / 2.0f) % 2.25f;
newX = xRelativeToRight + Width / 2.0f;
}
else {
float xRelativeToLeft = newX + Width / 2.0f;
xRelativeToLeft -= (xRelativeToLeft + 2.25f / 2.0f) % 2.25f;
newX = xRelativeToLeft - Width / 2.0f;
} }
allBorders.Sort(); newPosition = new Vector3(newX,
foreach (float adjacentBorder in allBorders) newPosition.y, newPosition.z);
if (adjacentBorder > position.x) {
newPosition = new Vector3(adjacentBorder -
_spotHeights[size] / 2.0f,
newPosition.y, newPosition.z);
break;
}
} }
// TODO: check how much space to right to push
spot.GameObject = Instantiate(_spotPrefabs[size], spot.GameObject = Instantiate(_spotPrefabs[size],
newPosition, rotation, mainPlanContainer); newPosition, rotation, mainPlanContainer);
spot.LastReconfiguration = _currentTime;
return true;
}
if (spot.Size < newSize) {
if (!spot.Perpendicular)
continue;
int size = (int) newSize;
float diff = (_spotHeights[(int) spot.Size] - _spotHeights[size]) / 2.0f;
Vector3 position = spot.GameObject.transform.position;
float spotBorder;
float thisSizeOffset;
if (spot.Perpendicular)
thisSizeOffset = _spotHeights[(int) spot.Size] / 2.0f;
else
thisSizeOffset = 2.25f;
if (!spot.AlignToTop)
spotBorder = position.y + thisSizeOffset;
else
spotBorder = position.y - thisSizeOffset;
float nextBorder = GetNextBorderVectical(position, spot.Lane, spot.Perpendicular, newSize, !spot.AlignToTop);
if (Math.Abs(spotBorder - nextBorder) < 5.5f)
continue;
spot.Size = (Size) size;
Quaternion rotation = Quaternion.identity;
if (spot.GameObject != null) {
position = spot.GameObject.transform.position;
rotation = spot.GameObject.transform.rotation;
Destroy(spot.GameObject);
}
spot.Reserved = false;
if (!spot.AlignToTop)
diff *= -1;
Vector3 offset = spot.Perpendicular ? new Vector3(0, diff, 0) : new Vector3(-diff, 0, 0);
Vector3 newPosition = position + offset;
spot.GameObject = Instantiate(_spotPrefabs[size],
newPosition, rotation, mainPlanContainer);
spot.LastReconfiguration = _currentTime;
return true; return true;
} }
} }
@ -381,11 +446,68 @@ namespace Parking
return false; return false;
} }
private float GetNextBorderVectical(Vector3 position, int lane, bool perpendicular, Size size, bool up)
{
float minX = position.x - (perpendicular ? 2.25f : _spotHeights[(int) size]);
float maxX = position.x + (perpendicular ? 2.25f : _spotHeights[(int) size]);
List<float> allBorders = new();
List<Spot> targetLane = up ? _spotMap[lane + 1] : _spotMap[lane - 1];
foreach (Spot spot1 in targetLane) {
Vector3 targetSpotPosition = spot1.GameObject.transform.position;
if (targetSpotPosition.x < minX || targetSpotPosition.x > maxX)
continue;
float sizeOffset;
if (spot1.Perpendicular)
sizeOffset = _spotHeights[(int) spot1.Size] / 2.0f;
else
sizeOffset = 2.25f;
if (up)
allBorders.Add(targetSpotPosition.y - sizeOffset);
else
allBorders.Add(targetSpotPosition.y + sizeOffset);
}
if (allBorders.Count == 0)
return up ? Height / 2.0f : -Height / 2.0f;
float nextBorder = up ? allBorders.Min() : allBorders.Max();
return nextBorder;
}
private float GetNextBorderHorizontal(Vector3 position, Spot spot, bool right)
{
List<float> allBorders = new List<float>();
List<Spot> targetLane = _spotMap[spot.Lane];
foreach (Spot spot1 in targetLane) {
if (spot1 == spot)
continue;
Vector3 spotPosition = spot1.GameObject.transform.position;
float sizeOffset;
if (spot1.Perpendicular)
sizeOffset = 2.25f / 2.0f;
else
sizeOffset = _spotHeights[(int) spot1.Size] / 2.0f;
allBorders.Add(spotPosition.x + sizeOffset);
allBorders.Add(spotPosition.x - sizeOffset);
}
allBorders.Sort();
foreach (float adjacentBorder in allBorders)
if (adjacentBorder > position.x)
return adjacentBorder;
if (spot.Perpendicular)
return position.x + (right ? 1 : -1) * _spotHeights[(int) spot.Size] / 2.0f;
return position.x + (right ? 1 : -1) * 2.25f / 2.0f;
}
private int GetSpotCountOfSize(Size size) private int GetSpotCountOfSize(Size size)
{ {
int count = 0; int count = 0;
foreach (var t in _spotMap) foreach (List<Spot> t in _spotMap)
foreach (Spot spot in t) foreach (Spot spot in t)
if (spot.Size == size) if (spot.Size == size)
count++; count++;
@ -395,7 +517,7 @@ namespace Parking
private int[] GetFreeSpotCount() private int[] GetFreeSpotCount()
{ {
int[] freeSpots = {0, 0, 0, 0}; int[] freeSpots = {0, 0, 0, 0};
foreach (var t in _spotMap) foreach (List<Spot> t in _spotMap)
foreach (Spot spot in t) foreach (Spot spot in t)
if (spot.Free) if (spot.Free)
freeSpots[(int) spot.Size]++; freeSpots[(int) spot.Size]++;
@ -404,7 +526,7 @@ namespace Parking
private List<Driver> GetNextCars(int steps) private List<Driver> GetNextCars(int steps)
{ {
var nextCars = new List<Driver>(); List<Driver> nextCars = new List<Driver>();
TimeSpan updatedTime = _currentTime + TimeSpan.FromMinutes(stepTime * steps); TimeSpan updatedTime = _currentTime + TimeSpan.FromMinutes(stepTime * steps);
foreach (Driver driver in DataImporter.Drivers) foreach (Driver driver in DataImporter.Drivers)
if (updatedTime <= driver.Times[1].TimeOfDay && if (updatedTime <= driver.Times[1].TimeOfDay &&
@ -417,7 +539,7 @@ namespace Parking
private void ArrangeSpots(int[,] spotsCreated) private void ArrangeSpots(int[,] spotsCreated)
{ {
var spotMap = GenerateSpotMap(spotsCreated); List<List<Spot>> spotMap = GenerateSpotMap(spotsCreated);
float[] spotSizes = {4, 4.5f, 5, 0}; float[] spotSizes = {4, 4.5f, 5, 0};
float maxP3 = 0; float maxP3 = 0;
@ -431,7 +553,7 @@ namespace Parking
// float maxP3 = spotMap[2].Count == 0 ? 0 : _spotHeights[(int) spotMap[2].Max().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]; // float maxP2 = spotMap[1].Count == 0 ? 0 : _spotHeights[(int) spotMap[1].Max().Size];
var prefabs = new List<GameObject> {spotPrefabA, spotPrefabB, spotPrefabC, spotPrefabD}; List<GameObject> prefabs = new List<GameObject> {spotPrefabA, spotPrefabB, spotPrefabC, spotPrefabD};
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
float currentY; float currentY;
@ -566,7 +688,7 @@ namespace Parking
private List<List<Spot>> GenerateSpotMap(int[,] spotsCreated) private List<List<Spot>> GenerateSpotMap(int[,] spotsCreated)
{ {
foreach (var list in _spotMap) { foreach (List<Spot> list in _spotMap) {
foreach (Spot spot in list) foreach (Spot spot in list)
if (spot.GameObject != null) if (spot.GameObject != null)
Destroy(spot.GameObject); Destroy(spot.GameObject);