/****************************************************************************
* 2021.7 DESKTOP-CLH3E67
****************************************************************************/
using UniRx;
using UnityEngine;
using UnityEngine.UI;
namespace QFramework
{
public partial class UITreeNode01 : UIElement
{
private TreeNodeItem _treeNodeItemModel;
public Sprite expandNodeSprite;
///
/// 收缩时效果
///
public Sprite m_ShrinkNodeSprite;
///
/// 初始化方法
///
/// 节点数据模型
public void Init(TreeNodeItem treeNodeItem,ToggleGroup _group)
{
_treeNodeItemModel = treeNodeItem;
selectToggle.group = _group;
string conent = string.Empty;
string tmpNumber = LUtilitys.DigitalToChinese(int.Parse(treeNodeItem.index));
conent = tmpNumber + " " + _treeNodeItemModel.Content.Value;
if (conent.Contains("%"))
{
conent = conent.Split('%')[0];
}
else if (conent.Contains("@"))
{
conent = conent.Split('@')[0];
}
// 监测(监听)内容数据
_treeNodeItemModel.Content.Subscribe(content => contentText.text = conent);
// 根据数据模型的ShowHidden值监测,确定显示隐藏该Node
_treeNodeItemModel.ShowHidden.Subscribe(value =>
{
if (value)
Show();
else
Hide();
});
// 根据数据模型的Layer值检测,改变Node位置
_treeNodeItemModel.Layer.Subscribe(layer =>
{
var indentDistance = 15 * (layer - 1);
});
// 如果没有子节点,隐藏Toggle
if (treeNodeItem.ChildTreeNodeList.TreeNodeItems.Count == 0)
{
selectToggle.Hide();
}
else
{
selectToggle.isOn = false;
selectToggle.onValueChanged.AddListener(on =>
{
_treeNodeItemModel.ExPanded.Value = on;
});
// 监测节点展开状态数据
_treeNodeItemModel.ExPanded.Subscribe(on =>
{
if (on)
{
NewOperation(_treeNodeItemModel.equipmentUniqueID);
ChangeChilderNodeItemState(treeNodeItem.ChildTreeNodeList.TreeNodeItems, true);
ExpandImg.Show();
RecoverImg.Hide();
selectToggle.targetGraphic = ExpandImg;
selectIcon.sprite = expandNodeSprite;
}
else
{
ChangeChilderNodeItemState(treeNodeItem.ChildTreeNodeList.TreeNodeItems, false);
ExpandImg.Hide();
RecoverImg.Show();
selectToggle.targetGraphic = RecoverImg;
selectIcon.sprite = m_ShrinkNodeSprite;
}
});
}
// 节点点击事件添加
clickButton.GetComponent().onLeftClick.AddListener(() => NodeButtonLeftClick(treeNodeItem));
}
private void NodeButtonLeftClick(TreeNodeItem _treeNodeItemModel)
{
selectToggle.isOn = true;
// 重置
//TreeNodeData.Instance.ResetFontColor(_treeNodeItemModel.Content.Value);
//NewOperation(_treeNodeItemModel.equipmentUniqueID);
}
///
/// 切换节点状态
///
///
///
public void ChangeChilderNodeItemState(ReactiveCollection nodeList, bool hide = false)
{
nodeList.ForEach(item =>
{
item.ShowHidden.Value = hide;
if (hide == true && item.ExPanded.Value == false) return;
if (item.ChildTreeNodeList.TreeNodeItems.Count != 0)
{
ChangeChilderNodeItemState(item.ChildTreeNodeList.TreeNodeItems, hide);
}
});
}
///
/// 新增操作
///
///
public void NewOperation(int _uniqueID)
{
CameraJumpManager.Instance.SetCameraPosture(_uniqueID);
}
}
}