Init commit

This commit is contained in:
Nam Tae Gun 2024-10-16 03:01:16 +09:00
parent 07c0e21a57
commit 31ea50c10a
33 changed files with 1611 additions and 246 deletions

View File

@ -2419,6 +2419,37 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &181975869
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 181975870}
m_Layer: 0
m_Name: BartenderSpawn
m_TagString: Untagged
m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &181975870
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 181975869}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -7}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1360757596}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &186139407
GameObject:
m_ObjectHideFlags: 0
@ -4327,8 +4358,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7ab08469541b2aa45818fa36bbcb9cf7, type: 3}
m_Name:
m_EditorClassIdentifier:
_persistent: 0
<CustomerDataSo>k__BackingField: {fileID: 11400000, guid: e6ce9d58057b580479880585947969d8, type: 2}
_customerPrefab: {fileID: -2302002259734456648, guid: 23195e611c71ad44b8a1ccb2b6e0efe5, type: 3}
_customerSpawnTransform: {fileID: 1038321203}
_checkEmptySeatInterval: 0.5
@ -5272,6 +5301,37 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 444009244}
m_CullTransparentMesh: 1
--- !u!1 &473619455
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 473619456}
m_Layer: 0
m_Name: ServerSpawn
m_TagString: Untagged
m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &473619456
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 473619455}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -7}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1360757596}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &510358306
GameObject:
m_ObjectHideFlags: 0
@ -9288,12 +9348,12 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 887608711}
serializedVersion: 2
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: -7}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1665075868}
m_Father: {fileID: 1360757596}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &891021167
GameObject:
@ -14334,6 +14394,40 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: bbb4e96b2ebafc246b85623c547a7d01, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1360757595
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1360757596}
m_Layer: 0
m_Name: Crews
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1360757596
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1360757595}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 887608712}
- {fileID: 473619456}
- {fileID: 181975870}
m_Father: {fileID: 1665075868}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1370164786
GameObject:
m_ObjectHideFlags: 0
@ -18444,7 +18538,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 887608712}
- {fileID: 1360757596}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1665075869
@ -18545,14 +18639,14 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_cleanerCrewPrefab: {fileID: 3226241112093390236, guid: fb1e288d64b813b4a9929ba9ece44956, type: 3}
_servingCrewPrefab: {fileID: 0}
_servingCrewPrefab: {fileID: 1745629821853633206, guid: b692f61d994a0b94cb92cf0f2d47cfb2, type: 3}
_bartenderCrewPrefab: {fileID: 0}
_cleanerCrewSpawnTransform: {fileID: 887608712}
_servingCrewSpawnTransform: {fileID: 0}
_bartenderCrewSpawnTransform: {fileID: 0}
_servingCrewSpawnTransform: {fileID: 473619456}
_bartenderCrewSpawnTransform: {fileID: 181975870}
<Crews>k__BackingField: []
<CleanerCrews>k__BackingField: []
<ServingCrews>k__BackingField: []
<ServerCrews>k__BackingField: []
<BartenderCrews>k__BackingField: []
--- !u!1 &1670140492
GameObject:

View File

