| | |
| | | |
| | | public class FuncPresetChooseCells : MonoBehaviour |
| | | { |
| | | [SerializeField] HorizontalLayoutGroup layoutGroup; |
| | | [SerializeField] FuncPresetChooseCell[] cells; |
| | | [SerializeField] Button unFoldBtn; //展开更多 |
| | | //被选中的方案会显示在外层,如果不是第四个则第四个会显示在最上面 |
| | | |
| | | [SerializeField] Transform moreCellObj; |
| | | [SerializeField] FuncPresetChooseMoreCell[] moreCells; |
| | | [SerializeField] Canvas canvas; |
| | | bool forceUnFold = false; //强制展开,不能收缩; 流派界面的需求 |
| | | [NonSerialized] public int unFoldID = 0; //当前展开的方案ID,在选中的情况下才生效 |
| | | int curBattleType; |
| | | int curFuncType; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 显示方案预设 |
| | |
| | | { |
| | | forceUnFold = _forceUnFold; |
| | | curBattleType = battleType; |
| | | curFuncType = funcType; |
| | | |
| | | var selectID = FuncPresetManager.Instance.GetFuncPresetIDByBattleType(battleType, funcType); |
| | | var showCount = FuncPresetManager.Instance.GetShowFuncPresetCount(funcType); |
| | | unFoldBtn.SetActive(showCount > 4); |
| | | unFoldBtn.AddListener(() => |
| | | { |
| | | moreCellObj.SetActive(true); |
| | | }); |
| | | |
| | | for (int i = 0; i < cells.Length; i++) |
| | | { |
| | |
| | | cells[i].SetActive(true); |
| | | if (i < 3) |
| | | { |
| | | var _unFoldState = forceUnFold ? true : i + 1 == unFoldID; |
| | | var _unFoldState = forceUnFold ? i + 1 == selectID : i + 1 == unFoldID; |
| | | cells[i].Display(battleType, funcType, i + 1, _unFoldState); |
| | | } |
| | | else |
| | | { |
| | | var _unFoldState = forceUnFold ? true : (selectID > 4 ? selectID : 4) == unFoldID; |
| | | var _unFoldState = forceUnFold ? selectID >= 4: (selectID > 4 ? selectID : 4) == unFoldID; |
| | | //第四个动态变化 |
| | | cells[i].Display(battleType, funcType, selectID > 4 ? selectID : 4, _unFoldState); |
| | | } |
| | |
| | | } |
| | | |
| | | var showMoreCount = showCount - 4; |
| | | for (int i = 0; i < showMoreCount; i++) |
| | | for (int i = 0; i < moreCells.Length; i++) |
| | | { |
| | | if (i < showMoreCount) |
| | | { |
| | |
| | | |
| | | void OnEnable() |
| | | { |
| | | canvas.sortingLayerName = "UI"; |
| | | FuncPresetManager.Instance.OnSelectPresetEvent += OnSelectPresetEvent; |
| | | } |
| | | |
| | |
| | | FuncPresetManager.Instance.OnSelectPresetEvent -= OnSelectPresetEvent; |
| | | } |
| | | |
| | | void OnSelectPresetEvent(int funcType, int id, bool isUnFold) |
| | | void OnSelectPresetEvent(int battleType, int _funcType, int id, bool isUnFold) |
| | | { |
| | | Display(curBattleType, funcType, forceUnFold); |
| | | if (battleType != curBattleType || curFuncType != _funcType) |
| | | return; |
| | | Display(curBattleType, _funcType, forceUnFold); |
| | | } |
| | | |
| | | //默认是居中靠右 |
| | | public void ChangeAlignment(TextAnchor type) |
| | | { |
| | | layoutGroup.childAlignment = type; |
| | | } |
| | | |
| | | } |