using System; using System.Collections.Generic; using System.Text; using UnityEngine; using UnityEngine.UI; using TableConfig; using System.Collections; namespace Snxxz.UI { public class ReciveConditionCell : CellView { [SerializeField] Text conditionText; [SerializeField] GameObject adviceText; [SerializeField] Button receiveBtn; [SerializeField] Text btnText; [SerializeField] UIEffect receiveEffect; [SerializeField] GameObject receivedImg; [SerializeField] Image rewardIcon; [SerializeField] Image rewardBg; [SerializeField] Text rewardCntTex; [SerializeField] Button rewardBtn; [SerializeField] List itemlist = new List(); TreasureFindHostModel hostModel { get { return ModelCenter.Instance.GetModel(); } } ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel(); } } GetItemPathModel pathModel { get { return ModelCenter.Instance.GetModel(); } } int progress = 0; int findId = 0; StringBuilder condiSB = new StringBuilder(); public void SetModel(int findId) { FindTreasureInfo info = null; hostModel.TryGetFindTreasureInfo(findId,out info); if (info == null) return; condiSB.Length = 0; findId = info.id; bool isReach = hostModel.IsReachCondition(info, out progress); SetReceiveAwardInfo(info); switch (info.type) { case 1: conditionText.text = Language.Get("TreasureFindHost_Type1",GetFindProgressStr(info)); break; case 2: int equipPlace = 0; foreach(var value in info.needConditionsDict.Values) { string s = s = Language.Get("TreasureFindHost_Type2Split1", value[0], UIHelper.GetColorNameByItemColor(value[1]), value[2]); if(condiSB.Length > 0) { s = StringUtility.Contact(Language.Get("TreasureFindHost_Type2Split2"), s); } equipPlace = value[3]; condiSB.Append(s); } conditionText.text = Language.Get("TreasureFindHost_Type2",condiSB.ToString(),UIHelper.GetEquipAreaName(equipPlace),GetFindProgressStr(info)); break; case 3: conditionText.text = Language.Get("TreasureFindHost_Type3", info.targetNum,GetFindProgressStr(info)); break; case 4: foreach (var value in info.needConditionsDict.Values) { string s = ""; switch(value[1]) { case 1: s = Language.Get("TreasureFindHost_Type4Split1",value[0],Language.Get("TreasureFindHost_Type4Split2")); break; case 2: s = Language.Get("TreasureFindHost_Type4Split1", value[0], Language.Get("TreasureFindHost_Type4Split3")); break; } if(condiSB.Length > 0) { s = StringUtility.Contact(Language.Get("TreasureFindHost_Type2Split2"), s); } condiSB.Append(s); } conditionText.text = Language.Get("TreasureFindHost_Type4",info.targetNum,condiSB.ToString(),GetFindProgressStr(info)); break; default: DebugEx.LogError("暂无此类型需要添加:" + info.type); break; } List adviceIdlist = info.adviceItemIdDict[PlayerDatas.Instance.baseData.Job]; receiveBtn.RemoveAllListeners(); if (info.IsCompleted) { receiveEffect.gameObject.SetActive(false); receivedImg.SetActive(true); receiveBtn.gameObject.SetActive(false); } else { receiveBtn.gameObject.SetActive(true); if (isReach) { receiveEffect.gameObject.SetActive(true); receivedImg.SetActive(false); btnText.text = Language.Get("HallowsWin_Btn_ReceiveAward"); receiveBtn.AddListener(()=> { hostModel.SendGetRewardQuest(info.id); }); } else { receiveEffect.gameObject.SetActive(false); btnText.text = Language.Get("HallowsWin_Text_ExpendSource"); receivedImg.SetActive(false); receiveBtn.AddListener(() => { hostModel.SetAdviceIdlist(adviceIdlist); ItemAttrData attrData = new ItemAttrData(adviceIdlist[0], true, 0, -1, 0, true, PackType.rptDeleted, "", null, ItemTipChildType.GetEquipPath); tipsModel.SetItemTipsModel(attrData, false); if (tipsModel.compareAttrData != null) { tipsModel.ShowUICtrl(); } else { pathModel.SetChinItemModel(adviceIdlist[0]); } }); } } adviceText.SetActive(false); } public void SetReceiveAwardInfo(FindTreasureInfo info) { foreach (var value in info.awardMoneyDict.Values) { int rewardMoneyCnt = value[1]; rewardCntTex.text = UIHelper.ReplaceLargeNum(rewardMoneyCnt); int itemId = GeneralConfig.Instance.moneyDisplayIds[value[0]]; ItemConfig itemConfig = Config.Instance.Get(itemId); if(itemConfig != null) { rewardIcon.SetSprite(itemConfig.IconKey); rewardBg.SetItemBackGround(itemConfig.ItemColor); } rewardBtn.RemoveAllListeners(); rewardBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(itemId,true,(ulong)rewardMoneyCnt); tipsModel.SetItemTipsModel(attrData); }); } foreach(var value in info.awardItemDict.Values) { ItemConfig itemConfig = Config.Instance.Get(value[0]); if(itemConfig != null) { rewardIcon.SetSprite(itemConfig.IconKey); rewardBg.SetItemBackGround(itemConfig.ItemColor); int rewardCnt = value[1]; rewardCntTex.text = UIHelper.ReplaceLargeNum(rewardCnt); rewardBtn.RemoveAllListeners(); rewardBtn.AddListener(() => { ItemAttrData attrData = new ItemAttrData(itemConfig.ID, true, (ulong)rewardCnt); tipsModel.SetItemTipsModel(attrData); }); } } } public string GetFindProgressStr(FindTreasureInfo info) { if(info.IsCompleted) { return UIHelper.GetTextColorByItemColor(TextColType.Green, StringUtility.Contact(info.targetNum, "/", info.targetNum)); } else { if (progress < info.targetNum) { return UIHelper.GetTextColorByItemColor(TextColType.Red, StringUtility.Contact(progress, "/", info.targetNum), true); } else { return UIHelper.GetTextColorByItemColor(TextColType.Green, StringUtility.Contact(progress, "/", info.targetNum)); } } } } }