OldBlueWater/BlueWater/Assets/02.Scripts/Npc/Guest/FoodOrderState.cs

107 lines
3.9 KiB
C#
Raw Normal View History

2024-01-02 08:17:10 +00:00
using UnityEngine;
2024-01-15 06:35:58 +00:00
// ReSharper disable once CheckNamespace
2024-01-02 08:17:10 +00:00
namespace BlueWaterProject
{
public class FoodOrderState : INpcState
{
private TycoonNpc npc;
2024-01-22 03:06:16 +00:00
private float maxWaitTime = 30f; // 15초 동안 채워짐
private float foodEt; // 음식 경과 시간
private float drinkEt; // 음료 경과 시간
2024-01-02 08:17:10 +00:00
public FoodOrderState(TycoonNpc npc)
{
this.npc = npc;
}
public void OnEnter(NpcStateMachine npcStateMachine)
{
npc.BarkImg.gameObject.SetActive(true);
npc.BarkFillImg.gameObject.SetActive(true);
2024-01-22 03:06:16 +00:00
npc.FoodImg.sprite = DataManager.Inst.beer;
2024-01-02 08:17:10 +00:00
npc.FoodImg.gameObject.SetActive(true);
2024-01-22 03:06:16 +00:00
foodEt = 0f;
drinkEt = 0f;
2024-01-03 02:54:03 +00:00
npc.IsGetFood = false;
2024-01-22 03:06:16 +00:00
npc.IsGetDrink = false;
2024-01-02 08:17:10 +00:00
}
public void OnUpdate(NpcStateMachine npcStateMachine)
{
2024-01-22 03:06:16 +00:00
if (npc.IsGetDrink == false)
2024-01-02 08:17:10 +00:00
{
2024-01-22 03:06:16 +00:00
if (drinkEt < maxWaitTime)
{
drinkEt += Time.deltaTime;
npc.BarkFillImg.fillAmount = Mathf.Clamp(drinkEt / maxWaitTime, 0, 1);
if (npc.IsGetDrink)
{
npc.BarkImg.gameObject.SetActive(false);
npc.BarkFillImg.gameObject.SetActive(false);
npc.FoodImg.gameObject.SetActive(false);
npcStateMachine.InstantiateUi(DataManager.Inst.emojiHeart, npc.EmojiTransform);
2024-01-03 02:54:03 +00:00
2024-01-22 03:06:16 +00:00
npc.BarkFillImg.fillAmount = 0;
}
}
else if (drinkEt >= maxWaitTime)
{
npcStateMachine.InstantiateUi(DataManager.Inst.emojiAnger, npc.EmojiTransform);
npc.Satisfaction -= 10;
npc.BarkFillImg.fillAmount = 0;
npc.IsGetDrink = true;
}
2024-01-22 03:06:16 +00:00
}
else if (npc.IsGetDrink)
{
npc.FoodImg.sprite = DataManager.Inst.kingCrabMeat;
if (foodEt < maxWaitTime)
2024-01-03 02:54:03 +00:00
{
2024-01-22 03:06:16 +00:00
foodEt += Time.deltaTime;
npc.BarkFillImg.fillAmount = Mathf.Clamp(foodEt / maxWaitTime, 0, 1);
if (npc.IsGetFood)
{
npc.BarkImg.gameObject.SetActive(false);
npc.BarkFillImg.gameObject.SetActive(false);
npc.FoodImg.gameObject.SetActive(false);
2024-01-03 02:54:03 +00:00
2024-01-22 03:06:16 +00:00
npcStateMachine.InstantiateUi(DataManager.Inst.emojiHeart, npc.EmojiTransform);
2024-01-03 02:54:03 +00:00
2024-01-22 03:06:16 +00:00
npc.AssignedSeat.IsUsing = false;
npc.AssignedSeat.IsDirty = true;
2024-02-15 16:26:08 +00:00
npc.AssignedSeat.Dirty.SetActive(true);
2024-01-22 03:06:16 +00:00
npc.DoSeat = false;
2024-01-03 02:54:03 +00:00
2024-01-22 03:06:16 +00:00
npcStateMachine.ChangeState(new PayState(npc));
}
2024-01-03 02:54:03 +00:00
}
2024-01-22 03:06:16 +00:00
else if (foodEt >= maxWaitTime)
{
npcStateMachine.InstantiateUi(DataManager.Inst.emojiAnger, npc.EmojiTransform);
2024-01-03 02:54:03 +00:00
2024-01-22 03:06:16 +00:00
npc.BarkImg.gameObject.SetActive(false);
npc.BarkFillImg.gameObject.SetActive(false);
npc.FoodImg.gameObject.SetActive(false);
2024-01-02 08:17:10 +00:00
2024-01-22 03:06:16 +00:00
npc.AssignedSeat.IsUsing = false;
npc.AssignedSeat.IsDirty = false;
2024-02-15 16:26:08 +00:00
npc.AssignedSeat.Dirty.SetActive(false);
2024-01-22 03:06:16 +00:00
npc.DoSeat = false;
2024-01-02 08:17:10 +00:00
2024-01-22 03:06:16 +00:00
npcStateMachine.ChangeState(new WalkOutSate(npc));
}
2024-01-02 08:17:10 +00:00
}
}
public void OnExit(NpcStateMachine npcStateMachine)
{
}
}
}