0.3.2.1 버전 업데이트

This commit is contained in:
NTG_Lenovo 2024-10-22 21:41:31 +09:00
parent 517285cbc3
commit 10a7c01066
122 changed files with 1244 additions and 1018 deletions

View File

@ -2803,71 +2803,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2798544366308408093, guid: 9ce588004bafc1e4e9617fdaa2d77c8d, type: 3}
m_PrefabInstance: {fileID: 5626406452199475265}
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
GameObject:
m_ObjectHideFlags: 0
@ -10511,8 +10446,8 @@ MonoBehaviour:
_pushPower: 50
_liquidObject: {fileID: -7612237390858616641, guid: 231c2f369e2946745a955eb49243702b, type: 3}
_garnishObject: {fileID: 5803694563079548352, guid: f051d09e1e3043d4285ae8e0ff4c4f12, type: 3}
_liquidsPerSecond: 80
_maxLiquidCount: 400
_liquidsPerSecond: 100
_maxLiquidCount: 300
_colorLerpSpeed: 0.5
_colorIntensity: 2
_objectPoolCount: 1000
@ -11456,71 +11391,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_HorizontalFit: 2
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
GameObject:
m_ObjectHideFlags: 0
@ -15005,71 +14875,6 @@ Transform:
- {fileID: 181975870}
m_Father: {fileID: 1665075868}
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
GameObject:
m_ObjectHideFlags: 0
@ -16258,20 +16063,16 @@ RectTransform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434161266}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0}
m_LocalScale: {x: 1.2, y: 1.2, z: 1.2}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 1544446791}
- {fileID: 1370164787}
- {fileID: 1613389274}
- {fileID: 1092164770}
- {fileID: 214974223}
m_Father: {fileID: 1737345938}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
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_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1434161268
@ -16294,7 +16095,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
skeletonDataAsset: {fileID: 11400000, guid: 308d2d58ac0aafc4b8a391c601b0d398, type: 2}
skeletonDataAsset: {fileID: 11400000, guid: f92d39c8c0ff1414790be3559bcfb1b0, type: 2}
additiveMaterial: {fileID: 2100000, guid: 2e8245019faeb8c43b75f9ca3ac8ee34, type: 2}
multiplyMaterial: {fileID: 2100000, guid: e74a1f8978a7da348a721508d0d58834, type: 2}
screenMaterial: {fileID: 2100000, guid: bab24c479f34eec45be6ea8595891569, type: 2}
@ -16317,10 +16118,6 @@ MonoBehaviour:
allowMultipleCanvasRenderers: 1
canvasRenderers:
- {fileID: 1544446793}
- {fileID: 1370164789}
- {fileID: 1613389276}
- {fileID: 1092164772}
- {fileID: 214974225}
separatorSlotNames: []
enableSeparatorSlots: 0
separatorParts: []
@ -18362,71 +18159,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1604407184}
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
GameObject:
m_ObjectHideFlags: 0

View File

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

View File

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

View File

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

View File

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

View File

