64 lines
2.4 KiB
C#
64 lines
2.4 KiB
C#
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 int 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()
|
|
};
|
|
}
|
|
}
|
|
} |