NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_CampController.cs

140 lines
3.6 KiB
C#
Raw Normal View History

2024-04-22 16:52:21 +08:00
using Gameplay;
2024-04-03 18:20:32 +08:00
using PhxhSDK.Res;
2024-01-12 14:38:11 +08:00
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using Button = UnityEngine.UI.Button;
public class UI_CampController : UIWindow
{
2024-04-03 18:20:32 +08:00
/// <summary>
/// 返回按钮
/// </summary>
private Button buttonBack;
/// <summary>
/// 主页按钮
/// </summary>
private Button buttonHome;
2024-03-06 17:36:51 +08:00
/// <summary>
/// 技能树按钮
/// </summary>
private Button buttonSkill;
2024-04-03 18:20:32 +08:00
/// <summary>
/// 切换上一个相机点位
/// </summary>
private Button buttonLastCamera;
/// <summary>
/// 切换下一个相机点位
/// </summary>
private Button buttonNextCamera;
2024-01-12 14:38:11 +08:00
2024-04-03 18:20:32 +08:00
/// <summary>
/// 相机点位
/// </summary>
private readonly List<CameraStand> listCameraStand = new();
private CameraRoot cameraRoot;
/// <summary>
/// 当前相机点位索引
/// </summary>
private int curCameraIndex;
2024-01-12 14:38:11 +08:00
2024-01-23 12:25:47 +08:00
public override void OnInit()
2024-01-12 14:38:11 +08:00
{
2024-04-03 18:20:32 +08:00
buttonBack = GetComponent<Button>("Button_Back/Button_back");
buttonHome = GetComponent<Button>("Button_Back/Button_Home");
2024-03-06 17:36:51 +08:00
buttonSkill = GetComponent<Button>("Button_Skill");
2024-04-03 18:20:32 +08:00
buttonLastCamera = GetComponent<Button>("Button_Left");
buttonNextCamera = GetComponent<Button>("Button_Right");
2024-03-06 17:36:51 +08:00
2024-04-03 18:20:32 +08:00
BindButton(buttonBack, OnClickBack);
BindButton(buttonHome, OnClickBack);
2024-03-06 17:36:51 +08:00
BindButton(buttonSkill, OnSkill);
2024-04-03 18:20:32 +08:00
BindButton(buttonLastCamera, OnLastCamera);
BindButton(buttonNextCamera, OnNextCamera);
2024-01-12 14:38:11 +08:00
}
protected override void OnShowWindow(object data = null)
2024-01-12 14:38:11 +08:00
{
2024-05-28 18:47:23 +08:00
base.OnShowWindow(data);
2024-04-03 18:20:32 +08:00
SceneHandle sceneHandle = GameSceneHelper.Instance.GetCurrentUIViewScene();
if (sceneHandle == null)
{
DebugUtil.LogError("未获取到营地场景");
return;
}
GameObject[] gos = sceneHandle.Scene.GetRootGameObjects(); // TODO 临时获取方法
foreach (GameObject go in gos)
{
if (go.name.Equals("CameraStands"))
{
listCameraStand.AddRange(go.GetComponentsInChildren<CameraStand>());
continue;
}
if (go.name.Equals("CameraRoot"))
cameraRoot = go.GetComponent<CameraRoot>();
}
if (listCameraStand.Count <= 0)
{
DebugUtil.LogError("未获取到相机点位");
return;
}
ApplyCameraPoint(0);
2024-01-12 14:38:11 +08:00
}
2024-04-03 18:20:32 +08:00
private void ApplyCameraPoint(int index)
2024-01-12 14:38:11 +08:00
{
2024-04-03 18:20:32 +08:00
curCameraIndex = index;
listCameraStand[curCameraIndex].Apply(cameraRoot.Camera);
2024-01-12 14:38:11 +08:00
}
2024-04-03 18:20:32 +08:00
#region 回调
/// <summary>
/// 点击退出
/// </summary>
2024-05-17 18:28:31 +08:00
private async void OnClickBack()
2024-01-12 14:38:11 +08:00
{
2024-05-17 18:28:31 +08:00
await CommonUtils.CloseUIWithScene(UINameConst.UI_Camp);
2024-04-26 15:43:29 +08:00
GameStateManager.Instance.ChangeState(new GameStateMainScene());
2024-01-12 14:38:11 +08:00
}
2024-03-06 17:36:51 +08:00
/// <summary>
/// 技能养成
/// </summary>
private async void OnSkill()
{
await UI_CommandSkillCultivateController.Open();
}
2024-04-03 18:20:32 +08:00
/// <summary>
/// 切换上一个相机
/// </summary>
private void OnLastCamera()
{
if (listCameraStand.Count <= 0)
return;
if (curCameraIndex > 0)
ApplyCameraPoint(curCameraIndex - 1);
else
ApplyCameraPoint(listCameraStand.Count - 1);
}
/// <summary>
/// 切换下一个相机
/// </summary>
private void OnNextCamera()
{
if (listCameraStand.Count <= 0)
return;
ApplyCameraPoint((curCameraIndex + 1) % listCameraStand.Count);
}
#endregion
2024-01-12 14:38:11 +08:00
}