using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using LitJson;
|
|
namespace vnxbqy.UI
|
{
|
public class RealmMissionCell : MonoBehaviour
|
{
|
[SerializeField] Image missionTabImg;
|
[SerializeField] Image missionBGImg;
|
[SerializeField] Text missionStateText;
|
[SerializeField] Text missionNameText;
|
[SerializeField] IntensifySmoothSlider expSlider;
|
[SerializeField] Text processText;
|
[SerializeField] ItemCell itemCell;
|
[SerializeField] Image awardStateImg;
|
[SerializeField] Button receiveBtn;
|
[SerializeField] UIEffect awardEffect;
|
[SerializeField] Image arrowTip; //任务提醒箭头
|
|
RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
|
EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
SkyTowerModel skyTowerModel { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } }
|
TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
|
|
//1 等级达到x级
|
//2 通关x地图x层
|
//3 杀怪x只
|
//4 需要境界丹
|
//5 装备条件
|
//6 挑战心魔
|
//7 主线任务
|
public void Display(int missionID)
|
{
|
var state = model.GetMissionState(PlayerDatas.Instance.baseData.realmLevel, missionID);
|
var id = RealmLVUPTaskConfig.GetID(PlayerDatas.Instance.baseData.realmLevel, missionID);
|
var config = RealmLVUPTaskConfig.Get(id);
|
missionTabImg.SetSprite(StringUtility.Contact("RealmMissionTab", state));
|
missionBGImg.SetSprite(StringUtility.Contact("RealmMissionBG", state));
|
missionStateText.text = Language.Get(StringUtility.Contact("RealmMissionState", state));
|
|
if (state == 1)
|
{
|
awardEffect.Play();
|
}
|
else
|
{
|
awardEffect.Stop();
|
}
|
|
arrowTip.SetActive(false);
|
|
int type = config.TaskType;
|
int curValue = 0;
|
int maxValue = 0;
|
switch (type)
|
{
|
case 1:
|
missionNameText.text = Language.Get("RealmMissionName1", config.NeedValueList[0]);
|
expSlider.value = (float)PlayerDatas.Instance.baseData.LV / config.NeedValueList[0];
|
processText.text = StringUtility.Contact(PlayerDatas.Instance.baseData.LV, "/", config.NeedValueList[0]);
|
break;
|
case 2:
|
if (config.NeedValueList[0] == SkyTowerModel.DATA_MAPID)
|
{
|
curValue = ModelCenter.Instance.GetModel<SkyTowerModel>().highestPassFloor;
|
maxValue = config.NeedValueList[1];
|
}
|
expSlider.value = (float)curValue / maxValue;
|
processText.text = StringUtility.Contact(curValue, "/", maxValue);
|
|
missionNameText.text = Language.Get("RealmMissionName2", MapConfig.Get(config.NeedValueList[0]).Name, config.NeedValueList[1]);
|
|
if (state == 0 && PlayerDatas.Instance.baseData.LV < 150)
|
{
|
var skyTowerconfig = SkyTowerConfig.Get(skyTowerModel.currentFloor);
|
if (PlayerDatas.Instance.baseData.LV >= skyTowerconfig.levelLimit &&
|
PlayerDatas.Instance.baseData.FightPoint >= (ulong)NPCExConfig.Get(skyTowerconfig.bossId).SuppressFightPower * GeneralDefine.fightPowerMore)
|
{
|
arrowTip.SetActive(true);
|
}
|
}
|
break;
|
case 3:
|
curValue = model.GetMissionProcess(missionID);
|
expSlider.value = (float)curValue / config.NeedValueList[0];
|
processText.text = StringUtility.Contact(curValue, "/", config.NeedValueList[0]);
|
missionNameText.text = Language.Get("RealmMissionName3", config.NeedValueList[0]);
|
break;
|
case 4:
|
if (state != 2)
|
curValue = packModel.GetItemCountByID(PackType.Item, RealmModel.BreakRealmPill);
|
else
|
curValue = config.NeedValueList[0];
|
expSlider.value = (float)curValue / config.NeedValueList[0];
|
processText.text = StringUtility.Contact(curValue, "/", config.NeedValueList[0]);
|
missionNameText.text = Language.Get("RealmMissionName4", config.NeedValueList[0]);
|
break;
|
case 5:
|
RealmLevelUpEquipCondition equipCondition = new RealmLevelUpEquipCondition()
|
{
|
level = config.NeedValueList[0],
|
starLevel = config.NeedValueList[1],
|
isSuit = config.NeedValueList[2] == 1,
|
itemColor = config.NeedValueList[3],
|
};
|
var equipSet = equipModel.GetEquipSet(equipCondition.level);
|
var realmConfig = RealmConfig.Get(equipSet.realm);
|
int count;
|
|
string countStr = "";
|
if (config.NeedValueList.Length == 5)
|
{
|
count = config.NeedValueList[4];
|
if (count == 8)
|
{
|
countStr = StringUtility.Contact(countStr, count);
|
}
|
else
|
{
|
countStr = StringUtility.Contact(countStr, Language.Get("L2031"), count);
|
}
|
}
|
else
|
{
|
count = 8;
|
countStr = StringUtility.Contact(countStr, count);
|
}
|
if (!equipCondition.isSuit)
|
{
|
var colorName = UIHelper.GetColorNameByItemColor(equipCondition.itemColor);
|
missionNameText.text = Language.Get("RealmNeedEquipCondition_1", realmConfig.NameEx, colorName, equipCondition.starLevel, countStr);
|
}
|
else
|
{
|
missionNameText.text = Language.Get("RealmNeedEquipCondition_2", realmConfig.NameEx, equipCondition.starLevel, countStr);
|
}
|
|
List<int> notSatisfyPlaces;
|
model.SatisfyEquipCondition(model.equipNeedConfig, out notSatisfyPlaces);
|
curValue = Math.Min(count, 8 - notSatisfyPlaces.Count);
|
expSlider.value = (float)curValue / count;
|
processText.text = StringUtility.Contact(curValue, "/", count);
|
|
break;
|
case 6:
|
missionNameText.text = Language.Get("RealmMissionName6");
|
curValue = model.GetMissionProcess(missionID);
|
expSlider.value = (float)curValue / 1;
|
processText.text = StringUtility.Contact(curValue, "/", 1);
|
break;
|
case 7:
|
missionNameText.text = Language.Get("RealmMissionName7",
|
TASKINFOConfig.Get(TaskListConfig.Get(config.NeedValueList[0]).TaskName).show_writing);
|
|
maxValue = TaskListConfig.GetMissionIndex(config.NeedValueList[0]) + 1;
|
curValue = TaskListConfig.GetMissionIndex(taskModel.GetLatestMainTaskId());
|
expSlider.value = (float)curValue / maxValue;
|
processText.text = StringUtility.Contact(curValue, "/", maxValue);
|
break;
|
}
|
|
itemCell.Init(new ItemCellModel(config.AwardItemList[0][0], false, (ulong)config.AwardItemList[0][1]));
|
awardStateImg.SetActive(state == 2);
|
receiveBtn.AddListener(() => {
|
if (state == 1)
|
{
|
model.RequestAllAwards();
|
}
|
else if (state == 0)
|
{
|
if (type == 4)
|
{
|
if (LimitedTimeLuxuryGiftModel.Instance.IsItemIdShow(23, RealmModel.BreakRealmPill, config.NeedValueList[0], 1, 0))
|
return;
|
}
|
model.RealMissionGuide(type, id);
|
|
}
|
});
|
}
|
|
|
|
|
}
|
}
|
|