using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
public class MinggeWin : UIBase
|
{
|
[SerializeField] Button seeAttrBtn;
|
[SerializeField] MinggeEquipCell[] equipCells;
|
[SerializeField] public UIEffectPlayer tyEffect; //推演特效
|
[SerializeField] Image dropIcon;
|
[SerializeField] Image dropSkillIcon;
|
[SerializeField] MoneyMoveByPath moneyMoveByPathCell; //掉落物金钱
|
[SerializeField] Transform caseesObj;
|
[SerializeField] Text rankLevelText;
|
[SerializeField] Text processExpText;
|
[SerializeField] Image processImg;
|
[SerializeField] UIEffectPlayer processEffect;
|
[SerializeField] UIEffectPlayer lvUpEffect;
|
[SerializeField] Text[] suiteNameTexts; //带按钮
|
[SerializeField] Text[] baseAttrTexts;
|
[SerializeField] Text[] fightAttrTexts;
|
|
[SerializeField] Button autoBtn;
|
[SerializeField] UIEffectPlayer autoEffect; //开
|
[SerializeField] Image autoImg; //关
|
[SerializeField] Button prayBtn;
|
[SerializeField] Button tyBtn;
|
[SerializeField] Image tyItemImg;
|
[SerializeField] Text tyItemCntText;
|
[SerializeField] Button funPresetBtn;
|
|
FuncPresetChooseCells presetChooseCells;
|
int lastLV = 0;
|
int lastExp = 0;
|
protected override void InitComponent()
|
{
|
var presetObj = UIUtility.CreateWidget("FuncPresetChooseCells", "FuncPresetChooseCells");
|
presetObj.transform.SetParentEx(caseesObj, Vector3.zero, Quaternion.identity, Vector3.one);
|
presetChooseCells = presetObj.GetComponent<FuncPresetChooseCells>();
|
presetChooseCells.ChangeAlignment(TextAnchor.MiddleCenter);
|
seeAttrBtn.AddListener(() =>
|
{
|
var skillTypeDict = MinggeManager.Instance.GetMinggeSkillTypeIDDict();
|
var skillDict = new Dictionary<int, int>();
|
foreach (var kvp in skillTypeDict)
|
{
|
skillDict[kvp.Key] = kvp.Value.Count;
|
}
|
AttributeManager.Instance.OpenMinggeSimpleAttributeWin(MinggeManager.Instance.minggeAttrDict, skillDict);
|
});
|
tyBtn.AddListener(CheckTuiyan);
|
for (int i = 0; i < suiteNameTexts.Length; i++)
|
{
|
int index = i;
|
suiteNameTexts[i].GetComponent<Button>().AddListener(() =>
|
{
|
ClickSuite(index);
|
});
|
}
|
prayBtn.AddListener(() =>
|
{
|
UIManager.Instance.OpenWindow<MinggePrayWin>();
|
});
|
|
autoBtn.AddListener(AutoTY);
|
funPresetBtn.AddListener(() =>
|
{
|
FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.Story);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
|
PackManager.Instance.RefreshItemEvent += RefreshItemEvent;
|
PackManager.Instance.DeleteItemEvent += DeleteDropItem;
|
MinggeManager.Instance.OnMinggeInfoUpdate += OnMinggeInfoUpdate;
|
UIManager.Instance.OnCloseWindow += OnCloseWindow;
|
FuncPresetManager.Instance.OnFuncPresetUseDataEvent += OnFuncPresetUseDataEvent;
|
MinggeManager.Instance.ChangeAutoEvent += ChangeAutoEvent;
|
lastLV = MinggeManager.Instance.m_GanwuLV;
|
lastExp = MinggeManager.Instance.m_GanwuExp;
|
Display();
|
|
|
}
|
|
protected override void OnPreClose()
|
{
|
PackManager.Instance.RefreshItemEvent -= RefreshItemEvent;
|
PackManager.Instance.DeleteItemEvent -= DeleteDropItem;
|
MinggeManager.Instance.OnMinggeInfoUpdate -= OnMinggeInfoUpdate;
|
UIManager.Instance.OnCloseWindow -= OnCloseWindow;
|
FuncPresetManager.Instance.OnFuncPresetUseDataEvent -= OnFuncPresetUseDataEvent;
|
MinggeManager.Instance.ChangeAutoEvent -= ChangeAutoEvent;
|
}
|
|
protected override void NextFrameAfterOpen()
|
{
|
if (MinggeManager.Instance.isPauseAuto)
|
{
|
MinggeManager.Instance.CalcEquip();
|
}
|
}
|
|
|
void OnCloseWindow(UIBase win)
|
{
|
if (win is MinggeEquipWin)
|
{
|
if (MinggeManager.Instance.m_GanwuExp == 0)
|
{
|
lvUpEffect.Play();
|
}
|
processEffect.Play();
|
}
|
}
|
|
void OnFuncPresetUseDataEvent(int type)
|
{
|
MinggeManager.Instance.RefrehMinggeAttrs();
|
Display();
|
}
|
|
void ChangeAutoEvent()
|
{
|
if (MinggeManager.Instance.isStartAuto)
|
{
|
autoImg.SetActive(false);
|
autoEffect.Play();
|
}
|
else
|
{
|
autoImg.SetActive(true);
|
autoEffect.Stop();
|
}
|
}
|
|
void Display()
|
{
|
DisplayMGGanwu();
|
DisplaySlotEquip();
|
DisplayDrop();
|
|
DisplayCostItem();
|
moneyMoveByPathCell.SetActive(false);
|
presetChooseCells.Display((int)BattlePreSetType.Story, (int)FuncPresetType.Mingge);
|
|
funPresetBtn.SetActive(FuncPresetManager.Instance.IsPreShow());
|
ChangeAutoEvent();
|
|
}
|
void RefreshItemEvent(PackType type, int index, int itemID)
|
{
|
if (type == PackType.Mingge)
|
{
|
DisplaySlotEquip();
|
}
|
else if (type == PackType.MinggeDrop)
|
{
|
DisplayDrop();
|
}
|
else if (type == PackType.Item)
|
{
|
if (itemID == MinggeManager.Instance.tyItemID)
|
{
|
DisplayCostItem();
|
}
|
}
|
}
|
|
void DisplayCostItem()
|
{
|
tyItemImg.SetItemSprite(MinggeManager.Instance.tyItemID);
|
tyItemCntText.text = UIHelper.ShowUseItem(PackType.Item, MinggeManager.Instance.tyItemID, 1);
|
}
|
|
void DisplaySlotEquip()
|
{
|
MinggeManager.Instance.RefrehMinggeAttrs();
|
for (int i = 0; i < equipCells.Length; i++)
|
{
|
equipCells[i].Display();
|
}
|
DisplaySuite();
|
DisplayAttr();
|
}
|
|
void DisplayAttr()
|
{
|
var attrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.baseType];
|
string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false);
|
for (int i = 0; i < baseAttrTexts.Length; i++)
|
{
|
var value = MinggeManager.Instance.minggeAttrDict.ContainsKey(attrIDList[i]) ? MinggeManager.Instance.minggeAttrDict[attrIDList[i]] : 0;
|
baseAttrTexts[i].text = PlayerPropertyConfig.GetFullDescription(attrIDList[i], value, format);
|
}
|
|
List<int> attrIDList1 = new List<int>();
|
attrIDList1.AddRange(PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.fightType]);
|
attrIDList1.AddRange(PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.fightAntiType]);
|
for (int i = 0; i < fightAttrTexts.Length; i++)
|
{
|
var value = MinggeManager.Instance.minggeAttrDict.ContainsKey(attrIDList1[i]) ? MinggeManager.Instance.minggeAttrDict[attrIDList1[i]] : 0;
|
fightAttrTexts[i].text = PlayerPropertyConfig.GetFullDescription(attrIDList1[i], value, format);
|
}
|
}
|
|
void DisplayDrop()
|
{
|
//找到第一件显示
|
var dropItems = PackManager.Instance.GetItems(PackType.MinggeDrop);
|
if (dropItems.IsNullOrEmpty())
|
{
|
dropIcon.SetActive(false);
|
// moneyMoveByPathCell.SetActive(false);
|
return;
|
}
|
dropIcon.SetActive(true);
|
dropIcon.SetOrgSprite(dropItems[0].config.IconKey, "Icon");
|
var skillID = EquipModel.Instance.GetEquipSkillID(dropItems[0]);
|
if (skillID == 0)
|
{
|
dropSkillIcon.SetActive(false);
|
}
|
else
|
{
|
dropSkillIcon.SetActive(true);
|
dropSkillIcon.SetSprite($"MinggeSkill_{skillID}");
|
}
|
}
|
|
void DeleteDropItem(PackType packType, string guid, int itemID, int index, int clearType)
|
{
|
if (packType != PackType.MinggeDrop)
|
return;
|
|
dropIcon.SetActive(false);
|
moneyMoveByPathCell.SetActive(true);
|
moneyMoveByPathCell.PlayAnimation(MinggeManager.Instance.deitemID, 8, 2);
|
}
|
|
|
void CheckTuiyan()
|
{
|
if (!MinggeManager.Instance.qlNotNotify && PackManager.Instance.GetItemCountByID(PackType.Item, MinggeManager.Instance.qlItemID) > 0)
|
{
|
ConfirmCancel.ToggleConfirmCancel(
|
Language.Get("L1003"),
|
Language.Get("Mingge31"),
|
Language.Get("TianziBillborad08"),
|
Language.Get("Mingge35"),
|
Language.Get("Mingge34"),
|
(bool isOK, bool isToggle) =>
|
{
|
if (isOK)
|
{
|
UIManager.Instance.OpenWindow<MinggePrayWin>();
|
}
|
else
|
{
|
SendTuiyan();
|
}
|
|
MinggeManager.Instance.qlNotNotify = isToggle;
|
},
|
false
|
);
|
return;
|
}
|
SendTuiyan();
|
}
|
|
void SendTuiyan()
|
{
|
if (MinggeManager.Instance.isStartAuto)
|
{
|
MinggeManager.Instance.StartAuto(false);
|
}
|
if (MinggeManager.Instance.CalcEquip())
|
{
|
return;
|
}
|
|
if (MinggeManager.Instance.waitTYOPPack)
|
{
|
return;
|
}
|
|
if (!ItemLogicUtility.CheckItemCount(PackType.Item, MinggeManager.Instance.tyItemID, 1, 2))
|
{
|
TimingGiftManager.Instance.TryAddWhenInsufficient(6, PackType.Item, MinggeManager.Instance.tyItemID, 1);
|
return;
|
}
|
|
// 如果正好消耗完,不触发固定概率的判定
|
if (!TimingGiftManager.Instance.TryAddWhenExactConsumption(6, PackType.Item, MinggeManager.Instance.tyItemID, 1))
|
{
|
TimingGiftManager.Instance.TryAddWithFixedProbabilityWhenSufficient(6, MinggeManager.Instance.tyItemID, 1);
|
}
|
|
if (MinggeManager.Instance.isStartAuto)
|
{
|
MinggeManager.Instance.StartAuto(false);
|
}
|
tyEffect.onComplete = () =>
|
{
|
MinggeManager.Instance.SendTY(1);
|
};
|
tyEffect.Play();
|
tyEffect.SetSpeed(1);
|
}
|
|
|
void OnMinggeInfoUpdate()
|
{
|
DisplayMGGanwu();
|
presetChooseCells.Display((int)BattlePreSetType.Story, (int)FuncPresetType.Mingge);
|
}
|
|
void DisplayMGGanwu()
|
{
|
var config = MGGanwuLVConfig.Get(MinggeManager.Instance.m_GanwuLV);
|
rankLevelText.text = Language.Get("Mingge26", UIHelper.ChineseNumber(MinggeManager.Instance.m_GanwuLV));
|
processExpText.text = $"{MinggeManager.Instance.m_GanwuExp}/{config.NextNeedExp}";
|
processImg.fillAmount = MinggeManager.Instance.m_GanwuExp / (float)config.NextNeedExp;
|
|
if (lastLV != MinggeManager.Instance.m_GanwuLV)
|
{
|
lastLV = MinggeManager.Instance.m_GanwuLV;
|
lvUpEffect.Play();
|
}
|
|
if (lastExp != MinggeManager.Instance.m_GanwuExp)
|
{
|
lastExp = MinggeManager.Instance.m_GanwuExp;
|
processEffect.Play();
|
}
|
}
|
|
void DisplaySuite()
|
{
|
var dict = MinggeManager.Instance.GetMinggeSkillTypeIDDict();
|
var keys = dict.Keys.ToList();
|
keys.Sort();
|
for (int i = 0; i < suiteNameTexts.Length; i++)
|
{
|
if (i >= keys.Count)
|
{
|
suiteNameTexts[i].SetActive(false);
|
continue;
|
}
|
suiteNameTexts[i].SetActive(true);
|
suiteNameTexts[i].text = Language.Get($"MinggeSkillType_{keys[i]}") + $"({dict[keys[i]].Count})";
|
}
|
}
|
|
void ClickSuite(int index)
|
{
|
var dict = MinggeManager.Instance.GetMinggeSkillTypeIDDict();
|
var keys = dict.Keys.ToList();
|
keys.Sort();
|
if (index >= keys.Count)
|
return;
|
|
ItemTipUtility.Show(dict[keys[index]][0], false);
|
}
|
|
void AutoTY()
|
{
|
if (InvestModel.Instance.IsInvested(InvestModel.monthCardType) ||
|
PlayerDatas.Instance.baseData.realmLevel >= MinggeManager.Instance.needOfficialRank)
|
{
|
UIManager.Instance.OpenWindow<MinggeAutoSetWin>();
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("MinggeAuto6", RealmConfig.Get(MinggeManager.Instance.needOfficialRank).Name);
|
UIManager.Instance.OpenWindow<PrivilegeCardWin>();
|
}
|
}
|
}
|