CustomerPatienceUiComponent 수정: 상태 초기화 추가, 슬라이더를 통한 RemainingPatienceTime 시각화 로직 구현, 관련 Prefab 및 블랙보드 Key 업데이트.
This commit is contained in:
parent
dc9bd260d1
commit
5e8f08a7b9
BIN
Assets/_DDD/_Addressables/AI/Customer/Subtree/OrderSubtree.asset
(Stored with Git LFS)
BIN
Assets/_DDD/_Addressables/AI/Customer/Subtree/OrderSubtree.asset
(Stored with Git LFS)
Binary file not shown.
@ -1,5 +1,280 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &633131044254461841
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3251801155585931500}
|
||||
m_Layer: 10
|
||||
m_Name: Fill Area
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3251801155585931500
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 633131044254461841}
|
||||
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: 609795798002784246}
|
||||
m_Father: {fileID: 4124712097831813607}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.25}
|
||||
m_AnchorMax: {x: 1, y: 0.75}
|
||||
m_AnchoredPosition: {x: -5, y: 0}
|
||||
m_SizeDelta: {x: -20, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &6108830054777696831
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 609795798002784246}
|
||||
- component: {fileID: 5096550498312619918}
|
||||
- component: {fileID: 6088464776038824938}
|
||||
m_Layer: 10
|
||||
m_Name: Fill
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &609795798002784246
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6108830054777696831}
|
||||
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: 3251801155585931500}
|
||||
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: 10, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5096550498312619918
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6108830054777696831}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6088464776038824938
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6108830054777696831}
|
||||
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: 0, b: 0, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 0
|
||||
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!1 &6934217169991235231
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6896730674754028691}
|
||||
- component: {fileID: 2778170821913614564}
|
||||
- component: {fileID: 5385555677689984514}
|
||||
m_Layer: 10
|
||||
m_Name: Background
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6896730674754028691
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6934217169991235231}
|
||||
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: 4124712097831813607}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.25}
|
||||
m_AnchorMax: {x: 1, y: 0.75}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2778170821913614564
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6934217169991235231}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5385555677689984514
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6934217169991235231}
|
||||
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: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 10907, 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!1 &7478348093145584255
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4124712097831813607}
|
||||
- component: {fileID: 290174062369355600}
|
||||
m_Layer: 10
|
||||
m_Name: Slider
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4124712097831813607
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7478348093145584255}
|
||||
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: 6896730674754028691}
|
||||
- {fileID: 3251801155585931500}
|
||||
m_Father: {fileID: 6787772463908443990}
|
||||
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: -122.7}
|
||||
m_SizeDelta: {x: 80, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &290174062369355600
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7478348093145584255}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, 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: 6088464776038824938}
|
||||
m_FillRect: {fileID: 609795798002784246}
|
||||
m_HandleRect: {fileID: 0}
|
||||
m_Direction: 0
|
||||
m_MinValue: 0
|
||||
m_MaxValue: 1
|
||||
m_WholeNumbers: 0
|
||||
m_Value: 1
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1001 &6675463944788402332
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -8,6 +283,10 @@ PrefabInstance:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1177268455256782109, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_BlockingMask.m_Bits
|
||||
value: 1023
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2686192822530022837, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_IsTrigger
|
||||
value: 1
|
||||
@ -1686,11 +1965,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 11400000, guid: 90ef4d2128c770b4cb83806c33867a79, type: 2}
|
||||
- target: {fileID: 4246001044237372826, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 6
|
||||
value: 10
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4900607124439125211, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 6
|
||||
value: 10
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5108021082109611361, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: _availableInteractions
|
||||
@ -1698,7 +1977,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5523461449651244940, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 6
|
||||
value: 10
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5654854357519457123, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: gravity.x
|
||||
@ -1726,7 +2005,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6312111630636169229, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 6
|
||||
value: 10
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6336425934484470474, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_SortingOrder
|
||||
@ -1754,7 +2033,11 @@ PrefabInstance:
|
||||
objectReference: {fileID: 2100000, guid: d018debe5b8bedf4c8f19cba9e4facec, type: 2}
|
||||
- target: {fileID: 6558328110360087691, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 6
|
||||
value: 10
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6558328110360087691, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6826437533270866908, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
propertyPath: externalBehavior
|
||||
@ -1799,7 +2082,10 @@ PrefabInstance:
|
||||
m_RemovedComponents:
|
||||
- {fileID: 133104368464330048, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 186617915120465866, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 4124712097831813607}
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 7462519206451630147, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
insertIndex: -1
|
||||
@ -1813,6 +2099,9 @@ PrefabInstance:
|
||||
- targetCorrespondingSourceObject: {fileID: 7462519206451630147, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 7166420413980924482}
|
||||
- targetCorrespondingSourceObject: {fileID: 7462519206451630147, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 7529813704779128435}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
--- !u!1 &4266090516809920735 stripped
|
||||
GameObject:
|
||||
@ -1843,6 +2132,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 784c770c13244dc0a0804056065eaf92, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_blackboardSo: {fileID: 0}
|
||||
--- !u!114 &3825874317044733320
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2055,3 +2345,51 @@ MonoBehaviour:
|
||||
hitFxFadeOutDuration: 0.25
|
||||
hitFxColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
hitFxRadius: 0.5
|
||||
--- !u!114 &7529813704779128435
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4266090516809920735}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e509fdc10cff4d3487080f126f32544f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
serializationData:
|
||||
SerializedFormat: 2
|
||||
SerializedBytes:
|
||||
ReferencedUnityObjects: []
|
||||
SerializedBytesString:
|
||||
Prefab: {fileID: 0}
|
||||
PrefabModificationsReferencedUnityObjects: []
|
||||
PrefabModifications: []
|
||||
SerializationNodes:
|
||||
- Name: _targetOrderType
|
||||
Entry: 7
|
||||
Data: 0|System.Collections.Generic.HashSet`1[[DDD.Restaurant.RestaurantOrderType,
|
||||
Assembly-CSharp]], System.Core
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 2
|
||||
- Name:
|
||||
Entry: 3
|
||||
Data: 4
|
||||
- Name:
|
||||
Entry: 3
|
||||
Data: 2
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
_currentOrderType: 0
|
||||
_prevOrderType: 0
|
||||
_patienceSlider: {fileID: 0}
|
||||
--- !u!224 &6787772463908443990 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 186617915120465866, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3}
|
||||
m_PrefabInstance: {fileID: 6675463944788402332}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
|
@ -248,7 +248,8 @@ public class SharedTimeLimiter<T> : DecoratorNode
|
||||
|
||||
[Tooltip("하단 블랙보드 키에 현재 시간을 저장할 지")]
|
||||
[SerializeField] protected bool _isBlackboardWriteEnabled = false;
|
||||
[SerializeField] protected T _blackboardKey;
|
||||
[SerializeField] protected T _remainTimeblackboardKey;
|
||||
[SerializeField] protected T _maxTimeblackboardKey;
|
||||
|
||||
public SharedVariable<float> TimeLimit
|
||||
{
|
||||
|
@ -14,13 +14,14 @@ public override void OnStart()
|
||||
{
|
||||
Debug.LogError($"[{GetType().Name}] 블랙보드를 찾을 수 없습니다. 게임오브젝트 해시코드: {gameObject.GetHashCode()}");
|
||||
}
|
||||
_blackboard.SetBlackboardValue(_maxTimeblackboardKey, TimeLimit.Value);
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (_isBlackboardWriteEnabled && _blackboard != null)
|
||||
{
|
||||
_blackboard.SetBlackboardValue(_blackboardKey, Time.time - _startTime);
|
||||
_blackboard.SetBlackboardValue(_remainTimeblackboardKey, TimeLimit.Value - (Time.time - _startTime));
|
||||
}
|
||||
|
||||
return base.OnUpdate();
|
||||
|
@ -13,7 +13,8 @@ public enum RestaurantCustomerBlackboardKey
|
||||
CurrentTargetGameObject,
|
||||
SatisfactionLevel,
|
||||
CumulativeOrderCount,
|
||||
Remaining
|
||||
MaxPatienceTime,
|
||||
RemainingPatienceTime
|
||||
}
|
||||
|
||||
public interface ICustomerBlackboard
|
||||
|
@ -1,26 +1,94 @@
|
||||
using System.Collections.Generic;
|
||||
using Sirenix.OdinInspector;
|
||||
using Sirenix.Serialization;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace DDD.Restaurant
|
||||
{
|
||||
public class CustomerPatienceUiComponent : MonoBehaviour
|
||||
public class CustomerPatienceUiComponent : SerializedMonoBehaviour
|
||||
{
|
||||
private IAISharedBlackboard<RestaurantCustomerBlackboardKey> _blackboard;
|
||||
[SerializeField] HashSet<RestaurantOrderType> _targetOrderType;
|
||||
[SerializeField] RestaurantOrderType _currentOrderType;
|
||||
[OdinSerialize] private HashSet<RestaurantOrderType> _targetOrderType = new();
|
||||
[SerializeField] private RestaurantOrderType _currentOrderType;
|
||||
[SerializeField] private RestaurantOrderType _prevOrderType;
|
||||
private bool _initialized;
|
||||
private IInteractionSubsystemObject<RestaurantOrderType> _subsystem;
|
||||
|
||||
[SerializeField] private Slider _patienceSlider;
|
||||
private void Start()
|
||||
{
|
||||
if (!TryGetComponent(out _blackboard))
|
||||
var canvas = GetComponentInChildren<Canvas>();
|
||||
canvas.worldCamera = Camera.main;
|
||||
|
||||
_patienceSlider = GetComponentInChildren<Slider>();
|
||||
if (_patienceSlider == null)
|
||||
{
|
||||
Debug.LogWarning($"[{GetType().Name}] 블랙보드가 존재하지 않음 오브젝트 해시코드 {gameObject.GetHashCode()}");
|
||||
Debug.LogWarning($"[{GetType().Name}] 슬라이더가 존재하지 않음 오브젝트 해시코드: {gameObject.GetHashCode()}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TryGetComponent(out _blackboard))
|
||||
{
|
||||
Debug.LogWarning($"[{GetType().Name}] 블랙보드가 존재하지 않음 오브젝트 해시코드: {gameObject.GetHashCode()}");
|
||||
return;
|
||||
}
|
||||
|
||||
var targetObject = _blackboard.GetBlackboardValue<GameObject>(RestaurantCustomerBlackboardKey.CurrentTargetGameObject);
|
||||
if (targetObject == null)
|
||||
{
|
||||
Debug.LogWarning($"[{GetType().Name}] 타겟 오브젝트가 존재하지 않음 오브젝트 해시코드: {gameObject.GetHashCode()}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!targetObject.TryGetComponent<IInteractionSubsystemOwner>(out var subsystemOwner))
|
||||
{
|
||||
Debug.LogWarning($"[{GetType().Name}] 서브시스템 오너가 존재하지 않음 오브젝트 해시코드: {gameObject.GetHashCode()}");
|
||||
return;
|
||||
}
|
||||
subsystemOwner.TryGetSubsystemObject(out _subsystem);
|
||||
|
||||
if (_subsystem == null)
|
||||
{
|
||||
Debug.LogWarning($"[{GetType().Name}] RestaurantOrderType 서브시스템이 존재하지 않음 오브젝트 해시코드: {gameObject.GetHashCode()}");
|
||||
return;
|
||||
}
|
||||
|
||||
_currentOrderType = _subsystem.GetInteractionSubsystemType();
|
||||
|
||||
_initialized = true;
|
||||
_patienceSlider.enabled = false;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!_initialized) return;
|
||||
_currentOrderType = _subsystem.GetInteractionSubsystemType();
|
||||
if (!_targetOrderType.Contains(_currentOrderType))
|
||||
{
|
||||
_patienceSlider.enabled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (_currentOrderType != _prevOrderType)
|
||||
{
|
||||
SetPatience();
|
||||
}
|
||||
|
||||
_patienceSlider.value = _blackboard.GetBlackboardValue<float>(RestaurantCustomerBlackboardKey.RemainingPatienceTime);
|
||||
|
||||
if (_patienceSlider.value <= 0)
|
||||
{
|
||||
_patienceSlider.enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetPatience()
|
||||
{
|
||||
_prevOrderType = _currentOrderType;
|
||||
_patienceSlider.maxValue = _blackboard.GetBlackboardValue<float>(RestaurantCustomerBlackboardKey.MaxPatienceTime);
|
||||
_patienceSlider.value = _patienceSlider.maxValue;
|
||||
_patienceSlider.enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user