using UnityEngine;
|
using UnityEngine.UI;
|
using System.Collections.Generic;
|
using System;
|
|
|
public class MinggeEquipChangeCell : MonoBehaviour
|
{
|
|
[SerializeField] MinggeItemCell itemCell;
|
[SerializeField] Text itemName;
|
[SerializeField] OutlineEx itemNameOutline;
|
[SerializeField] GameObject presetGO;
|
[SerializeField] Text presetName;
|
[SerializeField] Image nameBG;
|
[SerializeField] Image bgFlower; //背景花纹变色
|
[SerializeField] Text fightPowerNum;
|
[SerializeField] List<Text> fightAttrNames;
|
[SerializeField] List<Text> fightAttrValues;
|
[SerializeField] List<Image> fightAttrStates;
|
[SerializeField] Text skillDesc;
|
[SerializeField] GameObject decomposeObject;
|
[SerializeField] Toggle decomposeCheck;
|
[SerializeField] Button decomposeButton;
|
[SerializeField] Button exchangeButton;
|
[SerializeField] Button putonButton;
|
|
[SerializeField] UIEffectPlayer uieffect;
|
|
int cmpResult = 0; // 装备对比结果 0相同 1更强 2更弱
|
|
int selectMinggePresetID = 0;
|
|
void Start()
|
{
|
if (putonButton == null)
|
{
|
return;
|
}
|
putonButton.AddListener(() =>
|
{
|
MinggeManager.Instance.SendChangeMingge(selectMinggePresetID, MinggeManager.Instance.selectFloorEquip.gridIndex, decomposeCheck.isOn);
|
});
|
|
exchangeButton.AddListener(ExchangeEquip);
|
decomposeButton.AddListener(DecomposeEquip);
|
|
decomposeCheck.onValueChanged.RemoveAllListeners();
|
decomposeCheck.onValueChanged.AddListener((bool isOn) =>
|
{
|
MinggeManager.Instance.isMGEquipUIDecomposeToggle = !MinggeManager.Instance.isMGEquipUIDecomposeToggle;
|
});
|
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="equip">本件命格物品数据</param>
|
/// <param name="isNewEquip">是否新装备(即命格掉落背包里的装备)</param>
|
/// <param name="oldEquip">比对的装备</param>
|
/// <param name="selectPresetID">选中的方案对比</param>
|
public void Display(ItemModel equip, bool isNewEquip, ItemModel oldEquip, int selectPresetID)
|
{
|
selectMinggePresetID = selectPresetID;
|
if (oldEquip == null)
|
cmpResult = 1;
|
|
itemCell.Display(equip.guid);
|
string qualityName = Language.Get("L1039", MGGuayuQualityConfig.Get(equip.config.ItemColor).ColorName);
|
itemName.text = UIHelper.AppendColor(equip.config.ItemColor, qualityName + equip.config.ItemName, true, 2);
|
itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor);
|
nameBG.SetSprite("MinggeNameBG" + equip.config.ItemColor);
|
bgFlower.color = UIHelper.GetUIColor(equip.config.ItemColor + 1);
|
|
var activePresetCnt = FuncPresetManager.Instance.GetUnlockCnt((int)FuncPresetType.Mingge);
|
if (!isNewEquip)
|
{
|
presetGO.SetActive(activePresetCnt > 1);
|
presetName.text = FuncPresetManager.Instance.GetFuncPreset((int)FuncPresetType.Mingge, MinggeManager.Instance.equipShowPresetID).PresetName;
|
}
|
else
|
{
|
if (oldEquip == null)
|
{
|
presetGO.SetActive(activePresetCnt > 1);
|
presetName.text = FuncPresetManager.Instance.GetFuncPreset((int)FuncPresetType.Mingge, MinggeManager.Instance.equipShowPresetID).PresetName;
|
}
|
else
|
{
|
presetGO.SetActive(false);
|
}
|
decomposeCheck.isOn = MinggeManager.Instance.isMGEquipUIDecomposeToggle;
|
|
if (oldEquip == null)
|
{
|
decomposeObject.SetActive(false);
|
decomposeButton.SetActive(false);
|
exchangeButton.SetActive(false);
|
putonButton.SetActive(true);
|
}
|
else
|
{
|
decomposeObject.SetActive(true);
|
decomposeButton.SetActive(true);
|
exchangeButton.SetActive(true);
|
putonButton.SetActive(false);
|
}
|
|
|
long showFightPower = FightPowerManager.Instance.GetFightPowerMinggeChange(MinggeManager.Instance.selectFloorEquip, selectPresetID);
|
|
if (showFightPower <= 0)
|
{
|
fightPowerNum.text = UIHelper.AppendColor(TextColType.Red, $"-{UIHelper.ReplaceLargeNum(Math.Abs(showFightPower))}", false);
|
cmpResult = 2;
|
}
|
else
|
{
|
cmpResult = showFightPower > 0 ? 1 : 0;
|
fightPowerNum.text = UIHelper.AppendColor(TextColType.Green, $"+{UIHelper.ReplaceLargeNum(showFightPower)}", false);
|
|
}
|
}
|
|
var fightAttrs = EquipModel.Instance.GetEquipFightAttrs(equip);
|
var fightValues = EquipModel.Instance.GetEquipFightValues(equip);
|
|
|
for (var i = 0; i < fightAttrNames.Count; i++)
|
{
|
if (i >= fightAttrs.Count)
|
{
|
//显示锁住
|
fightAttrNames[i].text = Language.Get("Mingge27", MinggeManager.Instance.unlockAttrLVList[i - 1]);
|
fightAttrValues[i].SetActive(false);
|
}
|
else
|
{
|
fightAttrNames[i].text = PlayerPropertyConfig.Get(fightAttrs[i]).Name;
|
fightAttrValues[i].SetActive(true);
|
fightAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(fightAttrs[i], fightValues[i]);
|
}
|
}
|
|
ShowAttrState(isNewEquip);
|
RefreshEffect(equip);
|
|
var skillID = EquipModel.Instance.GetEquipSkillID(equip);
|
if (skillID == 0)
|
{
|
skillDesc.text = "";
|
}
|
else
|
{
|
var dict = MinggeManager.Instance.GetMinggeSkillCountDictByPresetID(selectMinggePresetID);
|
//如果是旧装备 显示当前数量;新装备不同技能数量+1,同技能不变
|
var hasCnt = dict.ContainsKey(skillID) ? dict[skillID] : 0;
|
var oldSkillID = isNewEquip && oldEquip != null ? EquipModel.Instance.GetEquipSkillID(oldEquip) : 0;
|
var showCnt = isNewEquip ? (oldSkillID == skillID ? hasCnt : hasCnt + 1) : hasCnt;
|
|
skillDesc.text = Language.Get("L1039", Language.Get($"MinggeSkillType_{skillID}")) +
|
SkillConfig.Get(skillID + showCnt - 1).Description + " " + Language.Get("HeroFates11", showCnt, MinggeManager.Instance.maxSuiteSkillCount);
|
}
|
}
|
|
|
void RefreshEffect(ItemModel equip)
|
{
|
int effectID = EquipModel.Instance.equipUIEffects[Math.Min(equip.config.ItemColor + 1, EquipModel.Instance.equipUIEffects.Length) - 1];
|
if (effectID == 0)
|
{
|
uieffect.Stop();
|
}
|
else
|
{
|
uieffect.Stop();
|
uieffect.effectId = effectID;
|
uieffect.Play();
|
}
|
|
}
|
|
|
//替换装备
|
void ExchangeEquip()
|
{
|
//穿更弱装备 要提示
|
if (cmpResult == 2 && decomposeCheck.isOn)
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
Language.Get("Mingge28"), (bool ok) =>
|
{
|
if (ok)
|
{
|
MinggeManager.Instance.SendChangeMingge(selectMinggePresetID, MinggeManager.Instance.selectFloorEquip.gridIndex, decomposeCheck.isOn);
|
}
|
|
});
|
}
|
else
|
{
|
MinggeManager.Instance.SendChangeMingge(selectMinggePresetID, MinggeManager.Instance.selectFloorEquip.gridIndex, decomposeCheck.isOn);
|
}
|
|
}
|
|
//分解装备
|
void DecomposeEquip()
|
{
|
//分解更强装备要提示
|
if (cmpResult == 1)
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
Language.Get("Mingge29"), (bool ok) =>
|
{
|
if (ok)
|
{
|
MinggeManager.Instance.SendDecompose(new byte[] { (byte)MinggeManager.Instance.selectFloorEquip.gridIndex });
|
}
|
|
});
|
}
|
else
|
{
|
var item = PackManager.Instance.GetItemByIndex(PackType.MinggeDrop, MinggeManager.Instance.selectFloorEquip.gridIndex);
|
if (item != null)
|
{
|
MinggeManager.Instance.SendDecompose(new byte[] { (byte)MinggeManager.Instance.selectFloorEquip.gridIndex });
|
}
|
else
|
{
|
Debug.LogError("命格掉落物品已被删除" + MinggeManager.Instance.selectFloorEquip.gridIndex);
|
UIManager.Instance.CloseWindow<MinggeEquipWin>();
|
}
|
}
|
}
|
|
void ShowAttrState(bool isNewEquip)
|
{
|
ItemModel oldEquip = null;
|
|
if (isNewEquip)
|
{
|
//找是否有对比装备
|
oldEquip = PackManager.Instance.GetItemByIndex(PackType.Mingge, MinggeManager.Instance.GetPackIndex(selectMinggePresetID,
|
MinggeManager.Instance.selectFloorEquip.config.EquipPlace));
|
}
|
|
if (oldEquip == null)
|
{
|
//单装备 和 旧装备会走这个逻辑
|
for (int i = 0; i < fightAttrStates.Count; i++)
|
{
|
if (!isNewEquip)
|
{
|
//对比的时候旧装备UI
|
oldEquip = PackManager.Instance.GetItemByIndex(PackType.Mingge, MinggeManager.Instance.GetPackIndex(selectMinggePresetID,
|
MinggeManager.Instance.selectFloorEquip.config.EquipPlace));
|
var list2 = EquipModel.Instance.GetEquipFightValues(oldEquip);
|
|
if (list2 == null || i >= list2.Count)
|
{
|
fightAttrStates[i].SetActive(true);
|
fightAttrStates[i].SetOrgSprite("heroreborn_img_108", "Common");
|
fightAttrStates[i].SetNativeSize();
|
fightAttrStates[i].transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
|
}
|
else
|
{
|
fightAttrStates[i].SetActive(false);
|
}
|
continue;
|
}
|
|
|
var list = EquipModel.Instance.GetEquipFightValues(MinggeManager.Instance.selectFloorEquip);
|
if (list == null || i >= list.Count)
|
{
|
fightAttrStates[i].SetActive(true);
|
fightAttrStates[i].SetOrgSprite("heroreborn_img_108", "Common");
|
fightAttrStates[i].SetNativeSize();
|
fightAttrStates[i].transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
|
}
|
else
|
{
|
fightAttrStates[i].SetActive(true);
|
fightAttrStates[i].SetSprite("GiftState2");
|
fightAttrStates[i].SetNativeSize();
|
|
fightAttrStates[i].transform.localScale = Vector3.one;
|
}
|
}
|
|
return;
|
}
|
|
|
|
for (int i = 0; i < fightAttrStates.Count; i++)
|
{
|
//战斗属性 排序和个数不一致 根据ID进行对比
|
var list = EquipModel.Instance.GetEquipFightValues(MinggeManager.Instance.selectFloorEquip);
|
var list2 = EquipModel.Instance.GetEquipFightValues(oldEquip);
|
|
var idList = EquipModel.Instance.GetEquipFightAttrs(MinggeManager.Instance.selectFloorEquip);
|
var idList2 = EquipModel.Instance.GetEquipFightAttrs(oldEquip);
|
|
if (list == null || i >= list.Count)
|
{
|
fightAttrStates[i].SetActive(true);
|
fightAttrStates[i].SetOrgSprite("heroreborn_img_108", "Common");
|
fightAttrStates[i].SetNativeSize();
|
fightAttrStates[i].transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
|
}
|
else
|
{
|
fightAttrStates[i].transform.localScale = Vector3.one;
|
fightAttrStates[i].SetActive(true);
|
var value = !list2.IsNullOrEmpty() && i < list2.Count ? list2[i] : 0;
|
var id = !idList2.IsNullOrEmpty() && i < idList2.Count ? idList2[i] : 0;
|
if (idList[i] == id && list[i] == value)
|
{
|
fightAttrStates[i].SetActive(false);
|
}
|
else
|
{
|
fightAttrStates[i].SetActive(true);
|
if (idList[i] != id)
|
{
|
fightAttrStates[i].SetSprite("GiftState1");
|
}
|
else
|
{
|
fightAttrStates[i].SetSprite(list[i] > value ? "EquipUpIcon" : "EquipDownIcon");
|
}
|
fightAttrStates[i].SetNativeSize();
|
|
}
|
}
|
}
|
}
|
|
}
|