装备系统完结,修复并加入很多
This commit is contained in:
@@ -1,27 +1,200 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.Events;
|
||||
|
||||
public class UI_userBag : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// 123前言:
|
||||
/// 装备升级、装备熔炼、装备幻化、装备属性转移
|
||||
/// ———————————————————————————————————————
|
||||
/// 升级,每5等级之间使用耗材升级,跨5倍数需要幻化而不是升级;
|
||||
/// 熔炼,消耗多余装备变为碎片,碎片可用于兑换新装备;
|
||||
/// 幻化,改变装备外观,保留原有属性并进行属性加强,消耗幻化材料;
|
||||
/// 属性转移,将一件装备的属性转移到另一件装备上,消耗转移材料;
|
||||
/// 123前言:
|
||||
/// 装备升级、装备熔炼、装备幻化、装备属性转移
|
||||
/// ———————————————————————————————————————
|
||||
/// 升级,每5等级之间使用耗材升级,跨5倍数需要幻化而不是升级;
|
||||
/// 熔炼,消耗多余装备变为碎片,碎片可用于兑换新装备;
|
||||
/// 幻化,改变装备外观,保留原有属性并进行属性加强,消耗幻化材料;
|
||||
/// 属性转移,将一件装备的属性转移到另一件装备上,消耗转移材料;
|
||||
/// </summary>
|
||||
[Header("toggles")]
|
||||
[Header("weapon system")]
|
||||
public ToggleGroup equip_tg;
|
||||
public Toggle equipUpdate;
|
||||
public Toggle equipSmelt;
|
||||
public Toggle equipIllusion;
|
||||
public Toggle equipAttributeTransfer;
|
||||
public Toggle equipAwake;
|
||||
|
||||
[Header("objs")]
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user