201 lines
5.4 KiB
C#
201 lines
5.4 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.Events;
|
|
|
|
public class UI_userBag : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 123前言:
|
|
/// 装备升级、装备熔炼、装备幻化、装备属性转移
|
|
/// ———————————————————————————————————————
|
|
/// 升级,每5等级之间使用耗材升级,跨5倍数需要幻化而不是升级;
|
|
/// 熔炼,消耗多余装备变为碎片,碎片可用于兑换新装备;
|
|
/// 幻化,改变装备外观,保留原有属性并进行属性加强,消耗幻化材料;
|
|
/// 属性转移,将一件装备的属性转移到另一件装备上,消耗转移材料;
|
|
/// </summary>
|
|
[Header("weapon system")]
|
|
public ToggleGroup equip_tg;
|
|
public Toggle equipUpdate;
|
|
public Toggle equipSmelt;
|
|
public Toggle equipIllusion;
|
|
public Toggle equipAttributeTransfer;
|
|
public Toggle equipAwake;
|
|
|
|
public GameObject equipUpdateObj;
|
|
public GameObject equipSmeltObj;
|
|
public GameObject equipIllusionObj;
|
|
public GameObject equipAttributeTransferObj;
|
|
public GameObject equipAwakeObj;
|
|
|
|
[Header("filters")]
|
|
public Dropdown filterDropdown;
|
|
|
|
[Header("button")]
|
|
public Button closeBagButton;
|
|
|
|
private void Awake()
|
|
{
|
|
InitializeToggleGroup();
|
|
BindToggles();
|
|
SelectDefaultPanel();
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
InitializeToggleGroup();
|
|
BindToggles();
|
|
SelectDefaultPanel();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
UnbindToggle(equipUpdate, HandleEquipUpdateChanged);
|
|
UnbindToggle(equipSmelt, HandleEquipSmeltChanged);
|
|
UnbindToggle(equipIllusion, HandleEquipIllusionChanged);
|
|
UnbindToggle(equipAttributeTransfer, HandleEquipAttributeTransferChanged);
|
|
UnbindToggle(equipAwake, HandleEquipAwakeChanged);
|
|
}
|
|
|
|
private void InitializeToggleGroup()
|
|
{
|
|
if (equip_tg == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
equip_tg.allowSwitchOff = false;
|
|
AssignToggleGroup(equipUpdate);
|
|
AssignToggleGroup(equipSmelt);
|
|
AssignToggleGroup(equipIllusion);
|
|
AssignToggleGroup(equipAttributeTransfer);
|
|
AssignToggleGroup(equipAwake);
|
|
}
|
|
|
|
private void AssignToggleGroup(Toggle toggle)
|
|
{
|
|
if (toggle == null || equip_tg == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
toggle.group = equip_tg;
|
|
}
|
|
|
|
private void BindToggles()
|
|
{
|
|
RebindToggle(equipUpdate, HandleEquipUpdateChanged);
|
|
RebindToggle(equipSmelt, HandleEquipSmeltChanged);
|
|
RebindToggle(equipIllusion, HandleEquipIllusionChanged);
|
|
RebindToggle(equipAttributeTransfer, HandleEquipAttributeTransferChanged);
|
|
RebindToggle(equipAwake, HandleEquipAwakeChanged);
|
|
}
|
|
|
|
private void RebindToggle(Toggle toggle, UnityAction<bool> action)
|
|
{
|
|
if (toggle == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
toggle.onValueChanged.RemoveListener(action);
|
|
toggle.onValueChanged.AddListener(action);
|
|
}
|
|
|
|
private void UnbindToggle(Toggle toggle, UnityAction<bool> action)
|
|
{
|
|
if (toggle == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
toggle.onValueChanged.RemoveListener(action);
|
|
}
|
|
|
|
private void SelectDefaultPanel()
|
|
{
|
|
if (equipUpdate != null)
|
|
{
|
|
equipUpdate.isOn = true;
|
|
ApplyPanelState(equipUpdateObj);
|
|
return;
|
|
}
|
|
|
|
ApplyPanelState(null);
|
|
}
|
|
|
|
private void HandleEquipUpdateChanged(bool isOn)
|
|
{
|
|
if (isOn)
|
|
{
|
|
ApplyPanelState(equipUpdateObj);
|
|
}
|
|
}
|
|
|
|
private void HandleEquipSmeltChanged(bool isOn)
|
|
{
|
|
if (isOn)
|
|
{
|
|
ApplyPanelState(equipSmeltObj);
|
|
}
|
|
}
|
|
|
|
private void HandleEquipIllusionChanged(bool isOn)
|
|
{
|
|
if (isOn)
|
|
{
|
|
ApplyPanelState(equipIllusionObj);
|
|
}
|
|
}
|
|
|
|
private void HandleEquipAttributeTransferChanged(bool isOn)
|
|
{
|
|
if (isOn)
|
|
{
|
|
ApplyPanelState(equipAttributeTransferObj);
|
|
}
|
|
}
|
|
|
|
private void HandleEquipAwakeChanged(bool isOn)
|
|
{
|
|
if (isOn)
|
|
{
|
|
ApplyPanelState(equipAwakeObj);
|
|
}
|
|
}
|
|
|
|
private void ApplyPanelState(GameObject activeObject)
|
|
{
|
|
SetObjectActive(equipUpdateObj, activeObject == equipUpdateObj);
|
|
SetObjectActive(equipSmeltObj, activeObject == equipSmeltObj);
|
|
SetObjectActive(equipIllusionObj, activeObject == equipIllusionObj);
|
|
SetObjectActive(equipAttributeTransferObj, activeObject == equipAttributeTransferObj);
|
|
SetObjectActive(equipAwakeObj, activeObject == equipAwakeObj);
|
|
|
|
SetToggleInteractable(equipUpdate, activeObject != equipUpdateObj);
|
|
SetToggleInteractable(equipSmelt, activeObject != equipSmeltObj);
|
|
SetToggleInteractable(equipIllusion, activeObject != equipIllusionObj);
|
|
SetToggleInteractable(equipAttributeTransfer, activeObject != equipAttributeTransferObj);
|
|
SetToggleInteractable(equipAwake, activeObject != equipAwakeObj);
|
|
}
|
|
|
|
private void SetObjectActive(GameObject target, bool active)
|
|
{
|
|
if (target == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
target.SetActive(active);
|
|
}
|
|
|
|
private void SetToggleInteractable(Toggle toggle, bool interactable)
|
|
{
|
|
if (toggle == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
toggle.interactable = interactable;
|
|
}
|
|
}
|