# Conflicts:
#	Assets/02.Scripts/Item/Cocktail/CocktailData.cs
This commit is contained in:
SweetJJuya 2024-10-24 14:05:51 +09:00
commit c3bdefa642
125 changed files with 1341 additions and 1111 deletions

View File

@ -2803,71 +2803,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2798544366308408093, guid: 9ce588004bafc1e4e9617fdaa2d77c8d, type: 3} m_CorrespondingSourceObject: {fileID: 2798544366308408093, guid: 9ce588004bafc1e4e9617fdaa2d77c8d, type: 3}
m_PrefabInstance: {fileID: 5626406452199475265} m_PrefabInstance: {fileID: 5626406452199475265}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &214974222
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 214974223}
- component: {fileID: 214974225}
- component: {fileID: 214974224}
m_Layer: 0
m_Name: Renderer4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &214974223
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 214974222}
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: 1434161267}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &214974224
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 214974222}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: deeb12332c062954093c24a3fab10b83, 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: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
--- !u!222 &214974225
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 214974222}
m_CullTransparentMesh: 1
--- !u!1 &215611423 --- !u!1 &215611423
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -10511,8 +10446,8 @@ MonoBehaviour:
_pushPower: 50 _pushPower: 50
_liquidObject: {fileID: -7612237390858616641, guid: 231c2f369e2946745a955eb49243702b, type: 3} _liquidObject: {fileID: -7612237390858616641, guid: 231c2f369e2946745a955eb49243702b, type: 3}
_garnishObject: {fileID: 5803694563079548352, guid: f051d09e1e3043d4285ae8e0ff4c4f12, type: 3} _garnishObject: {fileID: 5803694563079548352, guid: f051d09e1e3043d4285ae8e0ff4c4f12, type: 3}
_liquidsPerSecond: 80 _liquidsPerSecond: 100
_maxLiquidCount: 400 _maxLiquidCount: 300
_colorLerpSpeed: 0.5 _colorLerpSpeed: 0.5
_colorIntensity: 2 _colorIntensity: 2
_objectPoolCount: 1000 _objectPoolCount: 1000
@ -11456,71 +11391,6 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_HorizontalFit: 2 m_HorizontalFit: 2
m_VerticalFit: 0 m_VerticalFit: 0
--- !u!1 &1092164769
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1092164770}
- component: {fileID: 1092164772}
- component: {fileID: 1092164771}
m_Layer: 0
m_Name: Renderer3
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1092164770
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1092164769}
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: 1434161267}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1092164771
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1092164769}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: deeb12332c062954093c24a3fab10b83, 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: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
--- !u!222 &1092164772
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1092164769}
m_CullTransparentMesh: 1
--- !u!1 &1101945424 --- !u!1 &1101945424
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -15005,71 +14875,6 @@ Transform:
- {fileID: 181975870} - {fileID: 181975870}
m_Father: {fileID: 1665075868} m_Father: {fileID: 1665075868}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1370164786
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1370164787}
- component: {fileID: 1370164789}
- component: {fileID: 1370164788}
m_Layer: 0
m_Name: Renderer1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1370164787
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1370164786}
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: 1434161267}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1370164788
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1370164786}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: deeb12332c062954093c24a3fab10b83, 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: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
--- !u!222 &1370164789
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1370164786}
m_CullTransparentMesh: 1
--- !u!1 &1378992846 --- !u!1 &1378992846
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -16258,20 +16063,16 @@ RectTransform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434161266} m_GameObject: {fileID: 1434161266}
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.2, y: 1.2, z: 1.2} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1 m_ConstrainProportionsScale: 1
m_Children: m_Children:
- {fileID: 1544446791} - {fileID: 1544446791}
- {fileID: 1370164787}
- {fileID: 1613389274}
- {fileID: 1092164770}
- {fileID: 214974223}
m_Father: {fileID: 1737345938} m_Father: {fileID: 1737345938}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -132, y: 37} m_AnchoredPosition: {x: -51, y: 21}
m_SizeDelta: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1434161268 --- !u!114 &1434161268
@ -16294,7 +16095,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
skeletonDataAsset: {fileID: 11400000, guid: 308d2d58ac0aafc4b8a391c601b0d398, type: 2} skeletonDataAsset: {fileID: 11400000, guid: f92d39c8c0ff1414790be3559bcfb1b0, type: 2}
additiveMaterial: {fileID: 2100000, guid: 2e8245019faeb8c43b75f9ca3ac8ee34, type: 2} additiveMaterial: {fileID: 2100000, guid: 2e8245019faeb8c43b75f9ca3ac8ee34, type: 2}
multiplyMaterial: {fileID: 2100000, guid: e74a1f8978a7da348a721508d0d58834, type: 2} multiplyMaterial: {fileID: 2100000, guid: e74a1f8978a7da348a721508d0d58834, type: 2}
screenMaterial: {fileID: 2100000, guid: bab24c479f34eec45be6ea8595891569, type: 2} screenMaterial: {fileID: 2100000, guid: bab24c479f34eec45be6ea8595891569, type: 2}
@ -16317,10 +16118,6 @@ MonoBehaviour:
allowMultipleCanvasRenderers: 1 allowMultipleCanvasRenderers: 1
canvasRenderers: canvasRenderers:
- {fileID: 1544446793} - {fileID: 1544446793}
- {fileID: 1370164789}
- {fileID: 1613389276}
- {fileID: 1092164772}
- {fileID: 214974225}
separatorSlotNames: [] separatorSlotNames: []
enableSeparatorSlots: 0 enableSeparatorSlots: 0
separatorParts: [] separatorParts: []
@ -18362,71 +18159,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1604407184} m_GameObject: {fileID: 1604407184}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1613389273
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1613389274}
- component: {fileID: 1613389276}
- component: {fileID: 1613389275}
m_Layer: 0
m_Name: Renderer2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1613389274
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1613389273}
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: 1434161267}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1613389275
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1613389273}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: deeb12332c062954093c24a3fab10b83, 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: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
--- !u!222 &1613389276
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1613389273}
m_CullTransparentMesh: 1
--- !u!1 &1617241974 --- !u!1 &1617241974
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -4,7 +4,7 @@ using BlueWater.Npcs.Crews;
namespace BlueWater.BehaviorTrees.Actions namespace BlueWater.BehaviorTrees.Actions
{ {
[TaskCategory("Custom/Npc/Crew")] [TaskCategory("Custom/Npc/Crew")]
public class CompleteMission : Action public class IsCompletedMission : Action
{ {
private Crew _crew; private Crew _crew;
@ -15,12 +15,7 @@ namespace BlueWater.BehaviorTrees.Actions
public override TaskStatus OnUpdate() public override TaskStatus OnUpdate()
{ {
if (_crew.CrewInteraction == null) return _crew.IsCompletedMission() ? TaskStatus.Success : TaskStatus.Running;
{
return TaskStatus.Success;
}
return TaskStatus.Running;
} }
} }
} }

View File

@ -1,5 +1,5 @@
using BehaviorDesigner.Runtime.Tasks; using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews.Bartender;
namespace BlueWater.BehaviorTrees.Actions namespace BlueWater.BehaviorTrees.Actions
{ {

View File

@ -1,6 +1,7 @@
using BehaviorDesigner.Runtime.Tasks; using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews.Server;
using BlueWater.Tycoons; using BlueWater.Tycoons;
using UnityEngine;
namespace BlueWater.BehaviorTrees.Actions namespace BlueWater.BehaviorTrees.Actions
{ {
@ -8,7 +9,6 @@ namespace BlueWater.BehaviorTrees.Actions
public class Refind : Action public class Refind : Action
{ {
private ServerCrew _serverCrew; private ServerCrew _serverCrew;
private ServingTable _emptyServingTable;
public override void OnAwake() public override void OnAwake()
{ {
@ -19,31 +19,22 @@ namespace BlueWater.BehaviorTrees.Actions
{ {
var tycoonManager = TycoonManager.Instance; var tycoonManager = TycoonManager.Instance;
var orderedCustomer = tycoonManager.CustomerController.FindCustomerMatchingItem(_serverCrew.CurrentPickupItem); var orderedCustomer = tycoonManager.CustomerController.FindCustomerMatchingItem(_serverCrew.CurrentPickupItem);
if (orderedCustomer)
if (orderedCustomer != null)
{ {
orderedCustomer.IsMatchedServer = true; _serverCrew.OnMission(orderedCustomer, orderedCustomer);
_serverCrew.OrderedCustomer = orderedCustomer;
_serverCrew.CrewInteraction = orderedCustomer;
return TaskStatus.Success; return TaskStatus.Success;
} }
if (_emptyServingTable == null) var emptyServingTable = tycoonManager.ServingTableController.FindEmptyServingTable();
if (emptyServingTable)
{ {
_emptyServingTable = tycoonManager.ServingTableController.FindEmptyServingTable(); _serverCrew.OnMission(emptyServingTable);
_serverCrew.CrewInteraction = _emptyServingTable; _serverCrew.AIMovement.Move(emptyServingTable.CenterTransform.position);
return TaskStatus.Running; return TaskStatus.Success;
} }
_serverCrew.AIMovement.Move(_emptyServingTable.CenterTransform.position); return TaskStatus.Running;
if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running;
_serverCrew.AIMovement.StopMove();
_serverCrew.CrewInteraction.InteractionCrew(_serverCrew);
return TaskStatus.Success;
} }
} }
} }

View File

@ -1,5 +1,5 @@
using BehaviorDesigner.Runtime.Tasks; using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews.Bartender;
namespace BlueWater.BehaviorTrees.Actions namespace BlueWater.BehaviorTrees.Actions
{ {

View File

@ -33,9 +33,15 @@ namespace BlueWater.BehaviorTrees.Actions
if (!_crew.CanInteractionPosition()) return TaskStatus.Running; if (!_crew.CanInteractionPosition()) return TaskStatus.Running;
_crew.AIMovement.StopMove(); _crew.AIMovement.StopMove();
_crew.CrewInteraction.InteractionCrew(_crew);
if (_crew.CrewInteraction != null)
{
_crew.CrewInteraction.InteractionCrew(_crew);
return TaskStatus.Success;
}
return TaskStatus.Success; _crew.ResetMission();
return TaskStatus.Failure;
} }
} }
} }

View File

@ -1,5 +1,6 @@
using BehaviorDesigner.Runtime.Tasks; using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews.Server;
using UnityEngine;
namespace BlueWater.BehaviorTrees.Actions namespace BlueWater.BehaviorTrees.Actions
{ {
@ -15,7 +16,11 @@ namespace BlueWater.BehaviorTrees.Actions
public override void OnStart() public override void OnStart()
{ {
_serverCrew.CrewInteraction = _serverCrew.OrderedCustomer; if (_serverCrew.OrderedCustomer && _serverCrew.OrderedCustomer.CanInteractionCrew())
{
_serverCrew.OrderedCustomer.IsMatchedServer = true;
}
if (_serverCrew.CrewInteraction != null) if (_serverCrew.CrewInteraction != null)
{ {
_serverCrew.AIMovement.Move(_serverCrew.CrewInteraction.CenterTransform.position); _serverCrew.AIMovement.Move(_serverCrew.CrewInteraction.CenterTransform.position);
@ -27,17 +32,22 @@ namespace BlueWater.BehaviorTrees.Actions
if (!_serverCrew.CrewInteraction.CanInteractionCrew()) if (!_serverCrew.CrewInteraction.CanInteractionCrew())
{ {
_serverCrew.AIMovement.StopMove(); _serverCrew.AIMovement.StopMove();
_serverCrew.OrderedCustomer = null; _serverCrew.CanNotServing();
_serverCrew.CrewInteraction = null;
return TaskStatus.Failure; return TaskStatus.Failure;
} }
if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running; if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running;
_serverCrew.AIMovement.StopMove(); _serverCrew.AIMovement.StopMove();
_serverCrew.CrewInteraction.InteractionCrew(_serverCrew);
return TaskStatus.Success; if (_serverCrew.CrewInteraction != null)
{
_serverCrew.CrewInteraction.InteractionCrew(_serverCrew);
return TaskStatus.Success;
}
_serverCrew.CanNotServing();
return TaskStatus.Failure;
} }
} }
} }

View File

