NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Level/Select/SelectView.cs

81 lines
2.2 KiB
C#
Raw Normal View History

2024-09-27 19:05:49 +08:00
using Gameplay.Area;
using Gameplay.Common;
2024-09-27 19:05:49 +08:00
using Gameplay.Effect;
using Gameplay.Unit;
using PhxhSDK;
using UnityEngine;
using Constants = Framework.Constants;
namespace Gameplay.Level.Select
{
public class SelectView
{
private GameUnit _selectUnit;
public GameUnit selectUnit => _selectUnit;
private EffectPlayingData _circleEffect;
private Transform _groundTrans;
private const int _circleEffectId = 1;
private int _lastCellIndex = -1;
public void Init()
{
_circleEffect = EffectManager.instance.PlayEffectById(_circleEffectId);
var groundSampleObj = AssetManager.Instance.GetPreLoadResult<GameObject>(PathDefine.SelectView.CHARACTER_SELECT_GROUND_GFX);
2024-09-27 19:05:49 +08:00
var groundObj = Object.Instantiate(groundSampleObj);
_groundTrans = groundObj.transform;
_SetActive(false);
}
private void _SetActive(bool active)
{
_circleEffect.SetActive(active);
_groundTrans.gameObject.SetActive(active);
}
public void SetOwner(GameUnit owner)
{
if (_selectUnit == owner) return;
_selectUnit = owner;
if (_selectUnit == null)
{
_SetActive(false);
}
else
{
_SetActive(true);
LogicUpdate();
}
}
public void LogicUpdate()
{
if (_selectUnit == null) return;
// circle 一直跟随
var pos = _selectUnit.transform.position;
_circleEffect.transform.position = pos;
2024-09-29 13:38:26 +08:00
// ground 按 cellindex 跟随
2024-09-27 19:05:49 +08:00
_UpdateGroundEffect();
}
private void _UpdateGroundEffect()
{
var cellIndex = _selectUnit.transData.cellIndex;
if (cellIndex == _lastCellIndex) return;
_lastCellIndex = cellIndex;
2024-11-15 14:32:41 +08:00
var posGround = AreaManager.instance.GetWorldPosByIndex(cellIndex);
2024-09-27 19:05:49 +08:00
_groundTrans.position = posGround;
}
public void Dispose()
{
}
}
}