@ -3,19 +3,19 @@ using BlueWater.Npcs.Crews;
namespace BlueWater.BehaviorTrees.Actions
{
[TaskCategory("Custom/Npc/Crew/Cleaner")]
public class CompleteCleaning : Action
[TaskCategory("Custom/Npc/Crew")]
public class CompleteMission : Action
{
private CleanerCrew _cleanerCrew;
private Crew _crew;
public override void OnAwake()
{
_cleanerCrew = GetComponent<CleanerCrew>();
_crew = GetComponent<Crew>();
}
public override TaskStatus OnUpdate()
{
if (_cleanerCrew.CrewInteraction == null && _cleanerCrew.IsCleaningFloor == false && _cleanerCrew.IsCleaningTable == false)
if (_crew.CrewInteraction == null)
{
return TaskStatus.Success;
}

View File

@ -3,26 +3,26 @@ using BlueWater.Npcs.Crews;
namespace BlueWater.BehaviorTrees.Actions
{
[TaskCategory("Custom/Npc/Crew/Cleaner")]
[TaskCategory("Custom/Npc/Crew")]
public class MoveToRandomPositionInRange : Action
{
private CleanerCrew _cleanerCrew;
private Crew _crew;
public override void OnAwake()
{
_cleanerCrew = GetComponent<CleanerCrew>();
_crew = GetComponent<Crew>();
}
public override void OnStart()
{
_cleanerCrew.AIMovement.MoveToRandomPositionInRange(10f);
_crew.AIMovement.MoveToRandomPositionInRange(10f);
}
public override TaskStatus OnUpdate()
{
if (_cleanerCrew.AIMovement.HasReachedDestination())
if (_crew.AIMovement.HasReachedDestination())
{
_cleanerCrew.AIMovement.StopMove();
_crew.AIMovement.StopMove();
return TaskStatus.Success;
}

View File

@ -1,21 +0,0 @@
using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews;
namespace BlueWater.BehaviorTrees.Actions
{
[TaskCategory("Custom/Npc/Crew/Cleaner")]
public class CheckCleaning : Conditional
{
private CleanerCrew _cleanerCrew;
public override void OnAwake()
{
_cleanerCrew = GetComponent<CleanerCrew>();
}
public override TaskStatus OnUpdate()
{
return _cleanerCrew.IsOnMission ? TaskStatus.Success : TaskStatus.Failure;
}
}
}

View File

@ -0,0 +1,21 @@
using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Npcs.Crews;
namespace BlueWater.BehaviorTrees.Actions
{
[TaskCategory("Custom/Npc/Crew")]
public class CheckOnMission : Conditional
{
private Crew _crew;
public override void OnAwake()
{
_crew = GetComponent<Crew>();
}
public override TaskStatus OnUpdate()
{
return _crew.IsOnMission ? TaskStatus.Success : TaskStatus.Failure;
}
}
}

View File

@ -3,43 +3,43 @@ using BlueWater.Npcs.Crews;
namespace BlueWater.BehaviorTrees.Actions
{
[TaskCategory("Custom/Npc/Crew/Cleaner")]
public class Cleaning : Conditional
[TaskCategory("Custom/Npc/Crew")]
public class OnMission : Conditional
{
private CleanerCrew _cleanerCrew;
private Crew _crew;
public override void OnAwake()
{
_cleanerCrew = GetComponent<CleanerCrew>();
_crew = GetComponent<Crew>();
}
public override void OnStart()
{
if (_cleanerCrew.CrewInteraction != null)
if (_crew.CrewInteraction != null)
{
_cleanerCrew.AIMovement.Move(_cleanerCrew.CrewInteraction.CenterTransform.position);
_crew.AIMovement.Move(_crew.CrewInteraction.CenterTransform.position);
}
}
public override TaskStatus OnUpdate()
{
if (_cleanerCrew.CrewInteraction == null)
if (_crew.CrewInteraction == null)
{
_cleanerCrew.AIMovement.StopMove();
_cleanerCrew.ResetMission();
_crew.AIMovement.StopMove();
_crew.ResetMission();
return TaskStatus.Failure;
}
if (!_cleanerCrew.CrewInteraction.CanInteractionCrew())
if (!_crew.CrewInteraction.CanInteractionCrew())
{
_cleanerCrew.AIMovement.StopMove();
_crew.AIMovement.StopMove();
return TaskStatus.Failure;
}
if (!_cleanerCrew.CanInteractionPosition()) return TaskStatus.Running;
if (!_crew.CanInteractionPosition()) return TaskStatus.Running;
_cleanerCrew.AIMovement.StopMove();
_cleanerCrew.CrewInteraction.InteractionCrew(_cleanerCrew);
_crew.AIMovement.StopMove();
_crew.CrewInteraction.InteractionCrew(_crew);
return TaskStatus.Success;
}

View File

@ -5,35 +5,6 @@ namespace BlueWater.Npcs.Crews
{
public class CleanerCrew: Crew
{
public void OnMission(ICrewInteraction crewInteraction)
{
CrewInteraction = crewInteraction;
CrewInteraction.OnInteractionCompleted += InteractionCompleted;
IsOnMission = true;
}
public void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
IsCleaningFloor = false;
IsCleaningTable = false;
}
public bool CanInteractionPosition()
{
if (CrewInteraction.CenterTransform == null) return false;
return AIMovement.HasReachedDestination() ||
Vector3.Distance(CrewInteraction.CenterTransform.position, transform.position) <=
CrewInteraction.InteractionRadius;
}
private void InteractionCompleted()
{
CrewInteraction.OnInteractionCompleted -= InteractionCompleted;
ResetMission();
}
}
}

View File

@ -197,6 +197,39 @@ namespace BlueWater.Npcs.Crews
CurrentState = newState;
CurrentState.EnterState(this);
}
public virtual void OnMission(ICrewInteraction crewInteraction)
{
CrewInteraction = crewInteraction;
CrewInteraction.OnInteractionCompleted += InteractionCompleted;
IsOnMission = true;
}
public virtual void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
IsCleaningFloor = false;
IsCleaningTable = false;
IsServing = false;
IsMakingCocktail = false;
}
public virtual bool CanInteractionPosition()
{
if (CrewInteraction.CenterTransform == null) return false;
return AIMovement.HasReachedDestination() ||
Vector3.Distance(CrewInteraction.CenterTransform.position, transform.position) <=
CrewInteraction.InteractionRadius;
}
protected virtual void InteractionCompleted()
{
CrewInteraction.OnInteractionCompleted -= InteractionCompleted;
ResetMission();
}
#endregion
}

View File

@ -1,8 +1,9 @@
using BlueWater.Interfaces;
using UnityEngine;
namespace BlueWater.Npcs.Crews
{
public class ServingCrew: Crew
public class ServerCrew: Crew
{
}

View File

@ -99,6 +99,9 @@ namespace BlueWater.Npcs.Customers
[field: SerializeField]
public CocktailData OrderedCocktailData { get; private set; }
[field: SerializeField]
public Bill CurrentBill { get; set; }
[field: SerializeField]
public bool IsReceivedItem { get; set; }
@ -179,9 +182,7 @@ namespace BlueWater.Npcs.Customers
private void OnDestroy()
{
if (_isQuitting) return;
CustomerManager.Instance.UnregisterCustomer(this);
EventManager.InvokeDestroyCustomer(this);
}
#endregion

View File

@ -142,6 +142,12 @@ namespace BlueWater
OnCreateCustomer?.Invoke();
}
public static Action<Customer> OnDestroyCustomer;
public static void InvokeDestroyCustomer(Customer customer)
{
OnDestroyCustomer?.Invoke(customer);
}
// 손님이 칵테일 주문 이벤트
public static Action<Customer> OnOrderedCocktail;
public static void InvokeOrderedCocktail(Customer orderedCustomer)
@ -170,10 +176,10 @@ namespace BlueWater
OnCreateCleanerCrew?.Invoke();
}
public static Func<ServingCrew> OnCreateServingCrew;
public static void InvokeCreateServingCrew()
public static Func<ServerCrew> OnCreateServerCrew;
public static void InvokeCreateServerCrew()
{
OnCreateServingCrew?.Invoke();
OnCreateServerCrew?.Invoke();
}
public static Func<BartenderCrew> OnCreateBartenderCrew;

View File

@ -1,16 +1,36 @@
using System;
using BlueWater.Interfaces;
using BlueWater.Npcs.Crews;
using BlueWater.Utility;
using UnityEngine;
namespace BlueWater.Tycoons
{
public class ServingTable : InteractionFurniture
public class ServingTable : InteractionFurniture, ICrewInteraction
{
[SerializeField]
private SpriteRenderer _cocktailGlassImage;
// 서빙 테이블 기준 아이템이 있는지 없는지
private IPickup _currentPickupItem;
public IPickup CurrentPickupItem
{
get => _currentPickupItem;
set
{
_currentPickupItem = value;
if (_currentPickupItem != null)
{
var crewController = TycoonManager.Instance.CrewController;
Utils.StartUniqueCoroutine(this, ref _findServerCrewInstance,
crewController.FindClosestCrewCoroutine(CenterTransform.position, crewController.ServerCrews, crew => crew.OnMission(this)));
}
}
}
private Material _originalCocktailGlassMaterial;
private Coroutine _findServerCrewInstance;
protected override void Awake()
{
@ -22,23 +42,23 @@ namespace BlueWater.Tycoons
public override void Interaction()
{
// 테이블의 칵테일을 가져가는 경우
if (_currentPickupItem != null)
if (CurrentPickupItem != null)
{
EventManager.InvokeTakeFromServingTable();
CurrentTycoonPlayer.TycoonPickupHandler.PickupItem(_currentPickupItem);
CurrentTycoonPlayer.InteractionCanvas.BalloonUi.SetItemImage(_currentPickupItem);
CurrentTycoonPlayer.TycoonPickupHandler.PickupItem(CurrentPickupItem);
CurrentTycoonPlayer.InteractionCanvas.BalloonUi.SetItemImage(CurrentPickupItem);
_cocktailGlassImage.enabled = false;
InteractionCanvas.BalloonUi.DiscardItem();
_currentPickupItem = null;
CurrentPickupItem = null;
}
// 테이블에 칵테일을 놓는 경우
else
{
EventManager.InvokePlaceOnServingTable();
_currentPickupItem = CurrentTycoonPlayer.TycoonPickupHandler.GetCurrentPickupItem();
CurrentTycoonPlayer.TycoonPickupHandler.GiveItem(_currentPickupItem);
CurrentPickupItem = CurrentTycoonPlayer.TycoonPickupHandler.GetCurrentPickupItem();
CurrentTycoonPlayer.TycoonPickupHandler.GiveItem(CurrentPickupItem);
CurrentTycoonPlayer.InteractionCanvas.BalloonUi.DiscardItem();
InteractionCanvas.BalloonUi.SetItemImage(_currentPickupItem);
InteractionCanvas.BalloonUi.SetItemImage(CurrentPickupItem);
_cocktailGlassImage.enabled = true;
}
}
@ -47,13 +67,13 @@ namespace BlueWater.Tycoons
{
// 1. 테이블에 칵테일이 있고, 플레이어가 칵테일을 들고 있지 않은 경우
// 2. 테이블에 칵테일이 없고, 플레이어가 칵테일을 들고 있는 경우 (정상적인 칵테일만)
return (_currentPickupItem != null && !CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpCocktail())||
(_currentPickupItem == null && CurrentTycoonPlayer.TycoonPickupHandler.IsServablePickupItem());
return (CurrentPickupItem != null && !CurrentTycoonPlayer.TycoonPickupHandler.IsPickedUpCocktail())||
(CurrentPickupItem == null && CurrentTycoonPlayer.TycoonPickupHandler.IsServablePickupItem());
}
public override void ShowInteractionUi()
{
InteractionMessage = _currentPickupItem != null ? "음료 들기" : "음료 내려놓기";
InteractionMessage = CurrentPickupItem != null ? "음료 들기" : "음료 내려놓기";
base.ShowInteractionUi();
_cocktailGlassImage.material = OutlineMaterial;
@ -65,5 +85,22 @@ namespace BlueWater.Tycoons
_cocktailGlassImage.material = _originalCocktailGlassMaterial;
}
public void InteractionCrew(Crew crew)
{
throw new NotImplementedException();
}
public void CancelInteractionCrew()
{
throw new NotImplementedException();
}
public bool CanInteractionCrew()
{
throw new NotImplementedException();
}
public event Action OnInteractionCompleted;
}
}

View File

@ -97,38 +97,6 @@ namespace BlueWater.Tycoons
Food.enabled = false;
InteractionMessage = "치우기";
}
private IEnumerator FindCleanerCrewCoroutine()
{
var waitTime = new WaitForSeconds(2f);
while (true)
{
var cleaners = TycoonManager.Instance.CrewController.CleanerCrews;
if (cleaners == null || cleaners.Count == 0)
{
yield return waitTime;
continue;
}
var closestCleaners = cleaners.OrderBy(element =>
Vector3.Distance(element.transform.position, transform.position)).ToList();
var isFound = false;
foreach (var element in closestCleaners.Where(element => !element.IsOnMission))
{
element.OnMission(this);
isFound = true;
break;
}
if (isFound)
{
break;
}
yield return waitTime;
}
}
public void SetTableNumber(int number) => TableNumber = number;
@ -179,7 +147,9 @@ namespace BlueWater.Tycoons
InteractionCanvas.BalloonUi.OrderItem(_dirtyImage, 0, TycoonManager.Instance.TycoonStageController.StageDataSo.DirtyTableWaitTime);
IsCleaned = false;
Utils.StartUniqueCoroutine(this, ref _findCleanerCrewInstance, FindCleanerCrewCoroutine());
var crewController = TycoonManager.Instance.CrewController;
Utils.StartUniqueCoroutine(this, ref _findCleanerCrewInstance,
crewController.FindClosestCrewCoroutine(CenterTransform.position, crewController.CleanerCrews, crew => crew.OnMission(this)));
}
public void InteractionCrew(Crew crew)

View File

@ -68,40 +68,9 @@ namespace BlueWater.Tycoons
InteractionMessage = "치우기";
vomitingImage = VisualLook.GetComponent<SpriteRenderer>().sprite;
InteractionCanvas.BalloonUi.OrderItem(vomitingImage, 0, TycoonManager.Instance.TycoonStageController.StageDataSo.VomitingWaitTime);
Utils.StartUniqueCoroutine(this, ref _findCleanerCrewInstance, FindCleanerCrewCoroutine());
}
private IEnumerator FindCleanerCrewCoroutine()
{
var waitTime = new WaitForSeconds(2f);
while (true)
{
var cleaners = TycoonManager.Instance.CrewController.CleanerCrews;
if (cleaners == null || cleaners.Count == 0)
{
yield return waitTime;
continue;
}
var closestCleaners = cleaners.OrderBy(element =>
Vector3.Distance(element.transform.position, transform.position)).ToList();
var isFound = false;
foreach (var element in closestCleaners.Where(element => !element.IsOnMission))
{
element.OnMission(this);
isFound = true;
break;
}
if (isFound)
{
break;
}
yield return waitTime;
}
var crewController = TycoonManager.Instance.CrewController;
Utils.StartUniqueCoroutine(this, ref _findCleanerCrewInstance,
crewController.FindClosestCrewCoroutine(CenterTransform.position, crewController.CleanerCrews, crew => crew.OnMission(this)));
}
public override void Interaction()

View File

@ -1,4 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BlueWater.Npcs.Crews;
using BlueWater.Utility;
using Sirenix.OdinInspector;
@ -13,7 +15,7 @@ namespace BlueWater.Tycoons
private CleanerCrew _cleanerCrewPrefab;
[SerializeField]
private ServingCrew _servingCrewPrefab;
private ServerCrew _servingCrewPrefab;
[SerializeField]
private BartenderCrew _bartenderCrewPrefab;
@ -36,7 +38,7 @@ namespace BlueWater.Tycoons
public List<CleanerCrew> CleanerCrews { get; private set; }
[field: SerializeField]
public List<ServingCrew> ServingCrews { get; private set; }
public List<ServerCrew> ServerCrews { get; private set; }
[field: SerializeField]
public List<BartenderCrew> BartenderCrews { get; private set; }
@ -44,14 +46,14 @@ namespace BlueWater.Tycoons
private void Start()
{
EventManager.OnCreateCleanerCrew += CreateCleanerCrew;
EventManager.OnCreateServingCrew += CreateServingCrew;
EventManager.OnCreateServerCrew += CreateServerCrew;
EventManager.OnCreateBartenderCrew += CreateBartenderCrew;
}
private void OnDestroy()
{
EventManager.OnCreateCleanerCrew -= CreateCleanerCrew;
EventManager.OnCreateServingCrew -= CreateServingCrew;
EventManager.OnCreateServerCrew -= CreateServerCrew;
EventManager.OnCreateBartenderCrew -= CreateBartenderCrew;
}
@ -65,10 +67,10 @@ namespace BlueWater.Tycoons
return newCrew;
}
public ServingCrew CreateServingCrew()
public ServerCrew CreateServerCrew()
{
var newCrew = Instantiate(_servingCrewPrefab, _servingCrewSpawnTransform.position, _servingCrewPrefab.transform.rotation);
Utils.RegisterList(ServingCrews, newCrew);
Utils.RegisterList(ServerCrews, newCrew);
Utils.RegisterList(Crews, newCrew);
newCrew.Initialize();
@ -84,5 +86,33 @@ namespace BlueWater.Tycoons
return newCrew;
}
public T FindClosestAvailableCrew<T>(Vector3 position, List<T> crews) where T : Crew
{
if (crews == null || crews.Count == 0) return null;
var availableCrews = crews.Where(crew => !crew.IsOnMission).ToList();
if (availableCrews.Count == 0) return null;
return availableCrews
.OrderBy(crew => Vector3.Distance(crew.transform.position, position))
.FirstOrDefault();
}
public IEnumerator FindClosestCrewCoroutine<T>(Vector3 position, List<T> crews, System.Action<T> onCrewFoundEvent) where T : Crew
{
var waitTime = new WaitForSeconds(2f);
while (true)
{
var closestCrew = FindClosestAvailableCrew(position, crews);
if (closestCrew != null)
{
onCrewFoundEvent?.Invoke(closestCrew);
yield break;
}
yield return waitTime;
}
}
}
}

