using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
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<CommonItemBaisc> itemlist = new List<CommonItemBaisc>();
|
|
TreasureFindHostModel hostModel { get { return ModelCenter.Instance.GetModel<TreasureFindHostModel>(); } }
|
ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
|
GetItemPathModel pathModel { get { return ModelCenter.Instance.GetModel<GetItemPathModel>(); } }
|
|
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.GetEquipPlaceName(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<int> 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, true, PackType.Deleted, "", null, ItemTipChildType.GetEquipPath);
|
tipsModel.SetItemTipsModel(attrData, false);
|
if (tipsModel.compareAttrData != null)
|
{
|
tipsModel.ShowTip();
|
}
|
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 = GeneralDefine.moneyDisplayIds[value[0]];
|
ItemConfig itemConfig = ItemConfig.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 = ItemConfig.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.AppendColor(TextColType.Green, StringUtility.Contact(info.targetNum, "/", info.targetNum));
|
}
|
else
|
{
|
if (progress < info.targetNum)
|
{
|
return UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(progress, "/", info.targetNum), true);
|
}
|
else
|
{
|
return UIHelper.AppendColor(TextColType.Green, StringUtility.Contact(progress, "/", info.targetNum));
|
}
|
}
|
}
|
|
|
}
|
}
|