using LitJson; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Events; //武将相关招募 public partial class HappyXBModel : GameSystemManager { public const int XBHeroCallSH_RedKey = 20303; //武将心愿神话 是否选择 public const int XBHeroCallCS_RedKey = 20304; //武将心愿传说 是否选择 public Redpoint shWishRedpoint = new Redpoint(HappyXB_RedKey, XBHeroCallSH_RedKey); public Redpoint csWishRedpoint = new Redpoint(HappyXB_RedKey, XBHeroCallCS_RedKey); public const int wishMaxOutCnt = 1; //心愿最大免费次数,神话/传说各出一次 public int selectSHHeroWishID = 0; //心愿选中的神话武将心愿ID 客户端 -1代表取消 public int selectCSHeroWishID = 0; //心愿选中的传说武将心愿ID 客户端 -1代表取消 public Action OnSelectWishHeroEvent; public int selectWishListTab = 0; //0:神话 1:传说 界面标签选择 //匹配selectWishListTab public Dictionary selectToLibIDDict = new Dictionary() { { 0, 105 }, { 1, 104 } }; public Dictionary qualityToLibIDDict = new Dictionary() { { 5, 105 }, { 4, 104 } }; //心愿选中的武将ID //心愿抽取情况 public bool TryGetHeroWishIDByQuality(int type, int quality, out int wishID, out int wishCnt, out bool auto) { wishID = 0; wishCnt = 0; auto = false; var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced); if (data == null || data.wishCntDict.IsNullOrEmpty()) { return false; } foreach (var info in data.wishCntDict.Values) { var id = info.wishID; if (id == 0) { continue; } if (HeroConfig.Get(TreasureItemLibConfig.Get(id).ItemID).Quality == quality) { wishID = id; wishCnt = info.wishCnt; auto = info.auto; return true; } } return false; } //心愿抽取情况 public XBWishInfo GetWishDataByQuality(int quality) { var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced); if (data == null || data.wishCntDict.IsNullOrEmpty()) { return null; } int libID = qualityToLibIDDict[quality]; if (data.wishCntDict.ContainsKey(libID)) { return data.wishCntDict[libID]; } return null; } //心愿红点,未分配的需要红点 void UpdateWishRedpoint() { shWishRedpoint.state = RedPointState.None; csWishRedpoint.state = RedPointState.None; var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced); if (data == null) { return; } var config = TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced); var needOpenCnt = config.WishOpen - data.treasureCount; if (needOpenCnt > 0) { return; } if (data.wishCntDict.IsNullOrEmpty()) { shWishRedpoint.state = RedPointState.Simple; csWishRedpoint.state = RedPointState.Simple; return; } int wishID = 0; bool auto = false; int wishCnt = 0; if (!TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 5, out wishID, out wishCnt, out auto)) { shWishRedpoint.state = RedPointState.Simple; } if (!TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 4, out wishID, out wishCnt, out auto)) { csWishRedpoint.state = RedPointState.Simple; } } //获取心愿卡ID /// 0 神话 1 传奇 public int GetWishCardItemID(int quality) { int libID = qualityToLibIDDict[quality]; if (!TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced).WishLibCard.ContainsKey(libID)) { Debug.LogError("GetWishCardItemID error: libID not found"); return 0; } return TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced).WishLibCard[libID]; } bool checkWish = false; //是否勾选过心愿确认 //未选择任何心愿武将且有任一免费次数,则弹窗提示 public void HeroCallAfterCheckWish(UnityAction _action) { if (PackManager.Instance.GetEmptyGridCount(PackType.Hero) <= 0) { SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_676165", 35); return; } if (checkWish) { //已勾选 _action?.Invoke(); return; } var data = GetXBInfoByType((int)HappXBTitle.HeroCallAdvanced); var config = TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced); var needOpenCnt = config.WishOpen - data.treasureCount; if (needOpenCnt > 0) { //未开启心愿 _action?.Invoke(); return; } if (selectSHHeroWishID <= 0 && selectCSHeroWishID <= 0) { var shdata = GetWishDataByQuality(5); var csdata = GetWishDataByQuality(4); if ((shdata != null && shdata.wishCnt == 0) || (csdata != null && csdata.wishCnt == 0)) { ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("HeroCall14"), Language.Get("TianziBillborad08"), (bool isOk, bool isToggle) => { if (isOk) { UIManager.Instance.OpenWindow(); } else { _action?.Invoke(); } checkWish = isToggle; }); return; } } _action?.Invoke(); } }