//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, May 03, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class HumanTreasureWin : Window
|
{
|
[SerializeField] Transform m_Container;
|
[SerializeField] Image m_TreasureName;
|
[SerializeField] Text m_Remind;
|
[SerializeField] Text m_TaskTitle;
|
[SerializeField] Text m_TreasureStory;
|
[SerializeField] Image m_SkillIcon;
|
[SerializeField] Text m_SkillName;
|
[SerializeField] Text m_SkillCoolDown;
|
[SerializeField] Text m_SkillDescription;
|
[SerializeField] Transform m_ContainerCollect;
|
[SerializeField] Button m_Challenge;
|
[SerializeField] Button m_Goto;
|
[SerializeField] Slider m_TaskSlider;
|
[SerializeField] Text m_TaskProgress;
|
[SerializeField] Transform m_ContainerCollected;
|
[SerializeField] Transform m_ContainerUnknown;
|
|
bool animationStep = false;
|
|
TreasureModel model
|
{
|
get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
|
}
|
|
TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Challenge.AddListener(Challenge);
|
m_Goto.AddListener(GotoTask);
|
}
|
|
protected override void OnPreOpen()
|
{
|
Display();
|
TreasureBaseWin.allowSelectTreasure += AllowSelectTreasure;
|
model.treasureSelectedEvent += TreasureSelectedEvent;
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
DisplayAnimation();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
TreasureBaseWin.allowSelectTreasure -= AllowSelectTreasure;
|
model.treasureSelectedEvent -= TreasureSelectedEvent;
|
animationStep = false;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
void Display()
|
{
|
DisplayBase();
|
DisplayProgress();
|
}
|
|
void DisplayBase()
|
{
|
var config = TreasureConfig.Get(model.selectedTreasure);
|
m_TreasureName.SetSprite(config.TreasureNameIcon);
|
m_TreasureStory.text = config.Story;
|
m_Remind.text = string.Format("通关本征途可激活{0}", config.Name);
|
|
List<int> tasks = null;
|
if (model.TryGetTreasureTasks(model.selectedTreasure, out tasks))
|
{
|
var taskConfig = TaskListConfig.Get(tasks[0]);
|
m_TaskTitle.text = taskConfig.ChapterName;
|
}
|
|
Treasure treasure;
|
if (model.TryGetTreasure(model.selectedTreasure, out treasure))
|
{
|
var skillId = treasure.skillId;
|
var skillConfig = SkillConfig.Get(skillId);
|
m_SkillIcon.SetSprite(skillConfig.IconName);
|
m_SkillName.text = skillConfig.SkillName;
|
m_SkillDescription.text = skillConfig.Description;
|
m_SkillCoolDown.text = skillConfig.CoolDownTime == 0 ? string.Empty :
|
Language.Get("L1065", skillConfig.CoolDownTime / 1000);
|
}
|
}
|
|
void DisplayProgress()
|
{
|
Treasure treasure;
|
if (model.TryGetTreasure(model.selectedTreasure, out treasure))
|
{
|
m_ContainerCollect.gameObject.SetActive(treasure.state == TreasureState.Collecting);
|
m_ContainerCollected.gameObject.SetActive(treasure.state == TreasureState.Collected);
|
m_ContainerUnknown.gameObject.SetActive(treasure.state == TreasureState.Locked);
|
|
if (treasure.state == TreasureState.Collecting)
|
{
|
var satisfyChallenge = model.SatisfyChallenge(model.selectedTreasure);
|
|
m_Goto.gameObject.SetActive(!satisfyChallenge);
|
m_Challenge.gameObject.SetActive(satisfyChallenge);
|
|
var progress = 1f;
|
|
List<int> tasks = null;
|
if (model.TryGetTreasureTasks(model.selectedTreasure, out tasks))
|
{
|
var count = model.GetCompleteTaskCount(model.selectedTreasure);
|
progress = Mathf.Clamp01((float)count / tasks.Count);
|
m_TaskProgress.text = StringUtility.Contact((int)(progress * 100), "%");
|
}
|
|
m_TaskSlider.value = progress;
|
}
|
}
|
}
|
|
void DisplayAnimation()
|
{
|
m_Container.gameObject.SetActive(false);
|
animationStep = true;
|
UI3DTreasureSelectStage.Instance.Tween(OnTreasureTweenComplete);
|
}
|
|
private void OnTreasureTweenComplete()
|
{
|
animationStep = false;
|
m_Container.gameObject.SetActive(true);
|
}
|
|
private void TreasureSelectedEvent(int obj)
|
{
|
Display();
|
UI3DTreasureSelectStage.Instance.SetEndState();
|
}
|
|
private void Challenge()
|
{
|
var config = TreasureConfig.Get(model.selectedTreasure);
|
if (config != null)
|
{
|
if (PlayerDatas.Instance.baseData.LV >= config.ChallengeLevel)
|
{
|
model.collectingHuman = model.selectedTreasure;
|
ModelCenter.Instance.GetModel<DungeonModel>().SingleChallenge(TreasureModel.TREASURE_DATAMAPID, config.LineId);
|
}
|
}
|
}
|
|
private void GotoTask()
|
{
|
WindowJumpMgr.Instance.ClearJumpData();
|
WindowCenter.Instance.Close<TreasureBaseWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
var taskId = taskModel.GetLatestMainTaskId();
|
taskModel.TaskMove(taskId);
|
}
|
|
private bool AllowSelectTreasure(int treasureId)
|
{
|
if (NewBieCenter.Instance.inGuiding || animationStep)
|
{
|
return false;
|
}
|
return true;
|
}
|
}
|
}
|
|
|
|
|