#146 Drink Order

This commit is contained in:
IDMhan 2024-01-22 12:06:16 +09:00
parent 997e582958
commit 4e06f1facc
5 changed files with 97 additions and 39 deletions

View File

@ -33,6 +33,7 @@ namespace BlueWaterProject
public Sprite tomato; public Sprite tomato;
public Sprite onion; public Sprite onion;
public Sprite kingCrabMeat; public Sprite kingCrabMeat;
public Sprite beer;
private void Init() private void Init()
{ {

View File

@ -1,4 +1,3 @@
using BehaviorDesigner.Runtime.Tasks.Unity.UnityGameObject;
using UnityEngine; using UnityEngine;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
@ -7,8 +6,9 @@ namespace BlueWaterProject
public class FoodOrderState : INpcState public class FoodOrderState : INpcState
{ {
private TycoonNpc npc; private TycoonNpc npc;
private float fillTime = 15f; // 15초 동안 채워짐 private float maxWaitTime = 30f; // 15초 동안 채워짐
private float elapsedTime = 0f; // 경과 시간 private float foodEt; // 음식 경과 시간
private float drinkEt; // 음료 경과 시간
public FoodOrderState(TycoonNpc npc) public FoodOrderState(TycoonNpc npc)
{ {
@ -19,18 +19,42 @@ namespace BlueWaterProject
{ {
npc.BarkImg.gameObject.SetActive(true); npc.BarkImg.gameObject.SetActive(true);
npc.BarkFillImg.gameObject.SetActive(true); npc.BarkFillImg.gameObject.SetActive(true);
npc.FoodImg.sprite = DataManager.Inst.beer;
npc.FoodImg.gameObject.SetActive(true); npc.FoodImg.gameObject.SetActive(true);
elapsedTime = 0f; foodEt = 0f;
drinkEt = 0f;
npc.IsGetFood = false; npc.IsGetFood = false;
npc.IsGetDrink = false;
} }
public void OnUpdate(NpcStateMachine npcStateMachine) public void OnUpdate(NpcStateMachine npcStateMachine)
{ {
if (elapsedTime < fillTime) if (npc.IsGetDrink == false)
{ {
elapsedTime += Time.deltaTime; if (drinkEt < maxWaitTime)
npc.BarkFillImg.fillAmount = Mathf.Clamp(elapsedTime / fillTime, 0, 1); {
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);
npc.BarkFillImg.fillAmount = 0;
}
}
}
else if (npc.IsGetDrink)
{
npc.FoodImg.sprite = DataManager.Inst.kingCrabMeat;
if (foodEt < maxWaitTime)
{
foodEt += Time.deltaTime;
npc.BarkFillImg.fillAmount = Mathf.Clamp(foodEt / maxWaitTime, 0, 1);
if (npc.IsGetFood) if (npc.IsGetFood)
{ {
@ -47,7 +71,7 @@ namespace BlueWaterProject
npcStateMachine.ChangeState(new PayState(npc)); npcStateMachine.ChangeState(new PayState(npc));
} }
} }
else if (elapsedTime >= fillTime) else if (foodEt >= maxWaitTime)
{ {
npcStateMachine.InstantiateUi(DataManager.Inst.emojiAnger, npc.EmojiTransform); npcStateMachine.InstantiateUi(DataManager.Inst.emojiAnger, npc.EmojiTransform);
@ -62,6 +86,7 @@ namespace BlueWaterProject
npcStateMachine.ChangeState(new WalkOutSate(npc)); npcStateMachine.ChangeState(new WalkOutSate(npc));
} }
} }
}
public void OnExit(NpcStateMachine npcStateMachine) public void OnExit(NpcStateMachine npcStateMachine)
{ {

View File

@ -25,6 +25,7 @@ namespace BlueWaterProject
public Image FoodImg { get; set; } public Image FoodImg { get; set; }
public Transform EmojiTransform { get; set; } public Transform EmojiTransform { get; set; }
public bool IsGetFood { get; set; } public bool IsGetFood { get; set; }
public bool IsGetDrink { get; set; }
[Title("PayState")] [Title("PayState")]
public PayController PayController { get; set; } public PayController PayController { get; set; }

View File

@ -1,3 +1,4 @@
using System;
using System.Collections; using System.Collections;
using BlueWaterProject.Type; using BlueWaterProject.Type;
using PixelCrushers.DialogueSystem; using PixelCrushers.DialogueSystem;
@ -167,14 +168,20 @@ namespace BlueWaterProject
transform.position = position; transform.position = position;
} }
public void TakeFoodFromKitchen() public void TakeKingCrab()
{
if (!foodTransform.gameObject.activeSelf)
{ {
if (foodTransform.gameObject.activeSelf) return;
foodVisual.sprite = DataManager.Inst.kingCrabMeat; foodVisual.sprite = DataManager.Inst.kingCrabMeat;
foodTransform.gameObject.SetActive(true); foodTransform.gameObject.SetActive(true);
foodOnHand = GlobalValue.FoodOnHand.KING_CRAB; foodOnHand = GlobalValue.FoodOnHand.KING_CRAB;
} }
public void TakeBeer()
{
if (foodTransform.gameObject.activeSelf) return;
foodVisual.sprite = DataManager.Inst.beer;
foodTransform.gameObject.SetActive(true);
foodOnHand = GlobalValue.FoodOnHand.BEER;
} }
public void TakeFoodFromPlayer() public void TakeFoodFromPlayer()
@ -185,7 +192,29 @@ namespace BlueWaterProject
var tycoonNpc = proximitySelector.CurrentUsable.gameObject.GetComponent<TycoonNpc>(); var tycoonNpc = proximitySelector.CurrentUsable.gameObject.GetComponent<TycoonNpc>();
if (tycoonNpc != null && tycoonNpc.DoSeat) if (tycoonNpc != null && tycoonNpc.DoSeat)
{ {
switch (foodOnHand)
{
case GlobalValue.FoodOnHand.NONE:
break;
case GlobalValue.FoodOnHand.KING_CRAB:
case GlobalValue.FoodOnHand.JELLYFISH:
case GlobalValue.FoodOnHand.ONION:
case GlobalValue.FoodOnHand.TOMATO:
case GlobalValue.FoodOnHand.SCALLION:
case GlobalValue.FoodOnHand.CLAM:
case GlobalValue.FoodOnHand.SALT:
case GlobalValue.FoodOnHand.CHILI_POWDER:
case GlobalValue.FoodOnHand.DINOSAUR_EGG:
case GlobalValue.FoodOnHand.DINOSAUR_MEAT:
tycoonNpc.IsGetFood = true; tycoonNpc.IsGetFood = true;
break;
case GlobalValue.FoodOnHand.BEER:
case GlobalValue.FoodOnHand.WINE:
tycoonNpc.IsGetDrink = true;
break;
default:
throw new ArgumentOutOfRangeException();
}
foodTransform.gameObject.SetActive(false); foodTransform.gameObject.SetActive(false);
foodOnHand = GlobalValue.FoodOnHand.NONE; foodOnHand = GlobalValue.FoodOnHand.NONE;
} }

View File

@ -18,7 +18,9 @@ namespace BlueWaterProject
SALT, SALT,
CHILI_POWDER, CHILI_POWDER,
DINOSAUR_EGG, DINOSAUR_EGG,
DINOSAUR_MEAT DINOSAUR_MEAT,
BEER,
WINE
} }
public enum InIslandPlayerMode public enum InIslandPlayerMode