@ -33,9 +33,15 @@ namespace BlueWater.BehaviorTrees.Actions
if (!_crew.CanInteractionPosition()) return TaskStatus.Running;
_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 BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Server;
using UnityEngine;
namespace BlueWater.BehaviorTrees.Actions
{
@ -15,7 +16,11 @@ namespace BlueWater.BehaviorTrees.Actions
public override void OnStart()
{
_serverCrew.CrewInteraction = _serverCrew.OrderedCustomer;
if (_serverCrew.OrderedCustomer && _serverCrew.OrderedCustomer.CanInteractionCrew())
{
_serverCrew.OrderedCustomer.IsMatchedServer = true;
}
if (_serverCrew.CrewInteraction != null)
{
_serverCrew.AIMovement.Move(_serverCrew.CrewInteraction.CenterTransform.position);
@ -27,17 +32,22 @@ namespace BlueWater.BehaviorTrees.Actions
if (!_serverCrew.CrewInteraction.CanInteractionCrew())
{
_serverCrew.AIMovement.StopMove();
_serverCrew.OrderedCustomer = null;
_serverCrew.CrewInteraction = null;
_serverCrew.CanNotServing();
return TaskStatus.Failure;
}
if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running;
_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 BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Server;
namespace BlueWater.BehaviorTrees.Actions
{
@ -25,7 +25,7 @@ namespace BlueWater.BehaviorTrees.Actions
{
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.ResetMission();
@ -33,11 +33,17 @@ namespace BlueWater.BehaviorTrees.Actions
}
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.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 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()
{
base.ResetMission();
CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
OrderedCustomer = null;
IsMakingCocktail = false;
}
public override bool IsCompletedMission()
{
return !OrderedCustomer && !IsMakingCocktail;
}
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 class Crew : MonoBehaviour
public abstract class Crew : MonoBehaviour
{
// Variables
@ -76,25 +76,11 @@ namespace BlueWater.Npcs.Crews
}
}
public ICrewInteraction CrewInteraction { get; set; }
public bool IsOnMission { get; set; }
public bool IsCleaningFloor { get; set; }
public bool IsCleaningTable { get; set; }
public bool IsServing { get; set; }
public bool IsMakingCocktail { get; set; }
public ICrewInteraction CrewInteraction { get; protected set; }
public bool IsOnMission { get; protected set; }
private IAstarAI _astarAi;
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
@ -109,7 +95,7 @@ namespace BlueWater.Npcs.Crews
protected virtual void Update()
{
CurrentState.UpdateState(this);
//CurrentAnimationState.UpdateState(this);
HandleMovement();
FlipVisualLook();
}
@ -141,17 +127,6 @@ namespace BlueWater.Npcs.Crews
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();
}
@ -194,29 +169,15 @@ namespace BlueWater.Npcs.Crews
BarkTrigger.OnUse();
}
public void TransitionToState(IState<Crew> newState)
{
CurrentState.ExitState(this);
CurrentState = newState;
CurrentState.EnterState(this);
}
public virtual void OnMission(ICrewInteraction crewInteraction)
{
CrewInteraction = crewInteraction;
CrewInteraction.OnInteractionCompleted += InteractionCompleted;
CrewInteraction.OnInteractionCompleted += ResetMission;
IsOnMission = true;
}
public virtual void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
IsCleaningFloor = false;
IsCleaningTable = false;
IsServing = false;
IsMakingCocktail = false;
}
public abstract void ResetMission();
public abstract bool IsCompletedMission();
public virtual bool CanInteractionPosition()
{
@ -227,13 +188,6 @@ namespace BlueWater.Npcs.Crews
CrewInteraction.InteractionRadius;
}
protected virtual void InteractionCompleted()
{
CrewInteraction.OnInteractionCompleted -= InteractionCompleted;
ResetMission();
}
#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.Items;
using BlueWater.Npcs.Crews;
using BlueWater.Npcs.Crews.Server;
using BlueWater.Players;
using BlueWater.Tycoons;
using BlueWater.Uis;
@ -144,12 +145,12 @@ namespace BlueWater.Npcs.Customers
private bool _isQuitting;
// State
public IState<Customer> CurrentState { get; private set; }
public IState<Customer> IdleState { get; private set; }
public IState<Customer> WalkingState { get; private set; }
public IState<Customer> HappyState { get; private set; }
public IState<Customer> UpsetState { get; private set; }
public IState<Customer> VomitState { get; private set; }
public StateMachineController<Customer> StateMachineController { get; private set; }
public IStateMachine<Customer> IdleState { get; private set; }
public IStateMachine<Customer> WalkingState { get; private set; }
public IStateMachine<Customer> HappyState { get; private set; }
public IStateMachine<Customer> UpsetState { get; private set; }
public IStateMachine<Customer> VomitState { get; private set; }
public event Action OnInteractionCompleted;
@ -171,7 +172,7 @@ namespace BlueWater.Npcs.Customers
private void Update()
{
CurrentState.UpdateState(this);
StateMachineController.UpdateState(this);
HandleMovement();
FlipVisualLook();
}
@ -213,14 +214,13 @@ namespace BlueWater.Npcs.Customers
CurrentLevelData = levelData;
_spawnTransform = spawnTransform;
IdleState = new IdleState();
WalkingState = new WalkingState();
HappyState = new HappyState();
UpsetState = new UpsetState();
VomitState = new VomitState();
CurrentState = IdleState;
CurrentState.EnterState(this);
IdleState = new IdleStateMachine();
WalkingState = new WalkingStateMachine();
HappyState = new HappyStateMachine();
UpsetState = new UpsetStateMachine();
VomitState = new VomitStateMachine();
StateMachineController = new StateMachineController<Customer>(this, IdleState);
BehaviorTree.EnableBehavior();
}
@ -273,10 +273,9 @@ namespace BlueWater.Npcs.Customers
public void ServedItem(CocktailData cocktailData)
{
OrderedCocktailData = cocktailData;
CurrentTableSeat.SetFood(OrderedCocktailData.Sprite);
CurrentTableSeat.SetFood();
BalloonUi.ReceiveItem(cocktailData);
TransitionToState(IsOrderedSucceed ? HappyState : UpsetState);
StateMachineController.TransitionToState(IsOrderedSucceed ? HappyState : UpsetState, this);
}
public void Interaction()
@ -368,13 +367,6 @@ namespace BlueWater.Npcs.Customers
_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)
{
if (string.IsNullOrEmpty(conversation)) return;
@ -420,7 +412,7 @@ namespace BlueWater.Npcs.Customers
public void Vomit()
{
AIMovement.StopMove();
TransitionToState(VomitState);
StateMachineController.TransitionToState(VomitState, this);
}
public void InstanceVomit()
@ -428,7 +420,7 @@ namespace BlueWater.Npcs.Customers
var spawnPosition = transform.position + new Vector3(0f, 0f, 0.1f);
Instantiate(_vomiting, spawnPosition, _vomiting.transform.rotation);
IsVomited = true;
TransitionToState(IdleState);
StateMachineController.TransitionToState(IdleState, this);
}
public void CheckOut()
@ -460,7 +452,7 @@ namespace BlueWater.Npcs.Customers
CurrentTableSeat = null;
}
AIMovement.Move(_spawnTransform.position);
TransitionToState(WalkingState);
StateMachineController.TransitionToState(WalkingState, this);
}
#endregion

