using LitJson;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.Events;
|
|
//武将相关招募
|
public partial class HappyXBModel : GameSystemManager<HappyXBModel>
|
{
|
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<int, int> selectToLibIDDict = new Dictionary<int, int>()
|
{
|
{ 0, 105 },
|
{ 1, 104 }
|
};
|
|
public Dictionary<int, int> qualityToLibIDDict = new Dictionary<int, int>()
|
{
|
{ 5, 105 },
|
{ 4, 104 }
|
};
|
|
|
//心愿选中的武将ID //心愿抽取情况 <LIBID:已抽到次数,是否勾选自动,当前心愿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;
|
}
|
|
//心愿抽取情况 <LIBID:已抽到次数,是否勾选自动,当前心愿ID>
|
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
|
/// <param name="quality">0 神话 1 传奇</param>
|
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<HeroCallHopeWin>();
|
}
|
else
|
{
|
_action?.Invoke();
|
}
|
checkWish = isToggle;
|
});
|
|
return;
|
}
|
}
|
|
_action?.Invoke();
|
}
|
}
|