View File

@ -7,12 +7,9 @@ using UnityEngine;
namespace BlueWater.Tycoons
{
public class CustomerManager : Singleton<CustomerManager>
public class CustomerController : MonoBehaviour
{
[Title("손님 데이터")]
[field: SerializeField, Required]
public CustomerDataSo CustomerDataSo { get; private set; }
[SerializeField, Required]
private Customer _customerPrefab;
@ -37,11 +34,13 @@ namespace BlueWater.Tycoons
_customerTableController = TycoonManager.Instance.CustomerTableController;
EventManager.OnCreateCustomer += TryFindEmptySeat;
EventManager.OnDestroyCustomer += UnregisterCustomer;
}
private void OnDestroy()
{
EventManager.OnCreateCustomer -= TryFindEmptySeat;
EventManager.OnDestroyCustomer -= UnregisterCustomer;
}
public Customer CreateCustomer()
@ -116,18 +115,12 @@ namespace BlueWater.Tycoons
Utils.UnregisterList(InstanceCustomers, customer);
}
public CustomerData GetRandomCustomerData()
public void CheckInstanceCustomerBills()
{
var customerDataCount = CustomerDataSo.GetDataCount();
if (customerDataCount == 0)
foreach (var element in InstanceCustomers)
{
Debug.LogError($"{CustomerDataSo}의 값이 비어있습니다.");
return null;
}
return CustomerDataSo.GetRandomValue();
}
public List<Customer> GetCurrentCustomers() => InstanceCustomers;
}
}