View File

@ -2,7 +2,7 @@ using BlueWater.Interfaces;
namespace BlueWater.Npcs.Customers
{
public class HappyState : IState<Customer>
public class HappyStateMachine : IStateMachine<Customer>
{
public void EnterState(Customer character)
{
@ -13,7 +13,7 @@ namespace BlueWater.Npcs.Customers
{
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
{
public class IdleState : IState<Customer>
public class IdleStateMachine : IStateMachine<Customer>
{
public void EnterState(Customer character)
{
@ -25,7 +25,7 @@ namespace BlueWater.Npcs.Customers
{
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
{
public class UpsetState : IState<Customer>
public class UpsetStateMachine : IStateMachine<Customer>
{
public void EnterState(Customer character)
{
@ -13,7 +13,7 @@ namespace BlueWater.Npcs.Customers
{
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
{
public class VomitState : IState<Customer>
public class VomitStateMachine : IStateMachine<Customer>
{
private bool _isVomiting;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,8 @@
using System;
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 UnityEngine;

View File

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

View File

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

View File

@ -5,6 +5,15 @@ namespace BlueWater.Items
[CreateAssetMenu(fileName = "CocktailDataTable", menuName = "ScriptableObjects/CocktailDataTable")]
public class CocktailDataSo : DataSo<CocktailData>
{
protected override void OnEnable()
{
base.OnEnable();
var maxLiquidAmount = FindAnyObjectByType<LiquidController>().GetMaxLiquidCount();
foreach (var element in _datas.Values)
{
element.ValidIngredients = element.GetValidIngredients(maxLiquidAmount);
}
}
}
}

View File

@ -6,12 +6,20 @@ namespace BlueWater.Items
public class CocktailIngredient
{
public string Idx { get; set; }
public int Ratio { get; set; }
public int Amount { get; set; }
public CocktailIngredient(string idx, int amount)
{
Idx = idx;
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;
private void OnEnable()
protected virtual void OnEnable()
{
InitializeDictionary();
}

View File

@ -4,9 +4,28 @@ namespace BlueWater.Tycoons
{
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()
{
return false;
return CurrentPickupItem != null && !CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpCocktail();
}
public override bool CanInteractionCrew()
{
return CurrentPickupItem != null && _orderedCustomer != null;
}
public void CompleteMakingCocktail(IPickup cocktailData)

View File

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

View File

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

View File

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

View File

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

View File

@ -13,7 +13,7 @@ MonoBehaviour:
m_Name: StageData
m_EditorClassIdentifier:
<WaitTimeInStarted>k__BackingField: 5
<VomitingPercent>k__BackingField: 100
<VomitingPercent>k__BackingField: 10
<VomitingWaitTime>k__BackingField: 30
<DirtyTablePercent>k__BackingField: 100
<DirtyTablePercent>k__BackingField: 20
<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.Linq;
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.Utility;
using Sirenix.OdinInspector;
@ -135,7 +138,7 @@ namespace BlueWater.Tycoons
{
if (orderedCustomer.IsReceivedItem) yield break;
var orderedCocktailIngredients = orderedCustomer.OrderedCocktailData.GetValidIngredients();
var orderedCocktailIngredients = orderedCustomer.OrderedCocktailData.ValidIngredients;
if (!tycoonIngredientController.IsMakingCocktail(orderedCocktailIngredients)) break;
if (element.MyBartenderTable.CurrentPickupItem != null || element.IsOnMission) continue;

View File

@ -29,6 +29,7 @@ namespace BlueWater.Tycoons
private CustomerTableController _customerTableController;
private Coroutine _findEmptySeatCoroutineInstance;
private int _instanceCount;
private void Start()
{
@ -49,6 +50,8 @@ namespace BlueWater.Tycoons
var currentLevelData = TycoonManager.Instance.GetCurrentLevelData();
var newCustomer = Instantiate(_customerPrefab, _customerSpawnTransform.position, Quaternion.identity);
newCustomer.Initialize(currentLevelData, _customerSpawnTransform);
newCustomer.gameObject.name = $"Customer (Clone) {_instanceCount}";
_instanceCount++;
RegisterCustomer(newCustomer);
return newCustomer;
@ -120,9 +123,9 @@ namespace BlueWater.Tycoons
{
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;
}

View File

@ -115,7 +115,7 @@ namespace BlueWater
private bool _isShowingPanel;
private bool _isPouring;
private bool _isCompleted;
private float _startTime = float.PositiveInfinity;
private float _elapsedTime = float.PositiveInfinity;
private int _instanceLiquidCount;
private float _currentLiquidAmount;
private float _liquidReachedTime;
@ -182,7 +182,8 @@ namespace BlueWater
return;
}
if (Time.time - _startTime >= _timeInterval)
_elapsedTime += Time.deltaTime;
if (_elapsedTime >= _timeInterval)
{
switch (currentBarrel.GetLiquidData().Type)
{
@ -205,25 +206,9 @@ namespace BlueWater
}
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)
{
@ -359,7 +344,7 @@ namespace BlueWater
EventManager.InvokeCocktailStarted();
}
_startTime = Time.time;
_elapsedTime = 0f;
_isPouring = true;
// To Center 이동 코루틴이 활성화 중이지 않을 때
@ -425,7 +410,7 @@ namespace BlueWater
// 모든 칵테일 데이터를 순회하면서 조건에 맞는 칵테일 찾기
foreach (var cocktailData in cocktailDatas.Values)
{
var validIngredients = cocktailData.GetValidIngredients();
var validIngredients = cocktailData.ValidIngredients;
// 조건 1: 재료 개수 동일 체크
if (validIngredients.Count != currentCocktailIngredients.Count)
@ -621,6 +606,8 @@ namespace BlueWater
_liquidPanel.SetActive(false);
}
public int GetMaxLiquidCount() => _maxLiquidCount;
#endregion
}
}

View File

@ -66,7 +66,7 @@ namespace BlueWater.Tycoons
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))

View File

@ -137,6 +137,14 @@ namespace BlueWater
camera.transparencySortMode = TransparencySortMode.CustomAxis;
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
}

View File

@ -170,14 +170,6 @@ PrefabInstance:
propertyPath: m_Name
value: BartenderTable
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}
propertyPath: m_LocalEulerAnglesHint.x
value: 30

View File

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

View File

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

View File

@ -0,0 +1,31 @@
%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: f1b3b4b945939a54ea0b23d3396115fb, type: 3}
m_Name: BillgeRope_SkeletonData
m_EditorClassIdentifier:
atlasAssets:
- {fileID: 11400000, guid: 9691d92a66d3a314ebe276a89b16a278, type: 2}
scale: 0.01
skeletonJSON: {fileID: 4900000, guid: 0db0e54162d09e4418b99615e805310f, type: 3}
isUpgradingBlendModeMaterials: 0
blendModeMaterials:
requiresBlendModeMaterials: 0
applyAdditiveMaterial: 1
additiveMaterials: []
multiplyMaterials: []
screenMaterials: []
skeletonDataModifiers: []
fromAnimation: []
toAnimation: []
duration: []
defaultMix: 0.2
controller: {fileID: 0}

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