WIP reconfiguration
This commit is contained in:
parent
3270cc0b10
commit
f2f74c07a3
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
@ -174,7 +190,7 @@ namespace Parking
|
|||||||
driver.Rejected = true;
|
driver.Rejected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateCounts();
|
UpdateCounts();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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,43 +368,146 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user