@ -1,5 +1,5 @@
using BehaviorDesigner.Runtime.Tasks; using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews.Server;
namespace BlueWater.BehaviorTrees.Actions namespace BlueWater.BehaviorTrees.Actions
{ {
@ -25,7 +25,7 @@ namespace BlueWater.BehaviorTrees.Actions
{ {
if (_serverCrew.CurrentPickupItem != null) return TaskStatus.Success; if (_serverCrew.CurrentPickupItem != null) return TaskStatus.Success;
if (_serverCrew.CrewInteraction == null || !_serverCrew.CrewInteraction.CanInteractionCrew()) if (_serverCrew.CrewInteraction == null || !_serverCrew.CrewInteraction.CanInteractionCrew() || !_serverCrew.OrderedCustomer.CanInteractionCrew())
{ {
_serverCrew.AIMovement.StopMove(); _serverCrew.AIMovement.StopMove();
_serverCrew.ResetMission(); _serverCrew.ResetMission();
@ -33,11 +33,17 @@ namespace BlueWater.BehaviorTrees.Actions
} }
if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running; if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running;
_serverCrew.AIMovement.StopMove();
_serverCrew.CrewInteraction.InteractionCrew(_serverCrew);
return TaskStatus.Success; _serverCrew.AIMovement.StopMove();
if (_serverCrew.CrewInteraction != null && _serverCrew.OrderedCustomer.CanInteractionCrew())
{
_serverCrew.CrewInteraction.InteractionCrew(_serverCrew);
return TaskStatus.Success;
}
_serverCrew.ResetMission();
return TaskStatus.Failure;
} }
} }
} }

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 35b0111a0732856408248d570b2d6501
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,18 +1,48 @@
using BlueWater.Interfaces;
using BlueWater.Npcs.Customers; using BlueWater.Npcs.Customers;
using BlueWater.Tycoons; using BlueWater.Tycoons;
namespace BlueWater.Npcs.Crews namespace BlueWater.Npcs.Crews.Bartender
{ {
public class BartenderCrew: Crew public class BartenderCrew : Crew
{ {
public BartenderTable MyBartenderTable { get; private set; } public BartenderTable MyBartenderTable { get; private set; }
public Customer OrderedCustomer { get; set; } public Customer OrderedCustomer { get; set; }
public bool IsMakingCocktail { get; private set; }
public StateMachineController<BartenderCrew> StateMachineController { get; private set; }
public IStateMachine<BartenderCrew> IdleState { get; private set; }
public IStateMachine<BartenderCrew> MakingCocktailState { get; private set; }
protected override void Update()
{
StateMachineController.UpdateState(this);
base.Update();
}
public override void Initialize()
{
IdleState = new IdleState();
MakingCocktailState = new MakingCocktailState();
StateMachineController = new StateMachineController<BartenderCrew>(this, IdleState);
base.Initialize();
}
public override void ResetMission() public override void ResetMission()
{ {
base.ResetMission(); CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
OrderedCustomer = null; OrderedCustomer = null;
IsMakingCocktail = false;
}
public override bool IsCompletedMission()
{
return !OrderedCustomer && !IsMakingCocktail;
} }
public void SetBartenderTable(BartenderTable bartenderTable) => MyBartenderTable = bartenderTable; public void SetBartenderTable(BartenderTable bartenderTable) => MyBartenderTable = bartenderTable;

View File

@ -0,0 +1,25 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Bartender
{
public class IdleState : IStateMachine<BartenderCrew>
{
public virtual void EnterState(BartenderCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Idle, true);
}
public virtual void UpdateState(BartenderCrew character)
{
if (character.IsMakingCocktail)
{
character.StateMachineController.TransitionToState(character.MakingCocktailState, character);
}
}
public virtual void ExitState(BartenderCrew character)
{
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e9c0ddd65aa3624458b71816e3981c58

View File

@ -0,0 +1,24 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Bartender
{
public class MakingCocktailState : IStateMachine<BartenderCrew>
{
public void EnterState(BartenderCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.MakingCocktail, true);
}
public void UpdateState(BartenderCrew character)
{
if (character.IsMakingCocktail) return;
character.StateMachineController.TransitionToState(character.IdleState, character);
}
public void ExitState(BartenderCrew character)
{
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c56d6556876306c4d909c6933df23d82
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,52 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Cleaner
{
public class CleanerCrew : Crew
{
public bool IsCleaningFloor { get; private set; }
public bool IsCleaningTable { get; private set; }
public StateMachineController<CleanerCrew> StateMachineController { get; private set; }
public IStateMachine<CleanerCrew> IdleState { get; private set; }
public IStateMachine<CleanerCrew> WalkingState { get; private set; }
public IStateMachine<CleanerCrew> CleaningFloorState { get; private set; }
public IStateMachine<CleanerCrew> CleaningTableState { get; private set; }
protected override void Update()
{
StateMachineController.UpdateState(this);
base.Update();
}
public override void Initialize()
{
IdleState = new IdleState();
WalkingState = new WalkingState();
CleaningFloorState = new CleaningFloorState();
CleaningTableState = new CleaningTableState();
StateMachineController = new StateMachineController<CleanerCrew>(this, IdleState);
base.Initialize();
}
public override void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
IsCleaningFloor = false;
IsCleaningTable = false;
}
public override bool IsCompletedMission()
{
return CrewInteraction == null && !IsCleaningFloor && !IsCleaningTable;
}
public void SetIsCleaningFloor(bool value) => IsCleaningFloor = value;
public void SetIsCleaningTable(bool value) => IsCleaningTable = value;
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b76597d3681048e4b94d459ab2538a5f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,31 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Cleaner
{
public class CleaningFloorState : IStateMachine<CleanerCrew>
{
public void EnterState(CleanerCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.CleaningFloor, true);
}
public void UpdateState(CleanerCrew character)
{
if (character.IsCleaningFloor) return;
if (character.IsMoving)
{
character.StateMachineController.TransitionToState(character.WalkingState, character);
}
else if (!character.IsMoving)
{
character.StateMachineController.TransitionToState(character.IdleState, character);
}
}
public void ExitState(CleanerCrew character)
{
}
}
}

View File

@ -0,0 +1,31 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Cleaner
{
public class CleaningTableState : IStateMachine<CleanerCrew>
{
public void EnterState(CleanerCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.CleaningTable, true);
}
public void UpdateState(CleanerCrew character)
{
if (character.IsCleaningTable) return;
if (character.IsMoving)
{
character.StateMachineController.TransitionToState(character.WalkingState, character);
}
else if (!character.IsMoving)
{
character.StateMachineController.TransitionToState(character.IdleState, character);
}
}
public void ExitState(CleanerCrew character)
{
}
}
}

View File

@ -0,0 +1,34 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Cleaner
{
public class IdleState : IStateMachine<CleanerCrew>
{
public void EnterState(CleanerCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Idle, true);
}
public void UpdateState(CleanerCrew character)
{
if (character.IsCleaningFloor)
{
character.StateMachineController.TransitionToState(character.CleaningFloorState, character);
}
else if (character.IsCleaningTable)
{
character.StateMachineController.TransitionToState(character.CleaningTableState, character);
}
if (character.IsMoving)
{
character.StateMachineController.TransitionToState(character.WalkingState, character);
}
}
public void ExitState(CleanerCrew character)
{
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 25dad99d4102ee1488ddc67be46b0aa7

View File

@ -0,0 +1,33 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Cleaner
{
public class WalkingState : IStateMachine<CleanerCrew>
{
public void EnterState(CleanerCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Walk, true);
}
public void UpdateState(CleanerCrew character)
{
if (!character.IsMoving)
{
character.StateMachineController.TransitionToState(character.IdleState, character);
}
else if (character.IsCleaningFloor)
{
character.StateMachineController.TransitionToState(character.CleaningFloorState, character);
}
else if (character.IsCleaningTable)
{
character.StateMachineController.TransitionToState(character.CleaningTableState, character);
}
}
public void ExitState(CleanerCrew character)
{
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 18d2e384fa17d9145a22b1810557daa7

View File

@ -1,7 +0,0 @@
namespace BlueWater.Npcs.Crews
{
public class CleanerCrew: Crew
{
}
}

View File

@ -21,7 +21,7 @@ namespace BlueWater.Npcs.Crews
public const string MakingCocktail = "BeerMaker"; public const string MakingCocktail = "BeerMaker";
} }
public class Crew : MonoBehaviour public abstract class Crew : MonoBehaviour
{ {
// Variables // Variables
@ -76,25 +76,11 @@ namespace BlueWater.Npcs.Crews
} }
} }
public ICrewInteraction CrewInteraction { get; set; } public ICrewInteraction CrewInteraction { get; protected set; }
public bool IsOnMission { get; set; } public bool IsOnMission { get; protected set; }
public bool IsCleaningFloor { get; set; }
public bool IsCleaningTable { get; set; }
public bool IsServing { get; set; }
public bool IsMakingCocktail { get; set; }
private IAstarAI _astarAi; private IAstarAI _astarAi;
private Transform _spawnTransform; private Transform _spawnTransform;
// State
public IState<Crew> CurrentState { get; private set; }
public IState<Crew> IdleState { get; private set; }
public IState<Crew> WalkingState { get; private set; }
public IState<Crew> ServingIdleState { get; private set; }
public IState<Crew> ServingState { get; private set; }
public IState<Crew> CleaningFloorState { get; private set; }
public IState<Crew> CleaningTableState { get; private set; }
public IState<Crew> MakingCocktailState { get; private set; }
#endregion #endregion
@ -109,7 +95,7 @@ namespace BlueWater.Npcs.Crews
protected virtual void Update() protected virtual void Update()
{ {
CurrentState.UpdateState(this); //CurrentAnimationState.UpdateState(this);
HandleMovement(); HandleMovement();
FlipVisualLook(); FlipVisualLook();
} }
@ -141,17 +127,6 @@ namespace BlueWater.Npcs.Crews
public virtual void Initialize() public virtual void Initialize()
{ {
IdleState = new IdleState();
WalkingState = new WalkingState();
ServingIdleState = new ServingIdleState();
ServingState = new ServingState();
CleaningFloorState = new CleaningFloorState();
CleaningTableState = new CleaningTableState();
MakingCocktailState = new MakingCocktailState();
CurrentState = IdleState;
CurrentState.EnterState(this);
BehaviorTree.EnableBehavior(); BehaviorTree.EnableBehavior();
} }
@ -194,29 +169,15 @@ namespace BlueWater.Npcs.Crews
BarkTrigger.OnUse(); BarkTrigger.OnUse();
} }
public void TransitionToState(IState<Crew> newState)
{
CurrentState.ExitState(this);
CurrentState = newState;
CurrentState.EnterState(this);
}
public virtual void OnMission(ICrewInteraction crewInteraction) public virtual void OnMission(ICrewInteraction crewInteraction)
{ {
CrewInteraction = crewInteraction; CrewInteraction = crewInteraction;
CrewInteraction.OnInteractionCompleted += InteractionCompleted; CrewInteraction.OnInteractionCompleted += ResetMission;
IsOnMission = true; IsOnMission = true;
} }
public virtual void ResetMission() public abstract void ResetMission();
{ public abstract bool IsCompletedMission();
CrewInteraction = null;
IsOnMission = false;
IsCleaningFloor = false;
IsCleaningTable = false;
IsServing = false;
IsMakingCocktail = false;
}
public virtual bool CanInteractionPosition() public virtual bool CanInteractionPosition()
{ {
@ -227,13 +188,6 @@ namespace BlueWater.Npcs.Crews
CrewInteraction.InteractionRadius; CrewInteraction.InteractionRadius;
} }
protected virtual void InteractionCompleted()
{
CrewInteraction.OnInteractionCompleted -= InteractionCompleted;
ResetMission();
}
#endregion #endregion
} }
} }

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: aad9c20e25429d14f977b9e2ad515bde
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,71 @@
using BlueWater.Interfaces;
using BlueWater.Npcs.Customers;
namespace BlueWater.Npcs.Crews.Server
{
public class ServerCrew : Crew
{
public Customer OrderedCustomer { get; private set; }
public IPickup CurrentPickupItem { get; private set; }
public bool IsServing { get; private set; }
public StateMachineController<ServerCrew> StateMachineController { get; private set; }
public IStateMachine<ServerCrew> IdleState { get; private set; }
public IStateMachine<ServerCrew> WalkingState { get; private set; }
public IStateMachine<ServerCrew> ServingState { get; private set; }
protected override void Update()
{
StateMachineController.UpdateState(this);
base.Update();
}
public override void Initialize()
{
IdleState = new IdleState();
WalkingState = new WalkingState();
ServingState = new ServingState();
StateMachineController = new StateMachineController<ServerCrew>(this, IdleState);
base.Initialize();
}
public override void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
OrderedCustomer = null;
CurrentPickupItem = null;
IsServing = false;
}
public void CanNotServing()
{
CrewInteraction = null;
OrderedCustomer = null;
}
public override bool IsCompletedMission()
{
return CrewInteraction == null && !OrderedCustomer && CurrentPickupItem == null && !IsServing;
}
public void OnMission(ICrewInteraction crewInteraction, Customer orderedCustomer)
{
base.OnMission(crewInteraction);
OrderedCustomer = orderedCustomer;
}
public void TakeFromServingTable(IPickup pickupItem, Customer orderedCustomer)
{
CurrentPickupItem = pickupItem;
OrderedCustomer = orderedCustomer;
CrewInteraction = OrderedCustomer;
BalloonUi.SetItemImage(CurrentPickupItem);
IsServing = true;
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 21ecb96e6b51502459f165c484d1a11f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Server
{
public class IdleState : IStateMachine<ServerCrew>
{
private bool _previousIsServing;
public virtual void EnterState(ServerCrew character)
{
_previousIsServing = character.IsServing;
character.SpineController.PlayAnimation(_previousIsServing ? CrewSpineAnimation.ServingIdle : CrewSpineAnimation.Idle, true);
}
public virtual void UpdateState(ServerCrew character)
{
if (character.IsMoving)
{
character.StateMachineController.TransitionToState(character.WalkingState, character);
}
if (character.IsServing == _previousIsServing) return;
_previousIsServing = character.IsServing;
character.SpineController.PlayAnimation(_previousIsServing ? CrewSpineAnimation.ServingIdle : CrewSpineAnimation.Idle, true);
}
public virtual void ExitState(ServerCrew character)
{
}
}
}

View File

@ -0,0 +1,32 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Server
{
public class ServingState : IStateMachine<ServerCrew>
{
public void EnterState(ServerCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Serving, true);
}
public void UpdateState(ServerCrew character)
{
if (character.IsMoving)
{
if (!character.IsServing)
{
character.StateMachineController.TransitionToState(character.WalkingState, character);
}
}
else if (!character.IsMoving)
{
character.StateMachineController.TransitionToState(character.IdleState, character);
}
}
public void ExitState(ServerCrew character)
{
}
}
}

View File

@ -0,0 +1,29 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews.Server
{
public class WalkingState : IStateMachine<ServerCrew>
{
public void EnterState(ServerCrew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Walk, true);
}
public void UpdateState(ServerCrew character)
{
if (!character.IsMoving)
{
character.StateMachineController.TransitionToState(character.IdleState, character);
}
else if (character.IsServing)
{
character.StateMachineController.TransitionToState(character.ServingState, character);
}
}
public void ExitState(ServerCrew character)
{
}
}
}

View File

@ -1,19 +0,0 @@
using BlueWater.Interfaces;
using BlueWater.Npcs.Customers;
namespace BlueWater.Npcs.Crews
{
public class ServerCrew: Crew
{
public Customer OrderedCustomer { get; set; }
public IPickup CurrentPickupItem { get; set; }
public override void ResetMission()
{
base.ResetMission();
OrderedCustomer = null;
CurrentPickupItem = null;
}
}
}

View File

@ -1,31 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class CleaningFloorState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.CleaningFloor, true);
}
public void UpdateState(Crew character)
{
if (character.IsCleaningFloor) return;
if (character.IsMoving)
{
character.TransitionToState(character.WalkingState);
}
else if (!character.IsMoving)
{
character.TransitionToState(character.IdleState);
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -1,31 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class CleaningTableState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.CleaningTable, true);
}
public void UpdateState(Crew character)
{
if (character.IsCleaningTable) return;
if (character.IsMoving)
{
character.TransitionToState(character.WalkingState);
}
else if (!character.IsMoving)
{
character.TransitionToState(character.IdleState);
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -1,41 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class IdleState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Idle, true);
}
public void UpdateState(Crew character)
{
if (character.IsMoving)
{
character.TransitionToState(character.WalkingState);
}
else if (character.IsCleaningFloor)
{
character.TransitionToState(character.CleaningFloorState);
}
else if (character.IsCleaningTable)
{
character.TransitionToState(character.CleaningTableState);
}
else if (character.IsServing)
{
character.TransitionToState(character.ServingState);
}
else if (character.IsMakingCocktail)
{
character.TransitionToState(character.MakingCocktailState);
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -1,31 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class MakingCocktailState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.MakingCocktail, true);
}
public void UpdateState(Crew character)
{
if (character.IsMakingCocktail) return;
if (character.IsMoving)
{
character.TransitionToState(character.WalkingState);
}
else if (!character.IsMoving)
{
character.TransitionToState(character.IdleState);
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -1,39 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class ServingIdleState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.ServingIdle, true);
}
public void UpdateState(Crew character)
{
if (character.IsMoving)
{
if (character.IsServing)
{
character.TransitionToState(character.WalkingState);
}
else
{
character.TransitionToState(character.ServingState);
}
}
else if (!character.IsMoving)
{
if (!character.IsServing)
{
character.TransitionToState(character.IdleState);
}
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: afd7c038ff62b644f98d20d220bb13a8

View File

@ -1,39 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class ServingState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Serving, true);
}
public void UpdateState(Crew character)
{
if (character.IsMoving)
{
if (!character.IsServing)
{
character.TransitionToState(character.WalkingState);
}
}
else if (!character.IsMoving)
{
if (character.IsServing)
{
character.TransitionToState(character.ServingIdleState);
}
else
{
character.TransitionToState(character.IdleState);
}
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -1,41 +0,0 @@
using BlueWater.Interfaces;
namespace BlueWater.Npcs.Crews
{
public class WalkingState : IState<Crew>
{
public void EnterState(Crew character)
{
character.SpineController.PlayAnimation(CrewSpineAnimation.Walk, true);
}
public void UpdateState(Crew character)
{
if (!character.IsMoving)
{
character.TransitionToState(character.IdleState);
}
else if (character.IsCleaningFloor)
{
character.TransitionToState(character.CleaningFloorState);
}
else if (character.IsCleaningTable)
{
character.TransitionToState(character.CleaningTableState);
}
else if (character.IsServing)
{
character.TransitionToState(character.ServingState);
}
else if (character.IsMakingCocktail)
{
character.TransitionToState(character.MakingCocktailState);
}
}
public void ExitState(Crew character)
{
}
}
}

View File

@ -4,6 +4,7 @@ using BlueWater.Enemies;
using BlueWater.Interfaces; using BlueWater.Interfaces;
using BlueWater.Items; using BlueWater.Items;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Server;
using BlueWater.Players; using BlueWater.Players;
using BlueWater.Tycoons; using BlueWater.Tycoons;
using BlueWater.Uis; using BlueWater.Uis;
@ -144,12 +145,12 @@ namespace BlueWater.Npcs.Customers
private bool _isQuitting; private bool _isQuitting;
// State // State
public IState<Customer> CurrentState { get; private set; } public StateMachineController<Customer> StateMachineController { get; private set; }
public IState<Customer> IdleState { get; private set; } public IStateMachine<Customer> IdleState { get; private set; }
public IState<Customer> WalkingState { get; private set; } public IStateMachine<Customer> WalkingState { get; private set; }
public IState<Customer> HappyState { get; private set; } public IStateMachine<Customer> HappyState { get; private set; }
public IState<Customer> UpsetState { get; private set; } public IStateMachine<Customer> UpsetState { get; private set; }
public IState<Customer> VomitState { get; private set; } public IStateMachine<Customer> VomitState { get; private set; }
public event Action OnInteractionCompleted; public event Action OnInteractionCompleted;
@ -171,7 +172,7 @@ namespace BlueWater.Npcs.Customers
private void Update() private void Update()
{ {
CurrentState.UpdateState(this); StateMachineController.UpdateState(this);
HandleMovement(); HandleMovement();
FlipVisualLook(); FlipVisualLook();
} }
@ -213,14 +214,13 @@ namespace BlueWater.Npcs.Customers
CurrentLevelData = levelData; CurrentLevelData = levelData;
_spawnTransform = spawnTransform; _spawnTransform = spawnTransform;
IdleState = new IdleState(); IdleState = new IdleStateMachine();
WalkingState = new WalkingState(); WalkingState = new WalkingStateMachine();
HappyState = new HappyState(); HappyState = new HappyStateMachine();
UpsetState = new UpsetState(); UpsetState = new UpsetStateMachine();
VomitState = new VomitState(); VomitState = new VomitStateMachine();
CurrentState = IdleState; StateMachineController = new StateMachineController<Customer>(this, IdleState);
CurrentState.EnterState(this);
BehaviorTree.EnableBehavior(); BehaviorTree.EnableBehavior();
} }
@ -273,10 +273,9 @@ namespace BlueWater.Npcs.Customers
public void ServedItem(CocktailData cocktailData) public void ServedItem(CocktailData cocktailData)
{ {
OrderedCocktailData = cocktailData; CurrentTableSeat.SetFood();
CurrentTableSeat.SetFood(OrderedCocktailData.Sprite);
BalloonUi.ReceiveItem(cocktailData); BalloonUi.ReceiveItem(cocktailData);
TransitionToState(IsOrderedSucceed ? HappyState : UpsetState); StateMachineController.TransitionToState(IsOrderedSucceed ? HappyState : UpsetState, this);
} }
public void Interaction() public void Interaction()
@ -368,13 +367,6 @@ namespace BlueWater.Npcs.Customers
_customerInteractionType = CustomerInteractionType.None; _customerInteractionType = CustomerInteractionType.None;
} }
public void TransitionToState(IState<Customer> newState)
{
CurrentState.ExitState(this);
CurrentState = newState;
CurrentState.EnterState(this);
}
public void Bark(string conversation, BarkOrder barkOrder = BarkOrder.Random) public void Bark(string conversation, BarkOrder barkOrder = BarkOrder.Random)
{ {
if (string.IsNullOrEmpty(conversation)) return; if (string.IsNullOrEmpty(conversation)) return;
@ -420,7 +412,7 @@ namespace BlueWater.Npcs.Customers
public void Vomit() public void Vomit()
{ {
AIMovement.StopMove(); AIMovement.StopMove();
TransitionToState(VomitState); StateMachineController.TransitionToState(VomitState, this);
} }
public void InstanceVomit() public void InstanceVomit()
@ -428,7 +420,7 @@ namespace BlueWater.Npcs.Customers
var spawnPosition = transform.position + new Vector3(0f, 0f, 0.1f); var spawnPosition = transform.position + new Vector3(0f, 0f, 0.1f);
Instantiate(_vomiting, spawnPosition, _vomiting.transform.rotation); Instantiate(_vomiting, spawnPosition, _vomiting.transform.rotation);
IsVomited = true; IsVomited = true;
TransitionToState(IdleState); StateMachineController.TransitionToState(IdleState, this);
} }
public void CheckOut() public void CheckOut()
@ -460,7 +452,7 @@ namespace BlueWater.Npcs.Customers
CurrentTableSeat = null; CurrentTableSeat = null;
} }
AIMovement.Move(_spawnTransform.position); AIMovement.Move(_spawnTransform.position);
TransitionToState(WalkingState); StateMachineController.TransitionToState(WalkingState, this);
} }
#endregion #endregion

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Npcs.Customers namespace BlueWater.Npcs.Customers
{ {
public class HappyState : IState<Customer> public class HappyStateMachine : IStateMachine<Customer>
{ {
public void EnterState(Customer character) public void EnterState(Customer character)
{ {
@ -13,7 +13,7 @@ namespace BlueWater.Npcs.Customers
{ {
if (character.IsMoving) if (character.IsMoving)
{ {
character.TransitionToState(character.WalkingState); character.StateMachineController.TransitionToState(character.WalkingState, character);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Npcs.Customers namespace BlueWater.Npcs.Customers
{ {
public class IdleState : IState<Customer> public class IdleStateMachine : IStateMachine<Customer>
{ {
public void EnterState(Customer character) public void EnterState(Customer character)
{ {
@ -25,7 +25,7 @@ namespace BlueWater.Npcs.Customers
{ {
if (character.IsMoving) if (character.IsMoving)
{ {
character.TransitionToState(character.WalkingState); character.StateMachineController.TransitionToState(character.WalkingState, character);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Npcs.Customers namespace BlueWater.Npcs.Customers
{ {
public class UpsetState : IState<Customer> public class UpsetStateMachine : IStateMachine<Customer>
{ {
public void EnterState(Customer character) public void EnterState(Customer character)
{ {
@ -13,7 +13,7 @@ namespace BlueWater.Npcs.Customers
{ {
if (character.IsMoving) if (character.IsMoving)
{ {
character.TransitionToState(character.WalkingState); character.StateMachineController.TransitionToState(character.WalkingState, character);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Npcs.Customers namespace BlueWater.Npcs.Customers
{ {
public class VomitState : IState<Customer> public class VomitStateMachine : IStateMachine<Customer>
{ {
private bool _isVomiting; private bool _isVomiting;

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Npcs.Customers namespace BlueWater.Npcs.Customers
{ {
public class WalkingState : IState<Customer> public class WalkingStateMachine : IStateMachine<Customer>
{ {
public void EnterState(Customer character) public void EnterState(Customer character)
{ {
@ -25,7 +25,7 @@ namespace BlueWater.Npcs.Customers
{ {
if (!character.IsMoving) if (!character.IsMoving)
{ {
character.TransitionToState(character.IdleState); character.StateMachineController.TransitionToState(character.IdleState, character);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class CleaningFloorState : IState<TycoonPlayer> public class CleaningFloorStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -16,14 +16,14 @@ namespace BlueWater.Players.Tycoons
if (character.TycoonMovement.IsMoving) if (character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingState ? character.ServingStateMachine
: character.WalkingState); : character.WalkingStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingIdleState ? character.ServingIdleStateMachine
: character.IdleState); : character.IdleStateMachine);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class CleaningTableState : IState<TycoonPlayer> public class CleaningTableStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -16,14 +16,14 @@ namespace BlueWater.Players.Tycoons
if (character.TycoonMovement.IsMoving) if (character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingState ? character.ServingStateMachine
: character.WalkingState); : character.WalkingStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingIdleState ? character.ServingIdleStateMachine
: character.IdleState); : character.IdleStateMachine);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class IdleState : IState<TycoonPlayer> public class IdleStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -14,26 +14,26 @@ namespace BlueWater.Players.Tycoons
if (character.TycoonMovement.IsMoving) if (character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingState ? character.ServingStateMachine
: character.WalkingState); : character.WalkingStateMachine);
} }
else if (character.IsMakingCocktail) else if (character.IsMakingCocktail)
{ {
character.TransitionToState(character.MakingCocktailState); character.TransitionToState(character.MakingCocktailStateMachine);
} }
else if (character.IsCleaningFloor) else if (character.IsCleaningFloor)
{ {
character.TransitionToState(character.CleaningFloorState); character.TransitionToState(character.CleaningFloorStateMachine);
} }
else if (character.IsCleaningTable) else if (character.IsCleaningTable)
{ {
character.TransitionToState(character.CleaningTableState); character.TransitionToState(character.CleaningTableStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
if (character.TycoonPickupHandler.IsPickedUpCocktail()) if (character.TycoonPickupHandler.IsPickedUpCocktail())
{ {
character.TransitionToState(character.ServingIdleState); character.TransitionToState(character.ServingIdleStateMachine);
} }
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class MakingCocktailState : IState<TycoonPlayer> public class MakingCocktailStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -16,14 +16,14 @@ namespace BlueWater.Players.Tycoons
if (character.TycoonMovement.IsMoving) if (character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingState ? character.ServingStateMachine
: character.WalkingState); : character.WalkingStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingIdleState ? character.ServingIdleStateMachine
: character.IdleState); : character.IdleStateMachine);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class ServingIdleState : IState<TycoonPlayer> public class ServingIdleStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -14,26 +14,26 @@ namespace BlueWater.Players.Tycoons
if (character.TycoonMovement.IsMoving) if (character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingState ? character.ServingStateMachine
: character.WalkingState); : character.WalkingStateMachine);
} }
else if (character.IsMakingCocktail) else if (character.IsMakingCocktail)
{ {
character.TransitionToState(character.MakingCocktailState); character.TransitionToState(character.MakingCocktailStateMachine);
} }
else if (character.IsCleaningFloor) else if (character.IsCleaningFloor)
{ {
character.TransitionToState(character.CleaningFloorState); character.TransitionToState(character.CleaningFloorStateMachine);
} }
else if (character.IsCleaningTable) else if (character.IsCleaningTable)
{ {
character.TransitionToState(character.CleaningTableState); character.TransitionToState(character.CleaningTableStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
if (!character.TycoonPickupHandler.IsPickedUpCocktail()) if (!character.TycoonPickupHandler.IsPickedUpCocktail())
{ {
character.TransitionToState(character.IdleState); character.TransitionToState(character.IdleStateMachine);
} }
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class ServingState : IState<TycoonPlayer> public class ServingStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -15,26 +15,26 @@ namespace BlueWater.Players.Tycoons
{ {
if (!character.TycoonPickupHandler.IsPickedUpCocktail()) if (!character.TycoonPickupHandler.IsPickedUpCocktail())
{ {
character.TransitionToState(character.WalkingState); character.TransitionToState(character.WalkingStateMachine);
} }
} }
else if (character.IsMakingCocktail) else if (character.IsMakingCocktail)
{ {
character.TransitionToState(character.MakingCocktailState); character.TransitionToState(character.MakingCocktailStateMachine);
} }
else if (character.IsCleaningFloor) else if (character.IsCleaningFloor)
{ {
character.TransitionToState(character.CleaningFloorState); character.TransitionToState(character.CleaningFloorStateMachine);
} }
else if (character.IsCleaningTable) else if (character.IsCleaningTable)
{ {
character.TransitionToState(character.CleaningTableState); character.TransitionToState(character.CleaningTableStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingIdleState ? character.ServingIdleStateMachine
: character.IdleState); : character.IdleStateMachine);
} }
} }

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Players.Tycoons namespace BlueWater.Players.Tycoons
{ {
public class WalkingState : IState<TycoonPlayer> public class WalkingStateMachine : IStateMachine<TycoonPlayer>
{ {
public void EnterState(TycoonPlayer character) public void EnterState(TycoonPlayer character)
{ {
@ -15,26 +15,26 @@ namespace BlueWater.Players.Tycoons
{ {
if (character.TycoonPickupHandler.IsPickedUpCocktail()) if (character.TycoonPickupHandler.IsPickedUpCocktail())
{ {
character.TransitionToState(character.ServingState); character.TransitionToState(character.ServingStateMachine);
} }
} }
else if (character.IsMakingCocktail) else if (character.IsMakingCocktail)
{ {
character.TransitionToState(character.MakingCocktailState); character.TransitionToState(character.MakingCocktailStateMachine);
} }
else if (character.IsCleaningFloor) else if (character.IsCleaningFloor)
{ {
character.TransitionToState(character.CleaningFloorState); character.TransitionToState(character.CleaningFloorStateMachine);
} }
else if (character.IsCleaningTable) else if (character.IsCleaningTable)
{ {
character.TransitionToState(character.CleaningTableState); character.TransitionToState(character.CleaningTableStateMachine);
} }
else if (!character.TycoonMovement.IsMoving) else if (!character.TycoonMovement.IsMoving)
{ {
character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail() character.TransitionToState(character.TycoonPickupHandler.IsPickedUpCocktail()
? character.ServingIdleState ? character.ServingIdleStateMachine
: character.IdleState); : character.IdleStateMachine);
} }
} }

View File

@ -106,7 +106,9 @@ namespace BlueWater.Players.Tycoons
{ {
if (context.performed) if (context.performed)
{ {
DataManager.Instance.TestData(); EventManager.InvokeCreateServerCrew();
EventManager.InvokeCreateCleanerCrew();
EventManager.InvokeCreateBartenderCrew();
} }
} }

View File

@ -63,14 +63,14 @@ namespace BlueWater.Players.Tycoons
public bool IsMakingCocktail { get; set; } public bool IsMakingCocktail { get; set; }
// State // State
public IState<TycoonPlayer> CurrentState { get; private set; } public IStateMachine<TycoonPlayer> CurrentStateMachine { get; private set; }
public IState<TycoonPlayer> IdleState { get; private set; } public IStateMachine<TycoonPlayer> IdleStateMachine { get; private set; }
public IState<TycoonPlayer> WalkingState { get; private set; } public IStateMachine<TycoonPlayer> WalkingStateMachine { get; private set; }
public IState<TycoonPlayer> ServingIdleState { get; private set; } public IStateMachine<TycoonPlayer> ServingIdleStateMachine { get; private set; }
public IState<TycoonPlayer> ServingState { get; private set; } public IStateMachine<TycoonPlayer> ServingStateMachine { get; private set; }
public IState<TycoonPlayer> CleaningFloorState { get; private set; } public IStateMachine<TycoonPlayer> CleaningFloorStateMachine { get; private set; }
public IState<TycoonPlayer> CleaningTableState { get; private set; } public IStateMachine<TycoonPlayer> CleaningTableStateMachine { get; private set; }
public IState<TycoonPlayer> MakingCocktailState { get; private set; } public IStateMachine<TycoonPlayer> MakingCocktailStateMachine { get; private set; }
#endregion #endregion
@ -98,21 +98,21 @@ namespace BlueWater.Players.Tycoons
EventManager.OnCocktailDiscarded += balloonUi.DiscardItem; EventManager.OnCocktailDiscarded += balloonUi.DiscardItem;
EventManager.OnCocktailServedToCustomer += balloonUi.GiveItem; EventManager.OnCocktailServedToCustomer += balloonUi.GiveItem;
IdleState = new IdleState(); IdleStateMachine = new IdleStateMachine();
WalkingState = new WalkingState(); WalkingStateMachine = new WalkingStateMachine();
ServingIdleState = new ServingIdleState(); ServingIdleStateMachine = new ServingIdleStateMachine();
ServingState = new ServingState(); ServingStateMachine = new ServingStateMachine();
CleaningFloorState = new CleaningFloorState(); CleaningFloorStateMachine = new CleaningFloorStateMachine();
CleaningTableState = new CleaningTableState(); CleaningTableStateMachine = new CleaningTableStateMachine();
MakingCocktailState = new MakingCocktailState(); MakingCocktailStateMachine = new MakingCocktailStateMachine();
CurrentState = IdleState; CurrentStateMachine = IdleStateMachine;
CurrentState.EnterState(this); CurrentStateMachine.EnterState(this);
} }
private void Update() private void Update()
{ {
CurrentState.UpdateState(this); CurrentStateMachine.UpdateState(this);
} }
private void OnDestroy() private void OnDestroy()
@ -163,11 +163,11 @@ namespace BlueWater.Players.Tycoons
// VisualFeedbackManager.Instance.SetBaseTimeScale(0f); // VisualFeedbackManager.Instance.SetBaseTimeScale(0f);
} }
public void TransitionToState(IState<TycoonPlayer> newState) public void TransitionToState(IStateMachine<TycoonPlayer> newStateMachine)
{ {
CurrentState.ExitState(this); CurrentStateMachine.ExitState(this);
CurrentState = newState; CurrentStateMachine = newStateMachine;
CurrentState.EnterState(this); CurrentStateMachine.EnterState(this);
} }
#endregion #endregion

View File

@ -28,10 +28,5 @@ namespace BlueWater
[field: Title("타이쿤 데이터")] [field: Title("타이쿤 데이터")]
[field: SerializeField] [field: SerializeField]
public TycoonData TycoonData { get; private set; } public TycoonData TycoonData { get; private set; }
public void TestData()
{
}
} }
} }

View File

@ -1,6 +1,8 @@
using System; using System;
using BlueWater.Items; using BlueWater.Items;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews.Bartender;
using BlueWater.Npcs.Crews.Cleaner;
using BlueWater.Npcs.Crews.Server;
using BlueWater.Npcs.Customers; using BlueWater.Npcs.Customers;
using UnityEngine; using UnityEngine;

View File

@ -2,7 +2,7 @@
namespace BlueWater.Interfaces namespace BlueWater.Interfaces
{ {
public interface IState<T> where T : MonoBehaviour public interface IStateMachine<T> where T : MonoBehaviour
{ {
void EnterState(T character); void EnterState(T character);
void UpdateState(T character); void UpdateState(T character);

View File

@ -23,72 +23,50 @@ namespace BlueWater.Items
public string IngredientIdx1 { get; set; } public string IngredientIdx1 { get; set; }
[field: SerializeField, Tooltip("1번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("1번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")]
public int IngredientAmount1 { get; set; } public int IngredientRatio1 { get; set; }
[field: SerializeField, Tooltip("2번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("2번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")]
public string IngredientIdx2 { get; set; } public string IngredientIdx2 { get; set; }
[field: SerializeField, Tooltip("2번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("2번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")]
public int IngredientAmount2 { get; set; } public int IngredientRatio2 { get; set; }
[field: SerializeField, Tooltip("3번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("3번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")]
public string IngredientIdx3 { get; set; } public string IngredientIdx3 { get; set; }
[field: SerializeField, Tooltip("3번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("3번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")]
public int IngredientAmount3 { get; set; } public int IngredientRatio3 { get; set; }
[field: SerializeField, Tooltip("4번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("4번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")]
public string IngredientIdx4 { get; set; } public string IngredientIdx4 { get; set; }
[field: SerializeField, Tooltip("4번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("4번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")]
public int IngredientAmount4 { get; set; } public int IngredientRatio4 { get; set; }
[field: SerializeField, Tooltip("5번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("5번 재료 식별 Idx"), BoxGroup("Json 데이터 영역")]
public string IngredientIdx5 { get; set; } public string IngredientIdx5 { get; set; }
[field: SerializeField, Tooltip("5번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("5번 재료 수량 Idx"), BoxGroup("Json 데이터 영역")]
public int IngredientAmount5 { get; set; } public int IngredientRatio5 { get; set; }
[BoxGroup("직접 추가하는 영역")] [BoxGroup("직접 추가하는 영역")]
[field: SerializeField, BoxGroup("직접 추가하는 영역")] [field: SerializeField, BoxGroup("직접 추가하는 영역")]
public Sprite Sprite { get; set; } public Sprite Sprite { get; set; }
[field: SerializeField]
public List<CocktailIngredient> ValidIngredients { get; set; } = new(5);
public List<CocktailIngredient> GetValidIngredients() public List<CocktailIngredient> GetValidIngredients(int liquidMaxAmount)
{ {
var ingredients = new List<CocktailIngredient>(5); var ingredients = new List<CocktailIngredient>(5);
if (!string.IsNullOrEmpty(IngredientIdx1)) ingredients.Add(new CocktailIngredient(IngredientIdx1, IngredientAmount1)); if (!string.IsNullOrEmpty(IngredientIdx1)) ingredients.Add(new CocktailIngredient(IngredientIdx1, IngredientRatio1, (int)(liquidMaxAmount * (IngredientRatio1 / 100f))));
if (!string.IsNullOrEmpty(IngredientIdx2)) ingredients.Add(new CocktailIngredient(IngredientIdx2, IngredientAmount2)); if (!string.IsNullOrEmpty(IngredientIdx2)) ingredients.Add(new CocktailIngredient(IngredientIdx2, IngredientRatio2, (int)(liquidMaxAmount * (IngredientRatio2 / 100f))));
if (!string.IsNullOrEmpty(IngredientIdx3)) ingredients.Add(new CocktailIngredient(IngredientIdx3, IngredientAmount3)); if (!string.IsNullOrEmpty(IngredientIdx3)) ingredients.Add(new CocktailIngredient(IngredientIdx3, IngredientRatio3, (int)(liquidMaxAmount * (IngredientRatio3 / 100f))));
if (!string.IsNullOrEmpty(IngredientIdx4)) ingredients.Add(new CocktailIngredient(IngredientIdx4, IngredientAmount4)); if (!string.IsNullOrEmpty(IngredientIdx4)) ingredients.Add(new CocktailIngredient(IngredientIdx4, IngredientRatio4, (int)(liquidMaxAmount * (IngredientRatio4 / 100f))));
if (!string.IsNullOrEmpty(IngredientIdx5)) ingredients.Add(new CocktailIngredient(IngredientIdx5, IngredientAmount5)); if (!string.IsNullOrEmpty(IngredientIdx5)) ingredients.Add(new CocktailIngredient(IngredientIdx5, IngredientRatio5, (int)(liquidMaxAmount * (IngredientRatio5 / 100f))));
return ingredients; return ingredients;
} }
public List<CocktailIngredient> GetValidIngredientsToImage()
{
var ingredients = new List<CocktailIngredient>(5);
if (!string.IsNullOrEmpty(IngredientIdx1)) ingredients.Add(new CocktailIngredient(IngredientIdx1, IngredientAmount1));
if (!string.IsNullOrEmpty(IngredientIdx2)) ingredients.Add(new CocktailIngredient(IngredientIdx2, IngredientAmount2));
if (!string.IsNullOrEmpty(IngredientIdx3)) ingredients.Add(new CocktailIngredient(IngredientIdx3, IngredientAmount3));
if (!string.IsNullOrEmpty(IngredientIdx4)) ingredients.Add(new CocktailIngredient(IngredientIdx4, IngredientAmount4));
if (!string.IsNullOrEmpty(IngredientIdx5)) ingredients.Add(new CocktailIngredient(IngredientIdx5, IngredientAmount5));
return ingredients;
}
public int GetCocktailAmount(List<CocktailIngredient> cocktailIngredients)
{
var amount = 0;
foreach (var element in cocktailIngredients)
{
amount += element.Amount;
}
return amount;
}
} }
} }

View File

@ -1,3 +1,6 @@
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine; using UnityEngine;
namespace BlueWater.Items namespace BlueWater.Items
@ -5,6 +8,24 @@ namespace BlueWater.Items
[CreateAssetMenu(fileName = "CocktailDataTable", menuName = "ScriptableObjects/CocktailDataTable")] [CreateAssetMenu(fileName = "CocktailDataTable", menuName = "ScriptableObjects/CocktailDataTable")]
public class CocktailDataSo : DataSo<CocktailData> public class CocktailDataSo : DataSo<CocktailData>
{ {
protected override void OnEnable()
{
base.OnEnable();
#if UNITY_EDITOR
if (!EditorApplication.isPlayingOrWillChangePlaymode)
{
return;
}
#endif
var maxLiquidAmount = FindAnyObjectByType<LiquidController>().GetMaxLiquidCount();
foreach (var element in _datas.Values)
{
element.ValidIngredients = element.GetValidIngredients(maxLiquidAmount);
}
}
} }

View File

@ -6,13 +6,26 @@ namespace BlueWater.Items
[Serializable] [Serializable]
public class CocktailIngredient public class CocktailIngredient
{ {
[field: SerializeField]
public string Idx { get; set; } public string Idx { get; set; }
[field: SerializeField]
public int Ratio { get; set; }
[field: SerializeField]
public int Amount { get; set; } public int Amount { get; set; }
public CocktailIngredient(string idx, int amount) public CocktailIngredient(string idx, int amount)
{ {
Idx = idx; Idx = idx;
Amount = amount; Amount = amount;
} }
public CocktailIngredient(string idx, int ratio, int amount)
{
Idx = idx;
Ratio = ratio;
Amount = amount;
}
} }
} }

View File

@ -12,7 +12,7 @@ namespace BlueWater.Items
protected Dictionary<string, T> _datas; protected Dictionary<string, T> _datas;
private void OnEnable() protected virtual void OnEnable()
{ {
InitializeDictionary(); InitializeDictionary();
} }

View File

@ -4,9 +4,28 @@ namespace BlueWater.Tycoons
{ {
public class BartenderTable : ServingTable public class BartenderTable : ServingTable
{ {
public override void Interaction()
{
// 테이블의 칵테일을 가져가는 경우
if (CurrentPickupItem != null)
{
EventManager.InvokeTakeFromServingTable();
CurrentTycoonPlayer.TycoonPickupHandler.PickupItem(CurrentPickupItem);
CurrentTycoonPlayer.InteractionCanvas.BalloonUi.SetItemImage(CurrentPickupItem);
CocktailGlassImage.enabled = false;
InteractionCanvas.BalloonUi.DiscardItem();
CurrentPickupItem = null;
}
}
public override bool CanInteraction() public override bool CanInteraction()
{ {
return false; return CurrentPickupItem != null && !CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpCocktail();
}
public override bool CanInteractionCrew()
{
return CurrentPickupItem != null && _orderedCustomer != null;
} }
public void CompleteMakingCocktail(IPickup cocktailData) public void CompleteMakingCocktail(IPickup cocktailData)

View File

@ -2,6 +2,7 @@ using System;
using System.Collections; using System.Collections;
using BlueWater.Interfaces; using BlueWater.Interfaces;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Server;
using BlueWater.Npcs.Customers; using BlueWater.Npcs.Customers;
using BlueWater.Utility; using BlueWater.Utility;
using UnityEngine; using UnityEngine;
@ -47,7 +48,7 @@ namespace BlueWater.Tycoons
private Material _originalCocktailGlassMaterial; private Material _originalCocktailGlassMaterial;
private Coroutine _findCustomerMatchingItemInstance; private Coroutine _findCustomerMatchingItemInstance;
private Coroutine _findServerCrewInstance; private Coroutine _findServerCrewInstance;
private Customer _orderedCustomer; protected Customer _orderedCustomer;
public event Action OnInteractionCompleted; public event Action OnInteractionCompleted;
@ -86,7 +87,7 @@ namespace BlueWater.Tycoons
{ {
// 1. 테이블에 칵테일이 있고, 플레이어가 칵테일을 들고 있지 않은 경우 // 1. 테이블에 칵테일이 있고, 플레이어가 칵테일을 들고 있지 않은 경우
// 2. 테이블에 칵테일이 없고, 플레이어가 칵테일을 들고 있는 경우 (정상적인 칵테일만) // 2. 테이블에 칵테일이 없고, 플레이어가 칵테일을 들고 있는 경우 (정상적인 칵테일만)
return (CurrentPickupItem != null && !CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpCocktail())|| return (CurrentPickupItem != null && !CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpCocktail()) ||
(CurrentPickupItem == null && CurrentTycoonPlayer.TycoonPickupHandler.IsServablePickupItem()); (CurrentPickupItem == null && CurrentTycoonPlayer.TycoonPickupHandler.IsServablePickupItem());
} }
@ -111,10 +112,7 @@ namespace BlueWater.Tycoons
if (CurrentPickupItem != null) if (CurrentPickupItem != null)
{ {
var serverCrew = (ServerCrew)crew; var serverCrew = (ServerCrew)crew;
serverCrew.CurrentPickupItem = CurrentPickupItem; serverCrew.TakeFromServingTable(CurrentPickupItem, _orderedCustomer);
serverCrew.InteractionCanvas.BalloonUi.SetItemImage(CurrentPickupItem);
serverCrew.OrderedCustomer = _orderedCustomer;
serverCrew.IsServing = true;
CocktailGlassImage.enabled = false; CocktailGlassImage.enabled = false;
InteractionCanvas.BalloonUi.DiscardItem(); InteractionCanvas.BalloonUi.DiscardItem();
CurrentPickupItem = null; CurrentPickupItem = null;
@ -123,8 +121,6 @@ namespace BlueWater.Tycoons
{ {
var serverCrew = (ServerCrew)crew; var serverCrew = (ServerCrew)crew;
CurrentPickupItem = serverCrew.CurrentPickupItem; CurrentPickupItem = serverCrew.CurrentPickupItem;
serverCrew.CurrentPickupItem = null;
serverCrew.BalloonUi.DiscardItem();
CocktailGlassImage.enabled = true; CocktailGlassImage.enabled = true;
InteractionCanvas.BalloonUi.SetItemImage(CurrentPickupItem); InteractionCanvas.BalloonUi.SetItemImage(CurrentPickupItem);
serverCrew.ResetMission(); serverCrew.ResetMission();
@ -136,9 +132,10 @@ namespace BlueWater.Tycoons
throw new NotImplementedException(); throw new NotImplementedException();
} }
public bool CanInteractionCrew() public virtual bool CanInteractionCrew()
{ {
return CurrentPickupItem != null && _orderedCustomer != null; return (CurrentPickupItem != null && _orderedCustomer != null) ||
CurrentPickupItem == null;
} }
private IEnumerator FindCustomerMatchingItem() private IEnumerator FindCustomerMatchingItem()
@ -147,13 +144,11 @@ namespace BlueWater.Tycoons
while (true) while (true)
{ {
_orderedCustomer = TycoonManager.Instance.CustomerController.FindCustomerMatchingItem(_currentPickupItem); _orderedCustomer = TycoonManager.Instance.CustomerController.FindCustomerMatchingItem(_currentPickupItem);
if (_orderedCustomer != null) if (_orderedCustomer && _orderedCustomer.CanInteractionCrew())
{ {
_orderedCustomer.IsMatchedServer = true;
var crewController = TycoonManager.Instance.CrewController; var crewController = TycoonManager.Instance.CrewController;
Utils.StartUniqueCoroutine(this, ref _findServerCrewInstance, Utils.StartUniqueCoroutine(this, ref _findServerCrewInstance,
crewController.FindClosestCrewCoroutine(CenterTransform.position, crewController.ServerCrews, crew => crew.OnMission(this))); crewController.FindClosestCrewCoroutine(CenterTransform.position, crewController.ServerCrews, crew => crew.OnMission(this, _orderedCustomer)));
yield break;
} }
yield return waitTime; yield return waitTime;

View File

@ -3,6 +3,7 @@ using System.Collections;
using System.Linq; using System.Linq;
using BlueWater.Interfaces; using BlueWater.Interfaces;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Cleaner;
using BlueWater.Utility; using BlueWater.Utility;
using UnityEngine; using UnityEngine;
@ -82,6 +83,7 @@ namespace BlueWater.Tycoons
if (_crewElapsedTime > _interactionHoldingTime) if (_crewElapsedTime > _interactionHoldingTime)
{ {
OnInteractionCompleted?.Invoke(); OnInteractionCompleted?.Invoke();
OnInteractionCompleted = null;
CleanTable(); CleanTable();
} }
@ -100,7 +102,7 @@ namespace BlueWater.Tycoons
public void SetTableNumber(int number) => TableNumber = number; public void SetTableNumber(int number) => TableNumber = number;
public void SetFood(Sprite sprite) public void SetFood()
{ {
Food.sprite = _foodImage; Food.sprite = _foodImage;
Food.enabled = true; Food.enabled = true;
@ -138,6 +140,7 @@ namespace BlueWater.Tycoons
Food.enabled = false; Food.enabled = false;
IsCleaned = true; IsCleaned = true;
_isPlayerInteracting = false; _isPlayerInteracting = false;
_isCrewInteracting = false;
InteractionCanvas.BalloonUi.HideUi(); InteractionCanvas.BalloonUi.HideUi();
InteractionCanvas.BalloonUi.ResetUi(); InteractionCanvas.BalloonUi.ResetUi();
} }
@ -158,7 +161,7 @@ namespace BlueWater.Tycoons
{ {
_crewElapsedTime = 0f; _crewElapsedTime = 0f;
_isCrewInteracting = true; _isCrewInteracting = true;
crew.IsCleaningTable = true; ((CleanerCrew)crew).SetIsCleaningTable(true);
} }
public void CancelInteractionCrew() public void CancelInteractionCrew()

View File

@ -1,8 +1,7 @@
using System; using System;
using System.Collections;
using System.Linq;
using BlueWater.Interfaces; using BlueWater.Interfaces;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Cleaner;
using BlueWater.Utility; using BlueWater.Utility;
using UnityEngine; using UnityEngine;
@ -56,6 +55,7 @@ namespace BlueWater.Tycoons
if (_crewElapsedTime > _interactionHoldingTime) if (_crewElapsedTime > _interactionHoldingTime)
{ {
OnInteractionCompleted?.Invoke(); OnInteractionCompleted?.Invoke();
OnInteractionCompleted = null;
Destroy(); Destroy();
} }
@ -104,7 +104,7 @@ namespace BlueWater.Tycoons
{ {
_crewElapsedTime = 0f; _crewElapsedTime = 0f;
_isCrewInteracting = true; _isCrewInteracting = true;
crew.IsCleaningFloor = true; ((CleanerCrew)crew).SetIsCleaningFloor(true);
} }
public void CancelInteractionCrew() public void CancelInteractionCrew()

View File

@ -19,15 +19,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uC4F0\uB808\uAE30" <Name>k__BackingField: "\uC4F0\uB808\uAE30"
<RatioRange>k__BackingField: 0 <RatioRange>k__BackingField: 0
<IngredientIdx1>k__BackingField: <IngredientIdx1>k__BackingField:
<IngredientAmount1>k__BackingField: 0 <IngredientRatio1>k__BackingField: 0
<IngredientIdx2>k__BackingField: <IngredientIdx2>k__BackingField:
<IngredientAmount2>k__BackingField: 0 <IngredientRatio2>k__BackingField: 0
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 7f08919123d8bb84194bd4be22c0dee8, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 7f08919123d8bb84194bd4be22c0dee8, type: 3}
- <Key>k__BackingField: Cocktail001 - <Key>k__BackingField: Cocktail001
<Value>k__BackingField: <Value>k__BackingField:
@ -35,15 +35,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CA" <Name>k__BackingField: "\uCE75\uD14C\uC77CA"
<RatioRange>k__BackingField: 0 <RatioRange>k__BackingField: 0
<IngredientIdx1>k__BackingField: LiquidA <IngredientIdx1>k__BackingField: LiquidA
<IngredientAmount1>k__BackingField: 400 <IngredientRatio1>k__BackingField: 100
<IngredientIdx2>k__BackingField: <IngredientIdx2>k__BackingField:
<IngredientAmount2>k__BackingField: 0 <IngredientRatio2>k__BackingField: 0
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 0cf23778fd0b2994c9d608fbbf185468, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 0cf23778fd0b2994c9d608fbbf185468, type: 3}
- <Key>k__BackingField: Cocktail002 - <Key>k__BackingField: Cocktail002
<Value>k__BackingField: <Value>k__BackingField:
@ -51,15 +51,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CB" <Name>k__BackingField: "\uCE75\uD14C\uC77CB"
<RatioRange>k__BackingField: 0 <RatioRange>k__BackingField: 0
<IngredientIdx1>k__BackingField: LiquidB <IngredientIdx1>k__BackingField: LiquidB
<IngredientAmount1>k__BackingField: 400 <IngredientRatio1>k__BackingField: 100
<IngredientIdx2>k__BackingField: <IngredientIdx2>k__BackingField:
<IngredientAmount2>k__BackingField: 0 <IngredientRatio2>k__BackingField: 0
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 600806d36167cb140aa40eb51cf58afa, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 600806d36167cb140aa40eb51cf58afa, type: 3}
- <Key>k__BackingField: Cocktail003 - <Key>k__BackingField: Cocktail003
<Value>k__BackingField: <Value>k__BackingField:
@ -67,15 +67,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CC" <Name>k__BackingField: "\uCE75\uD14C\uC77CC"
<RatioRange>k__BackingField: 0 <RatioRange>k__BackingField: 0
<IngredientIdx1>k__BackingField: LiquidC <IngredientIdx1>k__BackingField: LiquidC
<IngredientAmount1>k__BackingField: 400 <IngredientRatio1>k__BackingField: 100
<IngredientIdx2>k__BackingField: <IngredientIdx2>k__BackingField:
<IngredientAmount2>k__BackingField: 0 <IngredientRatio2>k__BackingField: 0
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: c55f4b0a55a391d488e54a28dc840509, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: c55f4b0a55a391d488e54a28dc840509, type: 3}
- <Key>k__BackingField: Cocktail004 - <Key>k__BackingField: Cocktail004
<Value>k__BackingField: <Value>k__BackingField:
@ -83,15 +83,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CD" <Name>k__BackingField: "\uCE75\uD14C\uC77CD"
<RatioRange>k__BackingField: 0 <RatioRange>k__BackingField: 0
<IngredientIdx1>k__BackingField: LiquidD <IngredientIdx1>k__BackingField: LiquidD
<IngredientAmount1>k__BackingField: 400 <IngredientRatio1>k__BackingField: 100
<IngredientIdx2>k__BackingField: <IngredientIdx2>k__BackingField:
<IngredientAmount2>k__BackingField: 0 <IngredientRatio2>k__BackingField: 0
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 576d6ff3856f8ef419586ff12f2742b5, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 576d6ff3856f8ef419586ff12f2742b5, type: 3}
- <Key>k__BackingField: Cocktail005 - <Key>k__BackingField: Cocktail005
<Value>k__BackingField: <Value>k__BackingField:
@ -99,15 +99,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CE" <Name>k__BackingField: "\uCE75\uD14C\uC77CE"
<RatioRange>k__BackingField: 0 <RatioRange>k__BackingField: 0
<IngredientIdx1>k__BackingField: LiquidE <IngredientIdx1>k__BackingField: LiquidE
<IngredientAmount1>k__BackingField: 400 <IngredientRatio1>k__BackingField: 100
<IngredientIdx2>k__BackingField: <IngredientIdx2>k__BackingField:
<IngredientAmount2>k__BackingField: 0 <IngredientRatio2>k__BackingField: 0
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 527440f24542af142a67219f2bcbeec4, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 527440f24542af142a67219f2bcbeec4, type: 3}
- <Key>k__BackingField: Cocktail006 - <Key>k__BackingField: Cocktail006
<Value>k__BackingField: <Value>k__BackingField:
@ -115,15 +115,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CAC" <Name>k__BackingField: "\uCE75\uD14C\uC77CAC"
<RatioRange>k__BackingField: 5 <RatioRange>k__BackingField: 5
<IngredientIdx1>k__BackingField: LiquidA <IngredientIdx1>k__BackingField: LiquidA
<IngredientAmount1>k__BackingField: 200 <IngredientRatio1>k__BackingField: 50
<IngredientIdx2>k__BackingField: LiquidC <IngredientIdx2>k__BackingField: LiquidC
<IngredientAmount2>k__BackingField: 200 <IngredientRatio2>k__BackingField: 50
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 6a4cd8cdf11fe024e8ecac8e3d60e10d, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 6a4cd8cdf11fe024e8ecac8e3d60e10d, type: 3}
- <Key>k__BackingField: Cocktail007 - <Key>k__BackingField: Cocktail007
<Value>k__BackingField: <Value>k__BackingField:
@ -131,15 +131,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CBD" <Name>k__BackingField: "\uCE75\uD14C\uC77CBD"
<RatioRange>k__BackingField: 5 <RatioRange>k__BackingField: 5
<IngredientIdx1>k__BackingField: LiquidB <IngredientIdx1>k__BackingField: LiquidB
<IngredientAmount1>k__BackingField: 200 <IngredientRatio1>k__BackingField: 50
<IngredientIdx2>k__BackingField: LiquidD <IngredientIdx2>k__BackingField: LiquidD
<IngredientAmount2>k__BackingField: 200 <IngredientRatio2>k__BackingField: 50
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: b38089ff4046ac044ba79dfa5116aa1b, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: b38089ff4046ac044ba79dfa5116aa1b, type: 3}
- <Key>k__BackingField: Cocktail008 - <Key>k__BackingField: Cocktail008
<Value>k__BackingField: <Value>k__BackingField:
@ -147,15 +147,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CCD" <Name>k__BackingField: "\uCE75\uD14C\uC77CCD"
<RatioRange>k__BackingField: 5 <RatioRange>k__BackingField: 5
<IngredientIdx1>k__BackingField: LiquidC <IngredientIdx1>k__BackingField: LiquidC
<IngredientAmount1>k__BackingField: 200 <IngredientRatio1>k__BackingField: 50
<IngredientIdx2>k__BackingField: LiquidD <IngredientIdx2>k__BackingField: LiquidD
<IngredientAmount2>k__BackingField: 200 <IngredientRatio2>k__BackingField: 50
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 71954183dfb02424d835d964c2eb3fc6, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 71954183dfb02424d835d964c2eb3fc6, type: 3}
- <Key>k__BackingField: Cocktail009 - <Key>k__BackingField: Cocktail009
<Value>k__BackingField: <Value>k__BackingField:
@ -163,15 +163,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CABE" <Name>k__BackingField: "\uCE75\uD14C\uC77CABE"
<RatioRange>k__BackingField: 10 <RatioRange>k__BackingField: 10
<IngredientIdx1>k__BackingField: LiquidA <IngredientIdx1>k__BackingField: LiquidA
<IngredientAmount1>k__BackingField: 100 <IngredientRatio1>k__BackingField: 25
<IngredientIdx2>k__BackingField: LiquidB <IngredientIdx2>k__BackingField: LiquidB
<IngredientAmount2>k__BackingField: 100 <IngredientRatio2>k__BackingField: 25
<IngredientIdx3>k__BackingField: LiquidE <IngredientIdx3>k__BackingField: LiquidE
<IngredientAmount3>k__BackingField: 200 <IngredientRatio3>k__BackingField: 50
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: d0748411047fc4a41beb1fb8d551e01e, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: d0748411047fc4a41beb1fb8d551e01e, type: 3}
- <Key>k__BackingField: Cocktail010 - <Key>k__BackingField: Cocktail010
<Value>k__BackingField: <Value>k__BackingField:
@ -179,15 +179,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CCDE" <Name>k__BackingField: "\uCE75\uD14C\uC77CCDE"
<RatioRange>k__BackingField: 10 <RatioRange>k__BackingField: 10
<IngredientIdx1>k__BackingField: LiquidC <IngredientIdx1>k__BackingField: LiquidC
<IngredientAmount1>k__BackingField: 100 <IngredientRatio1>k__BackingField: 25
<IngredientIdx2>k__BackingField: LiquidD <IngredientIdx2>k__BackingField: LiquidD
<IngredientAmount2>k__BackingField: 100 <IngredientRatio2>k__BackingField: 25
<IngredientIdx3>k__BackingField: LiquidE <IngredientIdx3>k__BackingField: LiquidE
<IngredientAmount3>k__BackingField: 200 <IngredientRatio3>k__BackingField: 100
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 335f1df58cd58914f97fe9ccae7f6c8c, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 335f1df58cd58914f97fe9ccae7f6c8c, type: 3}
- <Key>k__BackingField: Cocktail011 - <Key>k__BackingField: Cocktail011
<Value>k__BackingField: <Value>k__BackingField:
@ -195,15 +195,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CB1" <Name>k__BackingField: "\uCE75\uD14C\uC77CB1"
<RatioRange>k__BackingField: 10 <RatioRange>k__BackingField: 10
<IngredientIdx1>k__BackingField: LiquidB <IngredientIdx1>k__BackingField: LiquidB
<IngredientAmount1>k__BackingField: 320 <IngredientRatio1>k__BackingField: 80
<IngredientIdx2>k__BackingField: Garnish1 <IngredientIdx2>k__BackingField: Garnish1
<IngredientAmount2>k__BackingField: 80 <IngredientRatio2>k__BackingField: 20
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 600806d36167cb140aa40eb51cf58afa, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 600806d36167cb140aa40eb51cf58afa, type: 3}
- <Key>k__BackingField: Cocktail012 - <Key>k__BackingField: Cocktail012
<Value>k__BackingField: <Value>k__BackingField:
@ -211,15 +211,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CD1" <Name>k__BackingField: "\uCE75\uD14C\uC77CD1"
<RatioRange>k__BackingField: 10 <RatioRange>k__BackingField: 10
<IngredientIdx1>k__BackingField: LiquidD <IngredientIdx1>k__BackingField: LiquidD
<IngredientAmount1>k__BackingField: 320 <IngredientRatio1>k__BackingField: 80
<IngredientIdx2>k__BackingField: Garnish1 <IngredientIdx2>k__BackingField: Garnish1
<IngredientAmount2>k__BackingField: 80 <IngredientRatio2>k__BackingField: 20
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: ee344f47787d148448bd3373235281b6, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: ee344f47787d148448bd3373235281b6, type: 3}
- <Key>k__BackingField: Cocktail013 - <Key>k__BackingField: Cocktail013
<Value>k__BackingField: <Value>k__BackingField:
@ -227,15 +227,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CA2" <Name>k__BackingField: "\uCE75\uD14C\uC77CA2"
<RatioRange>k__BackingField: 5 <RatioRange>k__BackingField: 5
<IngredientIdx1>k__BackingField: LiquidA <IngredientIdx1>k__BackingField: LiquidA
<IngredientAmount1>k__BackingField: 360 <IngredientRatio1>k__BackingField: 90
<IngredientIdx2>k__BackingField: Garnish2 <IngredientIdx2>k__BackingField: Garnish2
<IngredientAmount2>k__BackingField: 40 <IngredientRatio2>k__BackingField: 10
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: aef7fd596cbfc854d87f408c14951641, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: aef7fd596cbfc854d87f408c14951641, type: 3}
- <Key>k__BackingField: Cocktail014 - <Key>k__BackingField: Cocktail014
<Value>k__BackingField: <Value>k__BackingField:
@ -243,15 +243,15 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CC2" <Name>k__BackingField: "\uCE75\uD14C\uC77CC2"
<RatioRange>k__BackingField: 5 <RatioRange>k__BackingField: 5
<IngredientIdx1>k__BackingField: LiquidC <IngredientIdx1>k__BackingField: LiquidC
<IngredientAmount1>k__BackingField: 360 <IngredientRatio1>k__BackingField: 90
<IngredientIdx2>k__BackingField: Garnish2 <IngredientIdx2>k__BackingField: Garnish2
<IngredientAmount2>k__BackingField: 40 <IngredientRatio2>k__BackingField: 10
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 91d99e534e5f3c04094b14ed920bec04, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 91d99e534e5f3c04094b14ed920bec04, type: 3}
- <Key>k__BackingField: Cocktail015 - <Key>k__BackingField: Cocktail015
<Value>k__BackingField: <Value>k__BackingField:
@ -259,13 +259,13 @@ MonoBehaviour:
<Name>k__BackingField: "\uCE75\uD14C\uC77CE2" <Name>k__BackingField: "\uCE75\uD14C\uC77CE2"
<RatioRange>k__BackingField: 5 <RatioRange>k__BackingField: 5
<IngredientIdx1>k__BackingField: LiquidE <IngredientIdx1>k__BackingField: LiquidE
<IngredientAmount1>k__BackingField: 360 <IngredientRatio1>k__BackingField: 90
<IngredientIdx2>k__BackingField: Garnish2 <IngredientIdx2>k__BackingField: Garnish2
<IngredientAmount2>k__BackingField: 40 <IngredientRatio2>k__BackingField: 10
<IngredientIdx3>k__BackingField: <IngredientIdx3>k__BackingField:
<IngredientAmount3>k__BackingField: 0 <IngredientRatio3>k__BackingField: 0
<IngredientIdx4>k__BackingField: <IngredientIdx4>k__BackingField:
<IngredientAmount4>k__BackingField: 0 <IngredientRatio4>k__BackingField: 0
<IngredientIdx5>k__BackingField: <IngredientIdx5>k__BackingField:
<IngredientAmount5>k__BackingField: 0 <IngredientRatio5>k__BackingField: 0
<Sprite>k__BackingField: {fileID: 21300000, guid: 527440f24542af142a67219f2bcbeec4, type: 3} <Sprite>k__BackingField: {fileID: 21300000, guid: 527440f24542af142a67219f2bcbeec4, type: 3}

View File

@ -19,7 +19,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 15 <CustomerRespawn>k__BackingField: 15
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 200 <RequiredExp>k__BackingField: 100
<WaitTime>k__BackingField: 20 <WaitTime>k__BackingField: 20
<HurryTime>k__BackingField: 20 <HurryTime>k__BackingField: 20
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -30,7 +30,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 15 <CustomerRespawn>k__BackingField: 15
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 300 <RequiredExp>k__BackingField: 100
<WaitTime>k__BackingField: 20 <WaitTime>k__BackingField: 20
<HurryTime>k__BackingField: 19 <HurryTime>k__BackingField: 19
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -41,7 +41,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 15 <CustomerRespawn>k__BackingField: 15
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 400 <RequiredExp>k__BackingField: 200
<WaitTime>k__BackingField: 20 <WaitTime>k__BackingField: 20
<HurryTime>k__BackingField: 18 <HurryTime>k__BackingField: 18
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -52,7 +52,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 15 <CustomerRespawn>k__BackingField: 15
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 500 <RequiredExp>k__BackingField: 200
<WaitTime>k__BackingField: 20 <WaitTime>k__BackingField: 20
<HurryTime>k__BackingField: 17 <HurryTime>k__BackingField: 17
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -63,7 +63,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 15 <CustomerRespawn>k__BackingField: 15
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 600 <RequiredExp>k__BackingField: 200
<WaitTime>k__BackingField: 20 <WaitTime>k__BackingField: 20
<HurryTime>k__BackingField: 16 <HurryTime>k__BackingField: 16
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -74,7 +74,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 13 <CustomerRespawn>k__BackingField: 13
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 700 <RequiredExp>k__BackingField: 200
<WaitTime>k__BackingField: 20 <WaitTime>k__BackingField: 20
<HurryTime>k__BackingField: 15 <HurryTime>k__BackingField: 15
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -85,7 +85,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 13 <CustomerRespawn>k__BackingField: 13
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 800 <RequiredExp>k__BackingField: 300
<WaitTime>k__BackingField: 19 <WaitTime>k__BackingField: 19
<HurryTime>k__BackingField: 15 <HurryTime>k__BackingField: 15
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -96,7 +96,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 13 <CustomerRespawn>k__BackingField: 13
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 900 <RequiredExp>k__BackingField: 300
<WaitTime>k__BackingField: 18 <WaitTime>k__BackingField: 18
<HurryTime>k__BackingField: 15 <HurryTime>k__BackingField: 15
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -107,7 +107,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 13 <CustomerRespawn>k__BackingField: 13
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1000 <RequiredExp>k__BackingField: 300
<WaitTime>k__BackingField: 17 <WaitTime>k__BackingField: 17
<HurryTime>k__BackingField: 15 <HurryTime>k__BackingField: 15
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -118,7 +118,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 13 <CustomerRespawn>k__BackingField: 13
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1100 <RequiredExp>k__BackingField: 300
<WaitTime>k__BackingField: 16 <WaitTime>k__BackingField: 16
<HurryTime>k__BackingField: 15 <HurryTime>k__BackingField: 15
<EatingTime>k__BackingField: 10 <EatingTime>k__BackingField: 10
@ -129,7 +129,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 11 <CustomerRespawn>k__BackingField: 11
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1200 <RequiredExp>k__BackingField: 300
<WaitTime>k__BackingField: 15 <WaitTime>k__BackingField: 15
<HurryTime>k__BackingField: 14 <HurryTime>k__BackingField: 14
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -140,7 +140,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 11 <CustomerRespawn>k__BackingField: 11
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1300 <RequiredExp>k__BackingField: 400
<WaitTime>k__BackingField: 15 <WaitTime>k__BackingField: 15
<HurryTime>k__BackingField: 13 <HurryTime>k__BackingField: 13
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -151,7 +151,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 11 <CustomerRespawn>k__BackingField: 11
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1400 <RequiredExp>k__BackingField: 400
<WaitTime>k__BackingField: 15 <WaitTime>k__BackingField: 15
<HurryTime>k__BackingField: 12 <HurryTime>k__BackingField: 12
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -162,7 +162,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 11 <CustomerRespawn>k__BackingField: 11
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1500 <RequiredExp>k__BackingField: 400
<WaitTime>k__BackingField: 15 <WaitTime>k__BackingField: 15
<HurryTime>k__BackingField: 11 <HurryTime>k__BackingField: 11
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -173,7 +173,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 11 <CustomerRespawn>k__BackingField: 11
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1600 <RequiredExp>k__BackingField: 400
<WaitTime>k__BackingField: 15 <WaitTime>k__BackingField: 15
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -184,7 +184,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 9 <CustomerRespawn>k__BackingField: 9
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1700 <RequiredExp>k__BackingField: 400
<WaitTime>k__BackingField: 15 <WaitTime>k__BackingField: 15
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -195,7 +195,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 9 <CustomerRespawn>k__BackingField: 9
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1800 <RequiredExp>k__BackingField: 500
<WaitTime>k__BackingField: 14 <WaitTime>k__BackingField: 14
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -206,7 +206,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 9 <CustomerRespawn>k__BackingField: 9
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 1900 <RequiredExp>k__BackingField: 500
<WaitTime>k__BackingField: 13 <WaitTime>k__BackingField: 13
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -217,7 +217,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 9 <CustomerRespawn>k__BackingField: 9
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2000 <RequiredExp>k__BackingField: 500
<WaitTime>k__BackingField: 12 <WaitTime>k__BackingField: 12
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -228,7 +228,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 9 <CustomerRespawn>k__BackingField: 9
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2100 <RequiredExp>k__BackingField: 500
<WaitTime>k__BackingField: 11 <WaitTime>k__BackingField: 11
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 8 <EatingTime>k__BackingField: 8
@ -239,7 +239,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 7 <CustomerRespawn>k__BackingField: 7
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2200 <RequiredExp>k__BackingField: 500
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 10 <HurryTime>k__BackingField: 10
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -250,7 +250,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 7 <CustomerRespawn>k__BackingField: 7
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2300 <RequiredExp>k__BackingField: 600
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 9 <HurryTime>k__BackingField: 9
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -261,7 +261,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 7 <CustomerRespawn>k__BackingField: 7
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2400 <RequiredExp>k__BackingField: 600
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 8 <HurryTime>k__BackingField: 8
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -272,7 +272,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 7 <CustomerRespawn>k__BackingField: 7
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2500 <RequiredExp>k__BackingField: 600
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 7 <HurryTime>k__BackingField: 7
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -283,7 +283,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 7 <CustomerRespawn>k__BackingField: 7
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2600 <RequiredExp>k__BackingField: 600
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 6 <HurryTime>k__BackingField: 6
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -294,7 +294,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2700 <RequiredExp>k__BackingField: 600
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -305,7 +305,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2800 <RequiredExp>k__BackingField: 700
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -316,7 +316,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 2900 <RequiredExp>k__BackingField: 700
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -327,7 +327,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3000 <RequiredExp>k__BackingField: 700
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -338,7 +338,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3100 <RequiredExp>k__BackingField: 700
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -349,7 +349,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3200 <RequiredExp>k__BackingField: 700
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -360,7 +360,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3300 <RequiredExp>k__BackingField: 800
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -371,7 +371,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3400 <RequiredExp>k__BackingField: 800
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -382,7 +382,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3500 <RequiredExp>k__BackingField: 800
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -393,7 +393,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3600 <RequiredExp>k__BackingField: 800
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -404,7 +404,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3700 <RequiredExp>k__BackingField: 800
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -415,7 +415,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3800 <RequiredExp>k__BackingField: 900
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -426,7 +426,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 3900 <RequiredExp>k__BackingField: 900
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -437,7 +437,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 4000 <RequiredExp>k__BackingField: 900
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6
@ -448,7 +448,7 @@ MonoBehaviour:
<CustomerRespawn>k__BackingField: 5 <CustomerRespawn>k__BackingField: 5
<Gold>k__BackingField: 100 <Gold>k__BackingField: 100
<Exp>k__BackingField: 100 <Exp>k__BackingField: 100
<RequiredExp>k__BackingField: 4100 <RequiredExp>k__BackingField: 900
<WaitTime>k__BackingField: 10 <WaitTime>k__BackingField: 10
<HurryTime>k__BackingField: 5 <HurryTime>k__BackingField: 5
<EatingTime>k__BackingField: 6 <EatingTime>k__BackingField: 6

View File

@ -13,7 +13,7 @@ MonoBehaviour:
m_Name: StageData m_Name: StageData
m_EditorClassIdentifier: m_EditorClassIdentifier:
<WaitTimeInStarted>k__BackingField: 5 <WaitTimeInStarted>k__BackingField: 5
<VomitingPercent>k__BackingField: 100 <VomitingPercent>k__BackingField: 10
<VomitingWaitTime>k__BackingField: 30 <VomitingWaitTime>k__BackingField: 30
<DirtyTablePercent>k__BackingField: 100 <DirtyTablePercent>k__BackingField: 20
<DirtyTableWaitTime>k__BackingField: 30 <DirtyTableWaitTime>k__BackingField: 30

View File

@ -0,0 +1,28 @@
using BlueWater.Interfaces;
using UnityEngine;
namespace BlueWater
{
public class StateMachineController<T> where T : MonoBehaviour
{
private IStateMachine<T> _currentState;
public StateMachineController(T character, IStateMachine<T> startState)
{
_currentState = startState;
_currentState.EnterState(character);
}
public void UpdateState(T character)
{
_currentState.UpdateState(character);
}
public void TransitionToState(IStateMachine<T> newState, T character)
{
_currentState.ExitState(character);
_currentState = newState;
_currentState.EnterState(character);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: dd7c16a583bfb8d4b91efffa6a51696d

View File

@ -2,6 +2,9 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using BlueWater.Npcs.Crews; using BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Bartender;
using BlueWater.Npcs.Crews.Cleaner;
using BlueWater.Npcs.Crews.Server;
using BlueWater.Npcs.Customers; using BlueWater.Npcs.Customers;
using BlueWater.Utility; using BlueWater.Utility;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
@ -135,7 +138,7 @@ namespace BlueWater.Tycoons
{ {
if (orderedCustomer.IsReceivedItem) yield break; if (orderedCustomer.IsReceivedItem) yield break;
var orderedCocktailIngredients = orderedCustomer.OrderedCocktailData.GetValidIngredients(); var orderedCocktailIngredients = orderedCustomer.OrderedCocktailData.ValidIngredients;
if (!tycoonIngredientController.IsMakingCocktail(orderedCocktailIngredients)) break; if (!tycoonIngredientController.IsMakingCocktail(orderedCocktailIngredients)) break;
if (element.MyBartenderTable.CurrentPickupItem != null || element.IsOnMission) continue; if (element.MyBartenderTable.CurrentPickupItem != null || element.IsOnMission) continue;

View File

@ -29,6 +29,7 @@ namespace BlueWater.Tycoons
private CustomerTableController _customerTableController; private CustomerTableController _customerTableController;
private Coroutine _findEmptySeatCoroutineInstance; private Coroutine _findEmptySeatCoroutineInstance;
private int _instanceCount;
private void Start() private void Start()
{ {
@ -49,6 +50,8 @@ namespace BlueWater.Tycoons
var currentLevelData = TycoonManager.Instance.GetCurrentLevelData(); var currentLevelData = TycoonManager.Instance.GetCurrentLevelData();
var newCustomer = Instantiate(_customerPrefab, _customerSpawnTransform.position, Quaternion.identity); var newCustomer = Instantiate(_customerPrefab, _customerSpawnTransform.position, Quaternion.identity);
newCustomer.Initialize(currentLevelData, _customerSpawnTransform); newCustomer.Initialize(currentLevelData, _customerSpawnTransform);
newCustomer.gameObject.name = $"Customer (Clone) {_instanceCount}";
_instanceCount++;
RegisterCustomer(newCustomer); RegisterCustomer(newCustomer);
return newCustomer; return newCustomer;
@ -120,9 +123,9 @@ namespace BlueWater.Tycoons
{ {
foreach (var element in InstanceCustomers) foreach (var element in InstanceCustomers)
{ {
if (servingTableItem.Idx != element.OrderedCocktailData.Idx) continue; if (!element || element.IsReceivedItem || element.IsMatchedServer) continue;
if (element.IsMatchedServer) continue; if (servingTableItem.Idx != element.OrderedCocktailData.Idx) continue;
return element; return element;
} }

View File

@ -115,7 +115,7 @@ namespace BlueWater
private bool _isShowingPanel; private bool _isShowingPanel;
private bool _isPouring; private bool _isPouring;
private bool _isCompleted; private bool _isCompleted;
private float _startTime = float.PositiveInfinity; private float _elapsedTime = float.PositiveInfinity;
private int _instanceLiquidCount; private int _instanceLiquidCount;
private float _currentLiquidAmount; private float _currentLiquidAmount;
private float _liquidReachedTime; private float _liquidReachedTime;
@ -182,7 +182,8 @@ namespace BlueWater
return; return;
} }
if (Time.time - _startTime >= _timeInterval) _elapsedTime += Time.deltaTime;
if (_elapsedTime >= _timeInterval)
{ {
switch (currentBarrel.GetLiquidData().Type) switch (currentBarrel.GetLiquidData().Type)
{ {
@ -205,25 +206,9 @@ namespace BlueWater
} }
currentBarrel.Consume(1); currentBarrel.Consume(1);
_startTime = Time.time; _elapsedTime -= _timeInterval;
} }
} }
// else
// {
// if (_instanceLiquidCount <= 0) return;
//
// var playerPosition = _tycoonPlayer.transform.position;
// var playerScreenPosition = TycoonCameraManager.Instance.MainCamera.WorldToScreenPoint(playerPosition);
// var panelWorldPosition = _overlayCamera.ScreenToWorldPoint(new Vector3(playerScreenPosition.x,
// playerScreenPosition.y, _overlayCamera.nearClipPlane));
// panelWorldPosition += _endPositionOffset;
//
// if (_activeLiquidDatas.Count == 0 && _activeGarnishDatas.Count == 0)
// {
// _liquidPanel.transform.DOScale(_endScale, _moveDuration).SetEase(Ease.Linear);
// _liquidPanel.transform.DOMove(panelWorldPosition, _moveDuration).SetEase(Ease.Linear);
// }
// }
if (_liquidReachedTime + _colorLerpSpeed >= Time.time) if (_liquidReachedTime + _colorLerpSpeed >= Time.time)
{ {
@ -359,7 +344,7 @@ namespace BlueWater
EventManager.InvokeCocktailStarted(); EventManager.InvokeCocktailStarted();
} }
_startTime = Time.time; _elapsedTime = 0f;
_isPouring = true; _isPouring = true;
// To Center 이동 코루틴이 활성화 중이지 않을 때 // To Center 이동 코루틴이 활성화 중이지 않을 때
@ -425,7 +410,7 @@ namespace BlueWater
// 모든 칵테일 데이터를 순회하면서 조건에 맞는 칵테일 찾기 // 모든 칵테일 데이터를 순회하면서 조건에 맞는 칵테일 찾기
foreach (var cocktailData in cocktailDatas.Values) foreach (var cocktailData in cocktailDatas.Values)
{ {
var validIngredients = cocktailData.GetValidIngredients(); var validIngredients = cocktailData.ValidIngredients;
// 조건 1: 재료 개수 동일 체크 // 조건 1: 재료 개수 동일 체크
if (validIngredients.Count != currentCocktailIngredients.Count) if (validIngredients.Count != currentCocktailIngredients.Count)
@ -621,6 +606,8 @@ namespace BlueWater
_liquidPanel.SetActive(false); _liquidPanel.SetActive(false);
} }
public int GetMaxLiquidCount() => _maxLiquidCount;
#endregion #endregion
} }
} }

View File

@ -66,7 +66,7 @@ namespace BlueWater.Tycoons
foreach (var element in allCocktails.Values) foreach (var element in allCocktails.Values)
{ {
var requiredIngredients = element.GetValidIngredients().Select(ingredient => ingredient.Idx).ToList(); var requiredIngredients = element.ValidIngredients.Select(ingredient => ingredient.Idx).ToList();
// 필요한 재료들이 모두 활성화된 재료 목록에 포함되어 있는지 확인 // 필요한 재료들이 모두 활성화된 재료 목록에 포함되어 있는지 확인
if (requiredIngredients.All(activeIngredientsIdx.Contains)) if (requiredIngredients.All(activeIngredientsIdx.Contains))

View File

@ -137,6 +137,14 @@ namespace BlueWater
camera.transparencySortMode = TransparencySortMode.CustomAxis; camera.transparencySortMode = TransparencySortMode.CustomAxis;
camera.transparencySortAxis = _transparencySortAxis; camera.transparencySortAxis = _transparencySortAxis;
} }
[Button("테스트용")]
private void Test()
{
var camera = Camera.main;
camera.transparencySortMode = TransparencySortMode.CustomAxis;
camera.transparencySortAxis = new Vector3(0, Mathf.Sin(Mathf.Deg2Rad * 40), Mathf.Cos(Mathf.Deg2Rad * 40));
}
#endregion #endregion
} }

View File

@ -170,14 +170,6 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: BartenderTable value: BartenderTable
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9659258
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}
propertyPath: m_LocalRotation.x
value: 0.2588191
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3} - target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}
propertyPath: m_LocalEulerAnglesHint.x propertyPath: m_LocalEulerAnglesHint.x
value: 30 value: 30

View File

@ -139,14 +139,6 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: ServingTable value: ServingTable
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9659258
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}
propertyPath: m_LocalRotation.x
value: 0.2588191
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3} - target: {fileID: 7438534416270888028, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}
propertyPath: m_LocalEulerAnglesHint.x propertyPath: m_LocalEulerAnglesHint.x
value: 30 value: 30
@ -256,7 +248,7 @@ MonoBehaviour:
<InteractionRadius>k__BackingField: 0.7 <InteractionRadius>k__BackingField: 0.7
<InteractionMessage>k__BackingField: <InteractionMessage>k__BackingField:
IsOpened: 0 IsOpened: 0
_cocktailGlassImage: {fileID: 535721072425912087} CocktailGlassImage: {fileID: 535721072425912087}
--- !u!4 &5927803667513949971 stripped --- !u!4 &5927803667513949971 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 4011269187381704965, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3} m_CorrespondingSourceObject: {fileID: 4011269187381704965, guid: 3f9f846a7f237924e97c9acf370d991d, type: 3}

View File

@ -207,7 +207,7 @@ MonoBehaviour:
<InteractionCanvas>k__BackingField: {fileID: 0} <InteractionCanvas>k__BackingField: {fileID: 0}
<OutlineMaterial>k__BackingField: {fileID: 2100000, guid: 9db92b3ac1f276e42ae7d7bcfbbca549, type: 2} <OutlineMaterial>k__BackingField: {fileID: 2100000, guid: 9db92b3ac1f276e42ae7d7bcfbbca549, type: 2}
<EnableInteraction>k__BackingField: 1 <EnableInteraction>k__BackingField: 1
<InteractionRadius>k__BackingField: 0.3 <InteractionRadius>k__BackingField: 0.5
<InteractionMessage>k__BackingField: "\uCE58\uC6B0\uAE30" <InteractionMessage>k__BackingField: "\uCE58\uC6B0\uAE30"
IsOpened: 0 IsOpened: 0
_interactionHoldingTime: 3 _interactionHoldingTime: 3

View File

@ -0,0 +1,26 @@
BillgeRope.png
size:1449,720
filter:Linear,Linear
Gear
bounds:1096,368,350,351
rotate:90
Gear2
bounds:744,366,350,352
Handle
bounds:1202,203,162,163
Rope
bounds:2,364,740,354
Rope2
bounds:2,7,728,355
SmallGear
bounds:1189,7,83,83
SmallGear2
bounds:1202,92,109,110
rotate:90
SmallGear3
bounds:1366,282,84,81
rotate:90
SmallRope
bounds:744,184,456,180
SmallRope2
bounds:732,2,455,180

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e766c251b86f5284289007c365c5711c
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 KiB

View File

@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 96e54b1b19146ab48a5653fcef2157c1
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0db0e54162d09e4418b99615e805310f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a6b194f808b1af6499c93410e504af42, type: 3}
m_Name: BillgeRope_Atlas
m_EditorClassIdentifier:
textureLoadingMode: 0
onDemandTextureLoader: {fileID: 0}
atlasFile: {fileID: 4900000, guid: e766c251b86f5284289007c365c5711c, type: 3}
materials:
- {fileID: 2100000, guid: b5a894fc9a151b344a9c895424eeb9c3, type: 2}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9691d92a66d3a314ebe276a89b16a278
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,46 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: BillgeRope_Material
m_Shader: {fileID: 4800000, guid: b77e51f117177954ea863bdb422344fb, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _STRAIGHT_ALPHA_INPUT
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 96e54b1b19146ab48a5653fcef2157c1, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Cutoff: 0.1
- _DoubleSidedLighting: 0
- _LightAffectsAdditive: 0
- _ReceiveShadows: 0
- _StencilComp: 8
- _StencilRef: 1
- _StraightAlphaInput: 1
- _TintBlack: 0
- _ZWrite: 0
m_Colors:
- _Black: {r: 0, g: 0, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b5a894fc9a151b344a9c895424eeb9c3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More