123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- /// #pkgName FGUI包名
- /// #panelName UIPanel名字
- /// #UIName = $"{#pkgName}{#panelName}" UIKey名字
- /// 该脚本由模板创建
- /// created by cb 2024
- using System.Collections.Generic;
- using FairyGUI;
- using FL.Data;
- using XGame;
- using XGame.Database;
- using XGame.Framework.UI;
- namespace FL.FGUI
- {
- public class PartnerEpiDetailInfoParam
- {
- public int PlanId;
- /// <summary>
- /// 槽位id,-1为非更换界面打开的详情
- /// </summary>
- public int SlotId;
- public int EpigraphId;
- public int PartnerId;
- }
- /// <summary>
- /// UI逻辑处理类
- /// </summary>
- /// <typeparam name=""></typeparam>
- public partial class PartnerEpiDetailInfoCtrl : UIController<PartnerEpiDetailInfoVM>
- {
- #region 属性
- private int _mwId;
- private int _planId;
- private int _slotId;
- private int _partnerId;
- #endregion
- protected override void OnEnable(object intent)
- {
- var param = intent as PartnerEpiDetailInfoParam;
- _mwId = param.EpigraphId;
- _planId = param.PlanId;
- _slotId = param.SlotId;
- _partnerId = param.PartnerId;
- AddUIListenres();
- UpView();
- }
- protected override void OnDisable()
- {
- RemoveUIListenres();
- }
- #region UI事件
- private void AddUIListenres()
- {
- VM.UpBtn.onClick.Add(OnClickUpBtn);
- VM.DownBtn.onClick.Add(OnClickDownBtn);
- VM.GotoBtn.onClick.Add(OnClickGotoBtn);
- VM.RankUpBtn.onClick.Add(OnClickRankUpBtn);
- EventSingle.Instance.AddListener(EventDefine.EpigraphUpStar, OnEpiUpdate);
- EventSingle.Instance.AddListener(EventDefine.PartnerBinding, UpdateUpDownBtn);
- EventSingle.Instance.AddListener(EventDefine.UpdataItemData, OnItemUpdate);
- }
- private void RemoveUIListenres()
- {
- VM.UpBtn.onClick.Remove(OnClickUpBtn);
- VM.DownBtn.onClick.Remove(OnClickDownBtn);
- VM.GotoBtn.onClick.Remove(OnClickGotoBtn);
- VM.RankUpBtn.onClick.Remove(OnClickRankUpBtn);
- EventSingle.Instance.RemoveListener(EventDefine.EpigraphUpStar, OnEpiUpdate);
- EventSingle.Instance.RemoveListener(EventDefine.PartnerBinding, UpdateUpDownBtn);
- EventSingle.Instance.RemoveListener(EventDefine.UpdataItemData, OnItemUpdate);
- }
- private void OnItemUpdate(int eventId, object args)
- {
- UpProgressInfo();
- }
- private void OnEpiUpdate(int eventId, object args)
- {
- UpProgressInfo();
- UpSkillList();
- }
- private void OnClickDownBtn(EventContext eventContext)
- {
- var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
- if (info == null)
- {
- Log.Error($"铭文数据不存在tableId:{_mwId}");
- return;
- }
- if (PartnersData.Instance.UsePlanId == _planId)
- {
- EpigraphService.Instance.RequestEpiInset(info.PartnerId, 0);
- }
- else
- {
- if (!PartnersData.Instance.TryGetPlan(_planId, out var plan))
- {
- Context.ShowTips(StringDefine.PartnerPlanEmptyTips);
- return;
- }
- var caoId = -1;
- var sbId = 0;
- foreach (var slot in plan.Slots)
- {
- if (slot.MwId == _mwId)
- {
- caoId = slot.CaoId;
- sbId = slot.SbId;
- break;
- }
- }
- if (sbId == 0 || caoId < 0)
- {
- Context.ShowTips(StringDefine.EpigraphNotInPlanTips);
- return;
- }
- PartnersService.Instance.RequestUpdatePlanMw(_planId, caoId, sbId, 0);
- }
- Context.ClosePanel();
- }
- private void OnClickUpBtn(EventContext context)
- {
- if (_planId == PartnersData.Instance.UsePlanId)
- {
- if (!EpigraphData.Instance.TryGetEpigraphAttrByTableId(_mwId, out var attr))
- {
- Context.ShowTips(StringDefine.EpigraphEmptyTips);
- return;
- }
- if (attr.PartnerId > 0)
- {
- Context.ShowTips(StringDefine.EpigraphAlreadyUpTips);
- return;
- }
- if (_partnerId > 0)
- {
- if (
- !PartnersData.Instance.TryGetPartnerAttrByTableId(
- _partnerId,
- out var partnerAttr
- )
- )
- {
- Context.ShowTips(StringDefine.PartnerEmptyTips);
- return;
- }
- EpigraphService.Instance.RequestEpiInset(_partnerId, _mwId);
- }
- else
- {
- EpigraphService.Instance.OpenUpMode(_mwId);
- }
- }
- else
- {
- if (!PartnersData.Instance.TryGetPlan(_planId, out var plan))
- {
- Context.ShowTips(StringDefine.PartnerPlanEmptyTips);
- return;
- }
- PartnerPlanSlot curSlot = null;
- foreach (var slot in plan.Slots)
- {
- if (slot.MwId == _mwId)
- {
- curSlot = slot;
- break;
- }
- }
- if (curSlot != null)
- {
- Context.ShowTips(StringDefine.EpigraphAlreadyUpTips);
- return;
- }
- var targetSlot = PartnersData.Instance.GetPlanSlot(_planId, _slotId);
- if (targetSlot == null || targetSlot.SbId == 0)
- {
- Context.ShowTips(StringDefine.PartnerCurSlotNoSbTips);
- return;
- }
- PartnersService.Instance.RequestUpdatePlanMw(
- _planId,
- _slotId,
- targetSlot.SbId,
- _mwId
- );
- }
- Context.ClosePanel();
- }
- private void OnClickGotoBtn(EventContext context) { }
- private void OnClickRankUpBtn(EventContext context)
- {
- var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
- if (info == null)
- {
- Log.Error($"铭文数据不存在tableId:{_mwId}");
- return;
- }
- var table = epigraphUpTableRepo.GetEpiragphUp(_mwId, info.StarLv);
- if (table == null)
- {
- Log.Error($"铭文升星表不存在id:{_mwId}, starLv{info.StarLv}");
- return;
- }
- if (table.LevelUpCost > ItemData.Instance.GetItemNum(_mwId))
- {
- Context.ShowTips(StringDefine.epigraphUpUnenough);
- return;
- }
- EpigraphService.Instance.RequestEpiStarUp(_mwId);
- }
- #endregion
- #region 页面
- private void UpView()
- {
- UpDescInfo();
- UpProgressInfo();
- UpSkillList();
- }
- private void UpdateUpDownBtn(int eventId, object args)
- {
- ShowUpDownBtn();
- }
- private void ShowUpDownBtn()
- {
- if (_planId == PartnersData.Instance.UsePlanId)
- {
- if (!EpigraphData.Instance.TryGetEpigraphAttrByTableId(_mwId, out var epi))
- {
- Log.Error($"铭文数据不存在,id:{_mwId}");
- return;
- }
- VM.Up.selectedIndex = epi.PartnerId > 0 ? 1 : 0;
- }
- else
- {
- if (!PartnersData.Instance.TryGetPlan(_planId, out var plan))
- {
- Log.Error($"方案信息不存在,planId:{_planId}");
- return;
- }
- var isFind = false;
- foreach (var slot in plan.Slots)
- {
- if (slot.MwId == _mwId)
- {
- isFind = true;
- break;
- }
- }
- VM.Up.selectedIndex = isFind ? 1 : 0;
- }
- }
- private void UpDescInfo()
- {
- var table = EpigraphTableRepo.Get(_mwId);
- if (table == null)
- {
- Log.Error($"铭文表不存在id:{_mwId}");
- }
- VM.EpiLabel.Ctrl.SetEpiIcon(_mwId, true);
- var initSkillId = table.Skill[0];
- var skillTable = SkillTableRepo.Get(initSkillId);
- if (skillTable == null)
- {
- Log.Error($"技能表不能存在,技能ID:{initSkillId}");
- return;
- }
- VM.DescLabel.text = skillTable.Desc;
- VM.NameLabel.text = table.Name;
- var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
- if (info != null)
- {
- ShowUpDownBtn();
- int nextLv = info.StarLv + 1;
- var nextUpTable = epigraphUpTableRepo.GetEpiragphUp(_mwId, nextLv);
- VM.HaveState.selectedIndex = nextUpTable != null ? 1 : 2;
- }
- else
- {
- VM.HaveState.selectedIndex = 0;
- }
- if (table.Element > 0)
- {
- VM.AttrIcon.visible = true;
- VM.AttrIcon.url = AddressableDefine.PartnerElementType(((int)table.Element));
- }
- else
- {
- VM.AttrIcon.visible = false;
- }
- VM.HaveAtrr.selectedIndex = table.Own_attr.Length > 0 ? 0 : 1;
- if (table.Own_attr.Length > 0)
- {
- string str = "";
- for (int i = 0; i < table.Own_attr.Length; i += 2)
- {
- var attrTable = AttrDescTableRepo.Get(table.Own_attr[i]);
- if (attrTable == null)
- continue;
- var attrValue = table.Own_attr[i + 1];
- var val =
- attrValue > 0 ? TableUtils.ToRealDouble(attrValue).ToString("F2") : "0";
- if (i > 0)
- str += ",";
- str += $"{attrTable.ShowName}{val}%";
- }
- VM.AttrLabel.SetVar("attr", str).FlushVars();
- }
- }
- private void UpProgressInfo()
- {
- var info = EpigraphData.Instance.GetEpigraphAttrByTableId(_mwId);
- var curlv = info != null ? info.StarLv : 1;
- var table = epigraphUpTableRepo.GetEpiragphUp(_mwId, curlv);
- if (table == null)
- {
- Log.Error($"铭文升星表不存在id:{_mwId}, starLv:{curlv}");
- return;
- }
- VM.ChipPbar.max = table.LevelUpCost;
- VM.ChipPbar.value = ItemData.Instance.GetItemNum(table.PetId);
- }
- private void UpSkillList()
- {
- var list = new List<EpigraphSkillLimit>();
- var epiTable = EpigraphTableRepo.Get(_mwId);
- if (epiTable == null)
- {
- Log.Error($"铭文表不存在id:{_mwId}");
- return;
- }
- for (var i = 2; i < epiTable.Skill.Length; i = i + 2)
- {
- var skill = epiTable.Skill[i];
- var limit = epiTable.Skill[i + 1];
- var skillLimit = new EpigraphSkillLimit()
- {
- epiId = _mwId,
- limitLv = limit,
- skillId = skill,
- };
- list.Add(skillLimit);
- }
- VM.EffectList.BindDatas(list);
- }
- #endregion
- }
- }
|