/// #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; /// /// 槽位id,-1为非更换界面打开的详情 /// public int SlotId; public int EpigraphId; public int PartnerId; } /// /// UI逻辑处理类 /// /// public partial class PartnerEpiDetailInfoCtrl : UIController { #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(); 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 } }