using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
public class MinggeAutoSetWin : UIBase
|
{
|
[SerializeField] ScrollRect scrollRect;
|
[SerializeField] GroupButtonEx[] presetBtns;
|
List<Text> presetNameTexts = new List<Text>();
|
[SerializeField] Button selectQualityBtn; //品质选择
|
[SerializeField] Text qualityText;
|
[SerializeField] ScrollerController qualityScroller;
|
[SerializeField] Toggle startToggle;
|
[SerializeField] Toggle fightPowerToggle; //战斗力
|
[SerializeField] Toggle andFPToggle;
|
[SerializeField] Toggle orFPToggle;
|
[SerializeField] Toggle attrToggle; //属性
|
[SerializeField] Button fightAttrBtn; //六大战斗属性 + 先手
|
[SerializeField] Text fightAttrText;
|
[SerializeField] ScrollerController fightAttrScroller;
|
[SerializeField] Button deFightAttrBtn; //六大战斗抗性属性
|
[SerializeField] Text deFightAttrText;
|
[SerializeField] ScrollerController deFightAttrScroller;
|
[SerializeField] Toggle skillToggle; //技能
|
[SerializeField] Button skillBtn;
|
[SerializeField] Text skillText;
|
[SerializeField] ScrollerController skillScroller;
|
[SerializeField] Toggle andSkillToggle;
|
[SerializeField] Toggle orSkillToggle;
|
[SerializeField] Toggle useMoreItemToggle; //使用更多物品 不勾选默认消耗1个
|
[SerializeField] Button useMoreItemBtn;
|
[SerializeField] Text useMoreItemText;
|
[SerializeField] ScrollerController useMoreItemScroller;
|
[SerializeField] Text itemNameText;
|
[SerializeField] Toggle speedUPToggle; //加速 特效播放加速
|
[SerializeField] Button startBtn;
|
[SerializeField] Button cancelBtn;
|
|
MinggeAutoSet autoSetData;
|
int selectPresetID = 0;
|
|
protected override void InitComponent()
|
{
|
presetNameTexts.Clear();
|
for (int i = 0; i < presetBtns.Length; i++)
|
{
|
int index = i + 1;
|
presetBtns[i].AddListener(() =>
|
{
|
selectPresetID = index;
|
Display();
|
});
|
presetNameTexts.Add(presetBtns[i].GetComponentInChildren<Text>());
|
}
|
selectQualityBtn.AddListener(() =>
|
{
|
qualityScroller.SetActive(true);
|
});
|
startToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
ClickStartToggle(isOn);
|
});
|
fightPowerToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
autoSetData.fightPowerToggle = isOn;
|
FixAndOrFBToggle();
|
FixAndOrSkillToggle();
|
});
|
|
andFPToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
ClickAndOrFPToggle(isOn);
|
});
|
orFPToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
ClickAndOrFPToggle(isOn);
|
});
|
|
attrToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
autoSetData.fightAttrToggle = isOn;
|
FixAndOrFBToggle();
|
FixAndOrSkillToggle();
|
});
|
|
fightAttrBtn.AddListener(() =>
|
{
|
fightAttrScroller.SetActive(true);
|
});
|
deFightAttrBtn.AddListener(() =>
|
{
|
deFightAttrScroller.SetActive(true);
|
});
|
|
skillToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
autoSetData.skillToggle = isOn;
|
FixAndOrFBToggle();
|
FixAndOrSkillToggle();
|
});
|
|
skillBtn.AddListener(() =>
|
{
|
skillScroller.SetActive(true);
|
});
|
andSkillToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
ClickAndOrSkillToggle(isOn);
|
});
|
orSkillToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
ClickAndOrSkillToggle(isOn);
|
});
|
useMoreItemToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
MinggeManager.Instance.autoCostToggle = isOn;
|
});
|
useMoreItemBtn.AddListener(() =>
|
{
|
useMoreItemScroller.SetActive(true);
|
});
|
speedUPToggle.onValueChanged.AddListener((bool isOn) =>
|
{
|
if (!InvestModel.Instance.IsInvested(InvestModel.monthCardType))
|
{
|
speedUPToggle.SetIsOnWithoutNotify(false);
|
SysNotifyMgr.Instance.ShowTip("MinggeAuto5");
|
UIManager.Instance.OpenWindow<PrivilegeCardWin>();
|
return;
|
}
|
MinggeManager.Instance.autoSpeedUP = isOn;
|
});
|
startBtn.AddListener(() =>
|
{
|
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)
|
{
|
CloseWindow();
|
UIManager.Instance.OpenWindow<MinggePrayWin>();
|
}
|
else
|
{
|
MinggeManager.Instance.StartAuto(true);
|
}
|
|
MinggeManager.Instance.qlNotNotify = isToggle;
|
},
|
false
|
);
|
return;
|
}
|
|
MinggeManager.Instance.StartAuto(true);
|
});
|
cancelBtn.AddListener(() =>
|
{
|
MinggeManager.Instance.StartAuto(false);
|
cancelBtn.SetActive(false);
|
startBtn.SetActive(true);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
selectPresetID = FuncPresetManager.Instance.GetFuncPresetID((int)FuncPresetType.Mingge);
|
if (MinggeManager.Instance.isStartAuto)
|
{
|
MinggeManager.Instance.isPauseAuto = true;
|
SysNotifyMgr.Instance.ShowTip("MinggeAuto4");
|
}
|
|
qualityScroller.OnRefreshCell += OnRefreshQualityCell;
|
fightAttrScroller.OnRefreshCell += OnRefreshFightAttrCell;
|
deFightAttrScroller.OnRefreshCell += OnRefreshDeFightAttrCell;
|
skillScroller.OnRefreshCell += OnRefreshSkillCell;
|
useMoreItemScroller.OnRefreshCell += OnRefreshUseMoreItemCell;
|
|
|
CreateScroller();
|
DisplayPresetBtns();
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
MinggeManager.Instance.isPauseAuto = false;
|
if (MinggeManager.Instance.isStartAuto)
|
{
|
SysNotifyMgr.Instance.ShowTip("MinggeAuto3");
|
MinggeManager.Instance.CalcEquip();
|
}
|
|
qualityScroller.OnRefreshCell -= OnRefreshQualityCell;
|
fightAttrScroller.OnRefreshCell -= OnRefreshFightAttrCell;
|
deFightAttrScroller.OnRefreshCell -= OnRefreshDeFightAttrCell;
|
skillScroller.OnRefreshCell -= OnRefreshSkillCell;
|
useMoreItemScroller.OnRefreshCell -= OnRefreshUseMoreItemCell;
|
}
|
|
public void Display()
|
{
|
autoSetData = MinggeManager.Instance.GetMGAutoSet(selectPresetID);
|
if (autoSetData == null)
|
{
|
return;
|
}
|
string qualityName = Language.Get("L1039", MGGuayuQualityConfig.Get(autoSetData.quanlity).ColorName);
|
qualityText.text = Language.Get("Mingge30", UIHelper.AppendColor(autoSetData.quanlity, qualityName, true, 2));
|
|
startToggle.SetIsOnWithoutNotify(autoSetData.startToggle);
|
fightPowerToggle.SetIsOnWithoutNotify(autoSetData.fightPowerToggle);
|
andFPToggle.SetIsOnWithoutNotify(autoSetData.andOrFPToggle == 1);
|
orFPToggle.SetIsOnWithoutNotify(autoSetData.andOrFPToggle == 2);
|
attrToggle.SetIsOnWithoutNotify(autoSetData.fightAttrToggle);
|
|
fightAttrText.text = autoSetData.fightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.fightAttrID).Name;
|
deFightAttrText.text = autoSetData.deFightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.deFightAttrID).Name;
|
|
skillToggle.SetIsOnWithoutNotify(autoSetData.skillToggle);
|
skillText.text = autoSetData.skillID == 0 ? Language.Get("Mingge33") : Language.Get($"MinggeSkillType_{autoSetData.skillID}");
|
andSkillToggle.SetIsOnWithoutNotify(autoSetData.andOrSkillToggle == 1);
|
orSkillToggle.SetIsOnWithoutNotify(autoSetData.andOrSkillToggle == 2);
|
|
useMoreItemToggle.SetIsOnWithoutNotify(MinggeManager.Instance.autoCostToggle);
|
useMoreItemText.text = MinggeManager.Instance.autoCostCount.ToString();
|
|
itemNameText.text = ItemConfig.Get(MinggeManager.Instance.tyItemID).ItemName;
|
cancelBtn.SetActive(MinggeManager.Instance.isStartAuto);
|
startBtn.SetActive(!MinggeManager.Instance.isStartAuto);
|
speedUPToggle.SetIsOnWithoutNotify(MinggeManager.Instance.autoSpeedUP);
|
}
|
|
public void DisplayPresetBtns()
|
{
|
var cnt = FuncPresetManager.Instance.GetUnlockCnt((int)FuncPresetType.Mingge);
|
if (cnt == 1)
|
{
|
cnt = 0;
|
}
|
if (cnt > 0)
|
{
|
scrollRect.SetActive(true);
|
for (int i = 0; i < presetBtns.Length; i++)
|
{
|
if (i < cnt)
|
{
|
presetBtns[i].SetActive(true);
|
presetNameTexts[i].text = FuncPresetManager.Instance.GetFuncPreset((int)FuncPresetType.Mingge, i + 1).PresetName;
|
}
|
else
|
{
|
presetBtns[i].SetActive(false);
|
}
|
}
|
presetBtns[selectPresetID - 1].SelectBtn();
|
//滚动到 selectPresetID 位置
|
scrollRect.horizontalNormalizedPosition = selectPresetID < 4 ? 0 : selectPresetID * 1f / cnt;
|
}
|
else
|
{
|
scrollRect.SetActive(false);
|
}
|
}
|
|
|
void ClickStartToggle(bool isOn)
|
{
|
autoSetData.startToggle = isOn;
|
if (!isOn)
|
{
|
//检查多方案中至少一个勾选
|
if (!MinggeManager.Instance.CanChangeStartToFalse(selectPresetID))
|
{
|
startToggle.SetIsOnWithoutNotify(true);
|
autoSetData.startToggle = true;
|
SysNotifyMgr.Instance.ShowTip("MinggeAuto2");
|
}
|
}
|
|
}
|
|
void ClickAndOrFPToggle(bool isOn)
|
{
|
//只有战斗和其他的激活后才能 勾选
|
FixAndOrFBToggle();
|
|
|
}
|
|
void ClickAndOrSkillToggle(bool isOn)
|
{
|
//技能和其他任一激活后才能 勾选
|
FixAndOrSkillToggle();
|
|
|
}
|
|
void FixAndOrFBToggle()
|
{
|
//只有战斗和属性激活后才能 勾选
|
|
//帮取消的情况
|
if (!fightPowerToggle.isOn || !attrToggle.isOn)
|
{
|
if (andFPToggle.isOn)
|
{
|
andFPToggle.SetIsOnWithoutNotify(false);
|
|
}
|
|
if (orFPToggle.isOn)
|
{
|
orFPToggle.SetIsOnWithoutNotify(false);
|
}
|
}
|
|
//帮勾选的情况,默认勾同时
|
if (fightPowerToggle.isOn && attrToggle.isOn)
|
{
|
if (!andFPToggle.isOn && !orFPToggle.isOn)
|
{
|
andFPToggle.SetIsOnWithoutNotify(true);
|
}
|
}
|
|
RefreshAndOrFBToggleValue();
|
}
|
|
void FixAndOrSkillToggle()
|
{
|
//技能和其他任一激活后才能 勾选
|
|
//帮取消的情况
|
if (!skillToggle.isOn || (!attrToggle.isOn && !fightPowerToggle.isOn))
|
{
|
if (andSkillToggle.isOn)
|
{
|
andSkillToggle.SetIsOnWithoutNotify(false);
|
}
|
|
if (orSkillToggle.isOn)
|
{
|
orSkillToggle.SetIsOnWithoutNotify(false);
|
}
|
}
|
|
//帮勾选的情况,默认勾同时
|
if (skillToggle.isOn && (attrToggle.isOn || fightPowerToggle.isOn))
|
{
|
if (!andSkillToggle.isOn && !orSkillToggle.isOn)
|
{
|
orSkillToggle.SetIsOnWithoutNotify(true);
|
}
|
}
|
|
RefreshAndOrSkillToggleValue();
|
}
|
|
|
void RefreshAndOrFBToggleValue()
|
{
|
if (andFPToggle.isOn)
|
{
|
autoSetData.andOrFPToggle = 1;
|
}
|
else if (orFPToggle.isOn)
|
{
|
autoSetData.andOrFPToggle = 2;
|
}
|
else
|
{
|
autoSetData.andOrFPToggle = 0;
|
}
|
}
|
|
void RefreshAndOrSkillToggleValue()
|
{
|
if (andSkillToggle.isOn)
|
{
|
autoSetData.andOrSkillToggle = 1;
|
}
|
else if (orSkillToggle.isOn)
|
{
|
autoSetData.andOrSkillToggle = 2;
|
}
|
else
|
{
|
autoSetData.andOrSkillToggle = 0;
|
}
|
}
|
|
|
void CreateScroller()
|
{
|
var rateList = MinggeManager.Instance.GetQLRate(MinggeManager.Instance.m_Lingying);
|
//倒序删除 概率为0的 直到有概率大于0的
|
for (int i = rateList.Count - 1; i >= 0; i--)
|
{
|
if (rateList[i] == 0)
|
{
|
rateList.RemoveAt(i);
|
}
|
else
|
{
|
break;
|
}
|
}
|
var rect = qualityScroller.GetComponent<RectTransform>();
|
rect.sizeDelta = new Vector2(rect.sizeDelta.x, rateList.Count * 50);
|
qualityScroller.Refresh();
|
for (int i = 1; i <= rateList.Count; i++)
|
{
|
qualityScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
qualityScroller.Restart();
|
|
fightAttrScroller.Refresh();
|
for (int i = 0; i < MinggeManager.Instance.fightAttrIDList.Length; i++)
|
{
|
fightAttrScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.fightAttrIDList[i]);
|
}
|
fightAttrScroller.Restart();
|
|
deFightAttrScroller.Refresh();
|
for (int i = 0; i < MinggeManager.Instance.deFightAttrIDList.Length; i++)
|
{
|
deFightAttrScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.deFightAttrIDList[i]);
|
}
|
deFightAttrScroller.Restart();
|
|
skillScroller.Refresh();
|
//特殊处理 需要加上第一个任意
|
for (int i = 0; i <= MinggeManager.Instance.minggeSkillTypeIDList.Length; i++)
|
{
|
if (i == 0)
|
{
|
skillScroller.AddCell(ScrollerDataType.Header, 0);
|
}
|
else
|
{
|
skillScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.minggeSkillTypeIDList[i - 1]);
|
}
|
}
|
skillScroller.Restart();
|
|
useMoreItemScroller.Refresh();
|
for (int i = 0; i < MinggeManager.Instance.autoCostCntList.Length; i++)
|
{
|
useMoreItemScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.autoCostCntList[i]);
|
}
|
useMoreItemScroller.Restart();
|
}
|
|
|
void OnRefreshQualityCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as MinggeAutoSetCell;
|
_cell.Display(1, cell.index, autoSetData, (value) =>
|
{
|
qualityScroller.SetActive(false);
|
autoSetData.quanlity = value;
|
string qualityName = Language.Get("L1039", MGGuayuQualityConfig.Get(autoSetData.quanlity).ColorName);
|
qualityText.text = Language.Get("Mingge30", UIHelper.AppendColor(autoSetData.quanlity, qualityName, true, 2));
|
});
|
}
|
|
|
void OnRefreshFightAttrCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as MinggeAutoSetCell;
|
_cell.Display(2, cell.index, autoSetData, (value) =>
|
{
|
fightAttrScroller.SetActive(false);
|
autoSetData.fightAttrID = value;
|
fightAttrText.text = autoSetData.fightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.fightAttrID).Name;
|
|
});
|
}
|
|
|
void OnRefreshDeFightAttrCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as MinggeAutoSetCell;
|
_cell.Display(3, cell.index, autoSetData, (value) =>
|
{
|
deFightAttrScroller.SetActive(false);
|
autoSetData.deFightAttrID = value;
|
deFightAttrText.text = autoSetData.deFightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.deFightAttrID).Name;
|
|
});
|
}
|
|
void OnRefreshSkillCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as MinggeAutoSetCell;
|
_cell.Display(4, cell.index, autoSetData, (value) =>
|
{
|
skillScroller.SetActive(false);
|
autoSetData.skillID = value;
|
skillText.text = autoSetData.skillID == 0 ? Language.Get("Mingge33") : Language.Get($"MinggeSkillType_{autoSetData.skillID}");
|
|
});
|
}
|
|
void OnRefreshUseMoreItemCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as MinggeAutoSetCell;
|
_cell.Display(5, cell.index, autoSetData, (value) =>
|
{
|
useMoreItemScroller.SetActive(false);
|
MinggeManager.Instance.autoCostCount = value;
|
useMoreItemText.text = MinggeManager.Instance.autoCostCount.ToString();
|
});
|
}
|
|
|
|
}
|