View File

@ -0,0 +1,20 @@
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace BlueWater.Tycoons
{
public class ServingTableController : MonoBehaviour
{
[SerializeField]
private Transform _servingTableRoot;
[SerializeField]
private List<ServingTable> _servingTables;
private void Awake()
{
_servingTables = _servingTableRoot.GetComponentsInChildren<ServingTable>().ToList();
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 03e84488b3da65549a78d481636713a3

View File

@ -125,12 +125,7 @@ namespace BlueWater.Uis
_isItemReceived = false;
SetItemImage(_orderCocktailData);
_tween = _fillImage.DOFillAmount(1f, hurryTime)
.From(0f)
.SetEase(Ease.Linear)
.SetDelay(waitTime)
.OnComplete(OnTweenComplete)
.SetAutoKill(false);
SetTween(waitTime, hurryTime);
}
public void OrderItem(Sprite sprite, int waitTime, int hurryTime)
@ -140,7 +135,13 @@ namespace BlueWater.Uis
_isItemReceived = false;
SetItemSprite(sprite);
ShowUi();
SetTween(waitTime, hurryTime);
}
public void SetTween(int waitTime, int hurryTime)
{
_tween?.Kill();
_tween = _fillImage.DOFillAmount(1f, hurryTime)
.From(0f)
.SetEase(Ease.Linear)

View File

@ -64,11 +64,17 @@ namespace BlueWater
_stampImageObject.SetActive(false);
_tableNumberText.text = customer.CurrentTableSeat.TableNumber.ToString();
_tableNumberImageObject.SetActive(true);
_sliderTween = _slider.DOValue(0f, customer.CurrentLevelData.HurryTime)
SetTween(customer.CurrentLevelData.WaitTime, customer.CurrentLevelData.HurryTime);
}
public void SetTween(int waitTime, int hurryTime)
{
_sliderTween?.Kill();
_sliderTween = _slider.DOValue(0f, hurryTime)
.From(1f)
.SetEase(Ease.Linear)
.SetDelay(customer.CurrentLevelData.WaitTime)
.SetDelay(waitTime)
.SetAutoKill(true);
}

View File

@ -1,11 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BlueWater.Npcs.Customers;
using Sirenix.OdinInspector;
using Spine.Unity;
using UnityEngine;
using UnityEngine.Rendering;
namespace BlueWater
namespace BlueWater.Uis
{
public class BillUi : MonoBehaviour
{
@ -24,8 +26,9 @@ namespace BlueWater
[SerializeField]
private List<BillInfo> _billInfos = new(5);
private Dictionary<Customer, Bill> _customerBillDictionary = new();
private ObservableList<KeyValuePair<Customer, Bill>> _customerBills = new();
private bool _isMovedChain;
private bool _isActivating;
@ -33,12 +36,16 @@ namespace BlueWater
private void Start()
{
_customerBills.ItemAdded += UpdateBillInfo;
_customerBills.ItemRemoved += UpdateBillInfo;
EventManager.OnOrderedCocktail += OrderedCocktail;
EventManager.OnOrderResult += OrderResult;
}
private void OnDestroy()
{
_customerBills.ItemAdded -= UpdateBillInfo;
_customerBills.ItemRemoved -= UpdateBillInfo;
EventManager.OnOrderedCocktail -= OrderedCocktail;
EventManager.OnOrderResult -= OrderResult;
}
@ -47,33 +54,29 @@ namespace BlueWater
{
var instance = Instantiate(_billPrefab, _spawnLocation);
instance.Initialize(customer, _spawnPosition, _billInfos[0].Position);
_customerBillDictionary.Add(customer, instance);
UpdateBillInfo();
customer.CurrentBill = instance;
var newKeyValuePair = new KeyValuePair<Customer, Bill>(customer, instance);
_customerBills.Add(newKeyValuePair);
}
private void OrderResult(Customer customer, bool isSucceed)
{
if (_customerBillDictionary.TryGetValue(customer, out var bill))
{
bill.OrderResult(isSucceed, UpdateBillInfo);
_customerBillDictionary.Remove(customer);
UpdateBillInfo(); // Bill이 제거된 후 빈 자리를 업데이트
}
var keyValue = _customerBills.FirstOrDefault((element) => element.Key == customer);
keyValue.Value.OrderResult(isSucceed, () => _customerBills.Remove(keyValue));
}
private void UpdateBillInfo()
private void UpdateBillInfo(ObservableList<KeyValuePair<Customer, Bill>> sender, ListChangedEventArgs<KeyValuePair<Customer, Bill>> e)
{
foreach (var element in _customerBillDictionary.Values)
foreach (var element in sender)
{
for (var i = 0; i < _billInfos.Count; i++)
{
if (element.CurrentBillInfo == _billInfos[i]) break;
if (element.Value.CurrentBillInfo == _billInfos[i]) break;
if (_billInfos[i].IsEmpty)
{
PlayChainAnimation();
element.Move(_billInfos[i]);
element.Value.Move(_billInfos[i]);
break;
}
}

View File

@ -175,7 +175,7 @@ namespace BlueWater.Uis
TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount2 += 4000;break;
case "AddAllLiquid":
TycoonManager.Instance.TycoonIngredientController.AllAddBarrels(1000); break;
case "ServerNpc": EventManager.InvokeCreateServingCrew(); break;
case "ServerNpc": EventManager.InvokeCreateServerCrew(); break;
case "CleanerNpc": EventManager.InvokeCreateCleanerCrew(); break;
case "ChefNpc": EventManager.InvokeCreateBartenderCrew(); break;
case "SpeedUp":

View File

@ -728,7 +728,7 @@ MonoBehaviour:
resetValuesOnRestart: 0
externalBehavior: {fileID: 11400000, guid: b46524e0380db8a4caaa3000e32b5e04, type: 2}
mBehaviorSource:
behaviorName: Cleaner
behaviorName: CleanerCrew
behaviorDescription:
mTaskData:
types: []

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -176,6 +176,42 @@ Transform:
m_Children: []
m_Father: {fileID: 3249711671270954515}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1304425945750998618
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5776045902233640550}
m_Layer: 0
m_Name: BartenderTables
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5776045902233640550
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1304425945750998618}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5701996018619210215}
- {fileID: 790144698020171886}
- {fileID: 5559400221697507446}
- {fileID: 5881185964479335323}
- {fileID: 7251359079948161700}
m_Father: {fileID: 1402113424960589398}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1374224201695919457
GameObject:
m_ObjectHideFlags: 0
@ -1444,11 +1480,6 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5701996018619210215}
- {fileID: 790144698020171886}
- {fileID: 5559400221697507446}
- {fileID: 5881185964479335323}
- {fileID: 7251359079948161700}
- {fileID: 2754206603907726668}
- {fileID: 3647761711574370734}
- {fileID: 251860307607057383}
@ -1724,6 +1755,7 @@ Transform:
- {fileID: 4798925548635759970}
- {fileID: 3032369304281183765}
- {fileID: 1031605920973182729}
- {fileID: 5776045902233640550}
m_Father: {fileID: 4449232531499695111}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8697754653569273504
@ -2018,7 +2050,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4798925548635759970}
m_TransformParent: {fileID: 5776045902233640550}
m_Modifications:
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalPosition.x
@ -2038,15 +2070,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -4326,7 +4358,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4798925548635759970}
m_TransformParent: {fileID: 5776045902233640550}
m_Modifications:
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalPosition.x
@ -4346,15 +4378,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -4454,7 +4486,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4798925548635759970}
m_TransformParent: {fileID: 5776045902233640550}
m_Modifications:
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalPosition.x
@ -4474,15 +4506,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -5534,7 +5566,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4798925548635759970}
m_TransformParent: {fileID: 5776045902233640550}
m_Modifications:
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalPosition.x
@ -5554,15 +5586,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -6338,7 +6370,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4798925548635759970}
m_TransformParent: {fileID: 5776045902233640550}
m_Modifications:
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalPosition.x
@ -6358,15 +6390,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 809828747251277026, guid: a46735af9ffe7684fb0f19bc9b351e30, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b23f08d2ae4cba14087c1ed36193d82b, type: 3}
m_Name: Cleaner
m_Name: CleanerCrew
m_EditorClassIdentifier:
mBehaviorSource:
behaviorName: Customer
@ -22,10 +22,11 @@ MonoBehaviour:
variableStartIndex:
JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(548.5,11.3636351)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(-2.36053467,152.585861)"},"ID":1,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(0,120)"},"ID":2,"Name":"Cleaner
Cycle","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-2.54729939,179.727264)"},"ID":3,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-225.263184,152.083344)"},"ID":4,"Name":"Succes
Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.CheckCleaning","NodeData":{"Offset":"(-120,150)"},"ID":5,"Name":"Check
Cleaning","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(140.876663,145.4505)"},"ID":6,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-105,147.5)"},"ID":7,"Name":"Succes
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.Cleaning","NodeData":{"Offset":"(-140,150)"},"ID":8,"Name":"Cleaning","Instant":true},{"Type":"BlueWater.BehaviorTrees.Actions.CompleteCleaning","NodeData":{"Offset":"(2.49850464,149.907471)"},"ID":9,"Name":"Complete
Cleaning","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(162.857178,152.857422)"},"ID":10,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(150,145.2378)"},"ID":11,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(289.942871,151.213776)"},"ID":12,"Name":"Fail
Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.CheckOnMission","NodeData":{"Offset":"(-120,150)"},"ID":5,"Name":"Check
On Mission","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(140.876663,145.4505)"},"ID":6,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-105,147.5)"},"ID":7,"Name":"Succes
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.OnMission","NodeData":{"Offset":"(-140,150)"},"ID":8,"Name":"On
Mission","Instant":true},{"Type":"BlueWater.BehaviorTrees.Actions.CompleteMission","NodeData":{"Offset":"(0,150)"},"ID":9,"Name":"Complete
Mission","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(162.857178,152.857422)"},"ID":10,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(150,145.2378)"},"ID":11,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(289.942871,151.213776)"},"ID":12,"Name":"Fail
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.MoveToRandomPositionInRange","NodeData":{"Offset":"(-100.101685,148.086548)"},"ID":13,"Name":"Move
To Random Position In Range","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(99.99939,150)"},"ID":14,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true}]}'
fieldSerializationData:

View File

@ -0,0 +1,40 @@
%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: b23f08d2ae4cba14087c1ed36193d82b, type: 3}
m_Name: ServerCrew
m_EditorClassIdentifier:
mBehaviorSource:
behaviorName: Customer
behaviorDescription:
mTaskData:
types: []
parentIndex:
startIndex:
variableStartIndex:
JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(548.5,11.3636351)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(-2.36053467,152.585861)"},"ID":1,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(0,120)"},"ID":2,"Name":"Cleaner
Cycle","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-2.54729939,179.727264)"},"ID":3,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-225.263184,152.083344)"},"ID":4,"Name":"Succes
Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.CheckOnMission","NodeData":{"Offset":"(-120,150)"},"ID":5,"Name":"Check
On Mission","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(140.876663,145.4505)"},"ID":6,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-105,147.5)"},"ID":7,"Name":"Succes
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.OnMission","NodeData":{"Offset":"(-140,150)"},"ID":8,"Name":"On
Mission","Instant":true},{"Type":"BlueWater.BehaviorTrees.Actions.CompleteMission","NodeData":{"Offset":"(0,150)"},"ID":9,"Name":"Complete
Mission","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(162.857178,152.857422)"},"ID":10,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(150,145.2378)"},"ID":11,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(289.942871,151.213776)"},"ID":12,"Name":"Fail
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Actions.MoveToRandomPositionInRange","NodeData":{"Offset":"(-100.101685,148.086548)"},"ID":13,"Name":"Move
To Random Position In Range","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(99.99939,150)"},"ID":14,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true}]}'
fieldSerializationData:
typeName: []
fieldNameHash:
startIndex:
dataPosition:
unityObjects: []
byteData:
byteDataArray:
Version: 1.7.9

View File

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