using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
class PetHorseAwakingWin : ILWindow
|
{
|
|
CyclicScroll cyclicScroll;
|
Transform container_pet;
|
Transform container_horse;
|
RawImage raw_model;
|
Text txt_name;
|
Text txt_level;
|
Slider expSlider;
|
Text txt_exp;
|
Transform container_now;
|
Transform container_line;
|
Transform container_next;
|
Button btn_awaking;
|
|
int cacheSelectId;
|
int cacheSkinIndex;
|
|
List<PetHorseAwakingBehaviour> scrollItems;
|
List<PetHorseAwakingSkinBehaviour> skinBehaviours;
|
|
List<PropertyBehaviour> propertysNow;
|
List<PropertyBehaviour> propertysNext;
|
|
PetHorseAwakingModel model { get { return PetHorseAwakingModel.Instance; } }
|
|
protected override void BindController()
|
{
|
base.BindController();
|
this.cyclicScroll = this.transform.FindComponentEx<CyclicScroll>("Container/Container_List/Scroller");
|
|
scrollItems = new List<PetHorseAwakingBehaviour>();
|
for (int i = 1; i <= 7; i++)
|
{
|
var scrollItem = new PetHorseAwakingBehaviour();
|
scrollItem.Bind(this.transform.Find("Container/Container_List/Scroller/Content/" + i));
|
scrollItems.Add(scrollItem);
|
}
|
|
skinBehaviours = new List<PetHorseAwakingSkinBehaviour>();
|
for (int i = 1; i <= 5; i++)
|
{
|
var skinBehaviour = new PetHorseAwakingSkinBehaviour();
|
skinBehaviour.Bind(this.transform.Find("Container/Container_Detail/Container_Skins/" + i));
|
this.skinBehaviours.Add(skinBehaviour);
|
}
|
|
this.container_pet = this.transform.Find("Container/Container_Detail/Container_Pet");
|
this.container_horse = this.transform.Find("Container/Container_Detail/Container_Horse");
|
|
this.raw_model = this.transform.FindComponentEx<RawImage>("Container/Container_Detail/Raw_Model");
|
this.txt_name = this.transform.FindComponentEx<Text>("Container/Container_Detail/Container_Progress/Txt_Name");
|
this.txt_level = this.transform.FindComponentEx<Text>("Container/Container_Detail/Container_Progress/Txt_Level");
|
this.expSlider = this.transform.FindComponentEx<Slider>("Container/Container_Detail/Container_Progress/ExpSlider");
|
this.txt_exp = this.transform.FindComponentEx<Text>("Container/Container_Detail/Container_Progress/ExpSlider/ExpNum");
|
|
this.container_now = this.transform.Find("Container/Container_Detail/Container_Property/Layout/Container_Now");
|
this.container_line = this.transform.Find("Container/Container_Detail/Container_Property/Layout/Container_Line");
|
this.container_next = this.transform.Find("Container/Container_Detail/Container_Property/Layout/Container_Next");
|
|
this.propertysNow = new List<PropertyBehaviour>();
|
this.propertysNext = new List<PropertyBehaviour>();
|
|
for (int i = 1; i <= 4; i++)
|
{
|
var now = this.transform.FindComponentEx<PropertyBehaviour>("Container/Container_Detail/Container_Property/Layout/Container_Now/" + i);
|
this.propertysNow.Add(now);
|
|
var next = this.transform.FindComponentEx<PropertyBehaviour>("Container/Container_Detail/Container_Property/Layout/Container_Next/" + i);
|
this.propertysNext.Add(next);
|
}
|
|
this.btn_awaking = this.transform.FindComponentEx<Button>("Container/Container_Detail/Btn_Awaking");
|
}
|
|
protected override void AddListeners()
|
{
|
base.AddListeners();
|
this.btn_awaking.SetListener(() =>
|
{
|
var data = model.GetData(model.selectId);
|
if (data.IsMaxLevel)
|
return;
|
WindowCenter.Instance.OpenIL<PetHorseAwakingDevourWin>(false, 0);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
model.dataDirtys[0] = false;
|
model.RefreshDisplays();
|
model.selectId = model.displayIds[0];
|
this.cacheSelectId = model.selectId;
|
this.cyclicScroll.LuaInit(model.displayIds.ToArray(), false);
|
|
model.AddEvent(1, OnSelectUpdate);
|
model.AddEvent(2, OnSelectSkinUpdate);
|
WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent;
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
this.TrySelectSkin(model.selectId, model.selectSkinLevel);
|
model.RemoveEvent(1, OnSelectUpdate);
|
model.RemoveEvent(2, OnSelectSkinUpdate);
|
WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
|
for (int i = 0; i < skinBehaviours.Count; i++)
|
{
|
this.skinBehaviours[i].Dispose();
|
}
|
UI3DModelExhibition.Instance.StopShow();
|
model.SetRemind();
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
this.Display();
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
if (model.dataDirtys[0])
|
{
|
model.dataDirtys[0] = false;
|
this.OnDataUpdate();
|
}
|
}
|
|
void Display()
|
{
|
var data = model.GetData(model.selectId);
|
model.selectSkinLevel = data.GetDefaultSelectSkinLevel();
|
this.DisplayBase();
|
this.DisplaySkins();
|
this.DisplayProgress();
|
this.DisplayModel();
|
this.DisplayProperty();
|
this.DisplayButtonState();
|
}
|
|
void DisplayBase()
|
{
|
var data = model.GetData(model.selectId);
|
if (data.Type == 1)
|
{
|
var config = HorseConfig.Get(data.Id);
|
this.txt_name.text = config.Name;
|
}
|
else if (data.Type == 2)
|
{
|
var config = PetInfoConfig.Get(data.Id);
|
this.txt_name.text = config.Name;
|
}
|
}
|
|
void DisplayProgress()
|
{
|
var data = model.GetData(model.selectId);
|
var isMax = data.IsMaxLevel;
|
if (isMax)
|
{
|
this.txt_exp.text = Language.Get("PetHorseAwaking_2");
|
this.expSlider.value = 1;
|
}
|
else
|
{
|
var config = model.GetPetHorseAwakeConfig(model.selectId, data.Level);
|
this.txt_exp.text = data.Exp + "/" + config.NeedExp;
|
this.expSlider.value = (float)data.Exp / config.NeedExp;
|
}
|
this.txt_level.text = Language.Get("PetHorseAwaking_3", data.Level);
|
}
|
|
void DisplaySkins()
|
{
|
var data = model.GetData(model.selectId);
|
this.cacheSkinIndex = data.SkinIdex;
|
var skinLevels = data.SkinLevels;
|
var length = skinLevels.Count;
|
for (int i = 0; i < 5; i++)
|
{
|
if (i < length)
|
{
|
this.skinBehaviours[i].SetActive(true);
|
this.skinBehaviours[i].Display(model.selectId, skinLevels[i + 1]);
|
}
|
else
|
{
|
this.skinBehaviours[i].SetActive(false);
|
}
|
}
|
}
|
|
void DisplayModel()
|
{
|
this.raw_model.SetActiveIL(true);
|
var data = model.GetData(model.selectId);
|
if (data.Type == 1)
|
{
|
var config = HorseConfig.Get(data.Id);
|
var showData = new UI3DHorsePetData();
|
showData.id = data.Id;
|
showData.skinIndex = data.GetIndexByLevel(model.selectSkinLevel);
|
showData.isRun = showData.skinIndex > 0;
|
UI3DModelExhibition.Instance.ShowHourse(showData, this.raw_model);
|
}
|
else if (data.Type == 2)
|
{
|
var config = PetInfoConfig.Get(data.Id);
|
var npcConfig = NPCConfig.Get(data.Id);
|
var showData = new UI3DHorsePetData();
|
showData.id = data.Id;
|
showData.skinIndex = data.GetIndexByLevel(model.selectSkinLevel);
|
showData.isRun = showData.skinIndex > 0;
|
showData.offset = npcConfig.UIModeLOffset;
|
showData.localEulerAngles = npcConfig.UIModelRotation;
|
UI3DModelExhibition.Instance.ShowPet(showData, this.raw_model);
|
}
|
}
|
|
void DisplayProperty()
|
{
|
var data = model.GetData(model.selectId);
|
var config = model.GetPetHorseAwakeConfig(model.selectId, data.Level);
|
var length = config.AttrInfo.Length;
|
for (int i = 0; i < 4; i++)
|
{
|
if (i < length)
|
{
|
this.propertysNow[i].SetActiveIL(true);
|
this.propertysNow[i].Display(config.AttrInfo[i].x, config.AttrInfo[i].y);
|
}
|
else
|
{
|
this.propertysNow[i].SetActiveIL(false);
|
}
|
}
|
|
Int2[] nextPropertys = null;
|
if (!data.IsMaxLevel)
|
{
|
nextPropertys = model.GetPetHorseAwakeConfig(model.selectId, data.Level + 1).AttrInfo;
|
}
|
|
for (int i = 0; i < 4; i++)
|
{
|
if (nextPropertys != null && i < nextPropertys.Length)
|
{
|
this.propertysNext[i].SetActiveIL(true);
|
this.propertysNext[i].Display(nextPropertys[i].x, nextPropertys[i].y);
|
}
|
else
|
{
|
this.propertysNext[i].SetActiveIL(false);
|
}
|
}
|
|
this.container_now.SetActiveIL(data.Level > 0);
|
this.container_next.SetActiveIL(!data.IsMaxLevel);
|
this.container_line.SetActiveIL(data.Level > 0 && !data.IsMaxLevel);
|
}
|
|
void DisplayButtonState()
|
{
|
var data = model.GetData(model.selectId);
|
var isMaxLevel = data.IsMaxLevel;
|
this.btn_awaking.SetActiveIL(!isMaxLevel);
|
}
|
|
void OnSelectUpdate()
|
{
|
this.TrySelectSkin(this.cacheSelectId, model.selectSkinLevel);
|
this.Display();
|
this.cacheSelectId = model.selectId;
|
}
|
|
void OnSelectSkinUpdate()
|
{
|
this.DisplayModel();
|
}
|
|
void WindowAfterCloseEvent(Window window)
|
{
|
if (window.name == "PetHorseAwakingDevourWin")
|
this.DisplayModel();
|
}
|
|
void OnDataUpdate()
|
{
|
var data = model.GetData(model.selectId);
|
var skinIndex = data.SkinIdex;
|
if (skinIndex != this.cacheSkinIndex)
|
{
|
var skinLevels = data.SkinLevels;
|
var length = skinLevels.Count;
|
if (length > 0 && skinIndex <= length)
|
model.selectSkinLevel = skinLevels[skinIndex];
|
}
|
this.DisplayProgress();
|
this.DisplayProperty();
|
this.DisplaySkins();
|
this.RefreshBehaviours();
|
this.DisplayModel();
|
this.DisplayButtonState();
|
}
|
|
void RefreshBehaviours()
|
{
|
for (int i = 0; i < scrollItems.Count; i++)
|
{
|
scrollItems[i].DisplayLevel();
|
}
|
}
|
|
void TrySelectSkin(int id, int level)
|
{
|
if (level == 0)
|
return;
|
var data = model.GetData(id);
|
if (data == null)
|
return;
|
if (level <= data.Level)
|
{
|
var skinIndex = data.GetIndexByLevel(level);
|
if (skinIndex > 0 && skinIndex != data.SkinIdex)
|
model.SendSelectSkin(id, skinIndex);
|
}
|
}
|
|
}
|