CapersProject/Assets/02.Scripts/Tycoon/CrewController.cs
2024-10-14 20:13:08 +09:00

88 lines
2.9 KiB
C#

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<Crew> Crews { get; private set; }
[field: SerializeField]
public List<CleanerCrew> CleanerCrews { get; private set; }
[field: SerializeField]
public List<ServingCrew> ServingCrews { get; private set; }
[field: SerializeField]
public List<BartenderCrew> 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;
}
}
}