#225 Customer DB

This commit is contained in:
IDMhan 2024-04-16 01:03:56 +09:00
parent ca89b2d13b
commit 50e0487662
9 changed files with 67 additions and 61 deletions

View File

@ -0,0 +1,31 @@
using System.Collections.Generic;
using UnityEngine;
namespace BlueWaterProject
{
[CreateAssetMenu(fileName = "NpcDataSO", menuName = "ScriptableObjects/NpcDataSO", order = 0)]
public class NpcDataSO : ScriptableObject
{
public List<NpcData> npcDataList = new();
}
[System.Serializable]
public class NpcData
{
public int idx;
public string name;
public int speed;
public int hurry;
public int wait;
public int baseHappyPoint;
public int taste1;
public int taste2;
public int taste3;
public int picky1;
public int picky2;
public int picky3;
public int bully;
public int tip;
public int dialogue;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 419bd52f1a204ecf8bc45c630f2a6666
timeCreated: 1712493590

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
@ -36,6 +37,8 @@ namespace BlueWaterProject
public Sprite kingCrabMeat;
public Sprite beer;
[field: SerializeField] public NpcDataSO NpcDataSo { get; private set; }
private void Init()
{
PlayerInventory = new PlayerInventory();
@ -49,6 +52,16 @@ namespace BlueWaterProject
gameObject.AddComponent<Upd>();
}
}
public NpcData GetNpcData(int idx)
{
var data = NpcDataSo.npcDataList.FirstOrDefault(d => d.idx == idx);
if(data == null)
{
Debug.LogWarning($"NPC Data for index {idx} not found.");
}
return data;
}
/// <summary>
/// Dictionary 초기화 함수

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 14f5489c7746e4d34a85a1fc995b6428
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,40 +0,0 @@
namespace BlueWaterProject.Class
{
public class NpcData
{
public int Idx { get; set; }
public string Name { get; set; }
public int Speed { get; set; }
public int Hurry { get; set; }
public int Wait { get; set; }
public int BaseHappyPoint { get; set; }
public int Taste1 { get; set; }
public int Taste2 { get; set; }
public int Taste3 { get; set; }
public int Picky1 { get; set; }
public int Picky2 { get; set; }
public int Picky3 { get; set; }
public int Bully { get; set; }
public int Tip { get; set; }
public int Dialogue { get; set; }
public NpcData(NpcData other)
{
Idx = other.Idx;
Name = other.Name;
Speed = other.Speed;
Hurry = other.Hurry;
Wait = other.Wait;
BaseHappyPoint = other.BaseHappyPoint;
Taste1 = other.Taste1;
Taste2 = other.Taste2;
Taste3 = other.Taste3;
Picky1 = other.Picky1;
Picky2 = other.Picky2;
Picky3 = other.Picky3;
Bully = other.Bully;
Tip = other.Tip;
Dialogue = other.Dialogue;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 4e8e322d862c4b7cbe26bf09e6dcbb2b
timeCreated: 1711598702

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using BlueWaterProject;
using UnityEngine;
public class Restaurant : MonoBehaviour
@ -10,6 +11,9 @@ public class Restaurant : MonoBehaviour
public Transform mainDoor;
public Transform[] guestNpc;
public GameObject[] mainLight;
public GameObject npcPrefab;
public NpcDataSO npcDataSo;
public void RestaurantSwitchOnOff()
{
@ -45,20 +49,26 @@ public class Restaurant : MonoBehaviour
IEnumerator ActivateNPCs()
{
foreach (var npc in guestNpc)
foreach (var npcData in npcDataSo.npcDataList)
{
if (!isSwitchOn) // 스위치가 꺼지면 코루틴을 즉시 종료
yield break;
if (!npc.gameObject.activeInHierarchy) // NPC가 비활성화 상태인 경우만
var waitTime = UnityEngine.Random.Range(3, 11); // 3초에서 10초 사이의 랜덤 대기 시간
yield return new WaitForSeconds(waitTime); // 랜덤 대기
if (!isSwitchOn) // 대기 후 스위치 상태 다시 확인
yield break;
// NPC 인스턴스화 및 데이터로 초기화
var npcInstance = Instantiate(npcPrefab, transform.position, Quaternion.identity, transform); // 원하는 위치와 회전 값으로 수정하세요
var tycoonNpc = npcInstance.GetComponent<TycoonNpc>();
if (tycoonNpc != null)
{
var waitTime = UnityEngine.Random.Range(3, 11); // 1초에서 10초 사이의 랜덤 대기 시간
yield return new WaitForSeconds(waitTime); // 랜덤 대기
if (!isSwitchOn) // 대기 후 스위치 상태 다시 확인
yield break;
npc.gameObject.SetActive(true); // NPC 활성화
// 여기에서 TycoonNpc의 변수를 npcData를 사용하여 초기화합니다.
// 예시: tycoonNpc.speed = npcData.speed;
// 실제 필드명과 타입에 따라 초기화 코드를 작성하세요.
}
}
}

View File

@ -4155,7 +4155,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &2861009012256036238
Transform:
m_ObjectHideFlags: 0