using UnityEngine;
using Cinemachine;
using AibisDream.FixSystem;
using AibisDream.Framework;
using System.Collections.Generic;
namespace AibisDream.MiniGame.Language
{
///
/// 销售系统管理器
///
public class SalesManager : MonoBehaviour
{
[Header("UI配置")]
[Tooltip("销售系统主视图对象(会自动查找名为'SaleView'的子对象)")]
[SerializeField] private GameObject saleView;
[Header("相机配置")]
[Tooltip("主销售相机")]
[SerializeField] private CameraEnum mainCamera = CameraEnum.SaleCamera;
[Tooltip("深度销售相机(可选)")]
[SerializeField] private CameraEnum deepCamera = CameraEnum.SaleDeepCamera;
private readonly List registeredCameras = new();
private void Start()
{
RegisterToSystem();
RegisterCameras();
FindSaleView();
}
private void OnDestroy()
{
UnregisterCameras();
}
///
/// 查找销售视图(按名字"SaleView")
///
private void FindSaleView()
{
if (saleView == null)
{
Transform viewTransform = transform.Find("SaleView");
if (viewTransform != null)
{
saleView = viewTransform.gameObject;
Debug.Log("[SalesManager] 找到 SaleView");
}
else
{
Debug.LogWarning("[SalesManager] 未找到名为 'SaleView' 的子对象");
}
}
// 初始时隐藏视图
if (saleView != null)
{
saleView.SetActive(false);
}
}
///
/// 注册到系统字典
///
private void RegisterToSystem()
{
FixSystemCenter.SystemDic.Register(this);
}
///
/// 注册所有相机到CameraKit
///
private void RegisterCameras()
{
if (CameraKit.Instance == null)
{
Debug.LogError("[SalesManager] CameraKit.Instance 为 null,无法注册相机!");
return;
}
// 获取所有相机
var virtualCams = GetComponentsInChildren();
if (virtualCams.Length == 0)
{
Debug.LogWarning("[SalesManager] 未找到任何 ICinemachineCamera 组件!");
return;
}
// 注册主相机
if (virtualCams.Length > 0)
{
CameraKit.Instance.RegisterCamera(mainCamera, virtualCams[0]);
registeredCameras.Add(mainCamera);
Debug.Log($"[SalesManager] 成功注册主相机: {mainCamera}");
}
// 注册深度相机(如果有)
if (virtualCams.Length > 1)
{
CameraKit.Instance.RegisterCamera(deepCamera, virtualCams[1]);
registeredCameras.Add(deepCamera);
Debug.Log($"[SalesManager] 成功注册深度相机: {deepCamera}");
}
}
///
/// 从CameraKit注销所有相机
///
private void UnregisterCameras()
{
if (CameraKit.Instance == null) return;
foreach (var cameraType in registeredCameras)
{
CameraKit.Instance.UnRegisterCamera(cameraType);
Debug.Log($"[SalesManager] 已注销相机: {cameraType}");
}
registeredCameras.Clear();
}
///
/// 打开销售系统界面
///
public void OpenView()
{
gameObject.SetActive(true);
if (saleView != null)
{
saleView.SetActive(true);
Debug.Log("[SalesManager] 销售系统已打开");
}
else
{
Debug.LogError("[SalesManager] SaleView 未找到,无法打开销售界面");
}
}
///
/// 关闭销售系统界面
///
public void CloseView()
{
if (saleView != null)
{
saleView.SetActive(false);
}
gameObject.SetActive(false);
Debug.Log("[SalesManager] 销售系统已关闭");
}
///
/// 初始化销售系统
///
public void Initialize()
{
Debug.Log("[SalesManager] 初始化销售系统");
// 这里添加初始化逻辑
}
}
}