//--------------------------------------------------------
|
// [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] PositionTween m_PositionTween;
|
[SerializeField] Image m_TreasureName;
|
[SerializeField] Text m_TreasureStory;
|
[SerializeField] Image m_SkillIcon;
|
[SerializeField] Text m_SkillName;
|
[SerializeField] Text m_SkillType;
|
[SerializeField] Text m_SkillDescription;
|
[SerializeField] Transform m_ContainerUnlock;
|
[SerializeField] Button m_Challenge;
|
[SerializeField] Transform m_ContainerCondition;
|
[SerializeField] Text m_Condition;
|
|
bool animationStep = false;
|
|
TreasureModel model
|
{
|
get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
|
}
|
|
AchievementModel achievementModel
|
{
|
get { return ModelCenter.Instance.GetModel<AchievementModel>(); }
|
}
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Challenge.AddListener(Challenge);
|
}
|
|
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();
|
DisplayCondition();
|
}
|
|
void DisplayBase()
|
{
|
var config = TreasureConfig.Get(model.selectedTreasure);
|
m_TreasureName.SetSprite(config.TreasureNameIcon);
|
m_TreasureStory.text = config.Story;
|
|
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_SkillType.text = skillConfig.HurtType == 1 ? "PVP" : "PVE";// skillConfig.HurtType == 2 ? "PVE" : string.Empty;
|
}
|
}
|
|
void DisplayCondition()
|
{
|
Treasure treasure;
|
if (!model.TryGetTreasure(model.selectedTreasure, out treasure))
|
{
|
return;
|
}
|
|
var state = treasure.state;
|
|
Achievement achievement = null;
|
int achievementId = 0;
|
bool unlockAchievement = false;
|
if (model.TryGetTreasureUnlockAchievement(treasure.id, out achievementId))
|
{
|
if (achievementModel.TryGetAchievement(achievementId, out achievement))
|
{
|
unlockAchievement = true;
|
}
|
}
|
m_Challenge.gameObject.SetActive(!unlockAchievement || achievement.completed);
|
m_ContainerCondition.gameObject.SetActive(unlockAchievement && !achievement.completed);
|
|
if (state == TreasureState.Collected)
|
{
|
m_Challenge.gameObject.SetActive(false);
|
m_ContainerCondition.gameObject.SetActive(false);
|
}
|
|
if (model.IsVersionUnOpenTreasure(treasure.id))
|
{
|
m_Condition.text = Language.Get("TreasureNoOpen");
|
return;
|
}
|
|
if (unlockAchievement && !achievement.completed)
|
{
|
var config = SuccessConfig.Get(achievementId);
|
var _missionId = config.Condition[0];
|
var _taskConfig = PyTaskConfig.Get(_missionId);
|
if (_taskConfig == null)
|
{
|
return;
|
}
|
switch (config.Type)
|
{
|
case 1:
|
m_Condition.text = Language.Get("TreasureChallengeLv", config.Condition[0]);
|
break;
|
case 3:
|
m_Condition.text = Language.Get("TreasureGetRequire", _taskConfig.lv);
|
break;
|
}
|
}
|
}
|
|
void DisplayAnimation()
|
{
|
animationStep = true;
|
m_ContainerUnlock.gameObject.SetActive(false);
|
m_PositionTween.Play();
|
UI3DTreasureSelectStage.Instance.Tween(OnTreasureTweenComplete);
|
}
|
|
private void OnTreasureTweenComplete()
|
{
|
animationStep = false;
|
m_ContainerUnlock.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 bool AllowSelectTreasure(int treasureId)
|
{
|
if (NewBieCenter.Instance.inGuiding || animationStep)
|
{
|
return false;
|
}
|
return true;
|
}
|
}
|
}
|
|
|
|
|