using System; using BlueWater.Interfaces; using BlueWater.Items; using Sirenix.OdinInspector; using UnityEngine; using Random = UnityEngine.Random; namespace BlueWater.Npcs.Customers { [Serializable] public class CustomerData : IIdx { [BoxGroup("Json 데이터 영역")] [field: SerializeField, Tooltip("고유 식별 ID"), BoxGroup("Json 데이터 영역")] public string Idx { get; set; } [field: SerializeField, Tooltip("이름"), BoxGroup("Json 데이터 영역")] public string Name { get; set; } [field: SerializeField, Tooltip("이동속도"), BoxGroup("Json 데이터 영역")] public int MoveSpeed { get; set; } [field: SerializeField, Tooltip("음식을 먹는 시간"), BoxGroup("Json 데이터 영역")] public int EatingTime { get; set; } [field: SerializeField, Tooltip("음식을 여유롭게 기다리는 시간"), BoxGroup("Json 데이터 영역")] public int WaitTime { get; set; } [field: SerializeField, Tooltip("음식을 재촉하는 시간"), BoxGroup("Json 데이터 영역")] public int HurryTime { get; set; } [field: SerializeField, Tooltip("기본 만족도"), BoxGroup("Json 데이터 영역")] public int BaseHappyPoint { get; set; } [field: SerializeField, Tooltip("선호하는 음식 우선순위1"), BoxGroup("Json 데이터 영역")] public FoodTaste PreferredFood1 { get; set; } [field: SerializeField, Tooltip("선호하는 음식 우선순위2"), BoxGroup("Json 데이터 영역")] public FoodTaste PreferredFood2 { get; set; } [field: SerializeField, Tooltip("선호하는 음식 우선순위3"), BoxGroup("Json 데이터 영역")] public FoodTaste PreferredFood3 { get; set; } [field: SerializeField, Tooltip("음료를 주문할 확률"), BoxGroup("Json 데이터 영역")] public int OrderBeverageRate { get; set; } public bool IsOrderedBeverage() { var dropChance = Random.Range(0, 101); return dropChance <= OrderBeverageRate; } public FoodTaste GetPreferredFood(int index) { return index switch { 0 => PreferredFood1, 1 => PreferredFood2, 2 => PreferredFood3, _ => throw new ArgumentOutOfRangeException() }; } } }