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(); } } EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } SkyTowerModel skyTowerModel { get { return ModelCenter.Instance.GetModel(); } } TaskModel taskModel { get { return ModelCenter.Instance.GetModel(); } } //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().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 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); } }); } } }