using System.Collections.Generic; using BlueWater.Npcs.Crews; using BlueWater.Utility; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Tycoons { public class CrewController : MonoBehaviour { [Title("Crew 프리팹")] [SerializeField] private CleanerCrew _cleanerCrewPrefab; [SerializeField] private ServingCrew _servingCrewPrefab; [SerializeField] private BartenderCrew _bartenderCrewPrefab; [Title("Crew 생성 변수")] [SerializeField] private Transform _cleanerCrewSpawnTransform; [SerializeField] private Transform _servingCrewSpawnTransform; [SerializeField] private Transform _bartenderCrewSpawnTransform; [field: Title("실시간 데이터")] [field: SerializeField] public List Crews { get; private set; } [field: SerializeField] public List CleanerCrews { get; private set; } [field: SerializeField] public List ServingCrews { get; private set; } [field: SerializeField] public List BartenderCrews { get; private set; } private void Start() { EventManager.OnCreateCleanerCrew += CreateCleanerCrew; EventManager.OnCreateServingCrew += CreateServingCrew; EventManager.OnCreateBartenderCrew += CreateBartenderCrew; } private void OnDestroy() { EventManager.OnCreateCleanerCrew -= CreateCleanerCrew; EventManager.OnCreateServingCrew -= CreateServingCrew; EventManager.OnCreateBartenderCrew -= CreateBartenderCrew; } public CleanerCrew CreateCleanerCrew() { var newCrew = Instantiate(_cleanerCrewPrefab, _cleanerCrewSpawnTransform.position, _cleanerCrewPrefab.transform.rotation); Utils.RegisterList(CleanerCrews, newCrew); Utils.RegisterList(Crews, newCrew); newCrew.Initialize(); return newCrew; } public ServingCrew CreateServingCrew() { var newCrew = Instantiate(_servingCrewPrefab, _servingCrewSpawnTransform.position, _servingCrewPrefab.transform.rotation); Utils.RegisterList(ServingCrews, newCrew); Utils.RegisterList(Crews, newCrew); newCrew.Initialize(); return newCrew; } public BartenderCrew CreateBartenderCrew() { var newCrew = Instantiate(_bartenderCrewPrefab, _bartenderCrewSpawnTransform.position, _bartenderCrewPrefab.transform.rotation); Utils.RegisterList(BartenderCrews, newCrew); Utils.RegisterList(Crews, newCrew); newCrew.Initialize(); return newCrew; } } }