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 SkillMatchWin : ILWindow
|
{
|
|
int selectId;
|
int selectPage;
|
|
List<SkillMatchBehaviour> skillBehaviours;
|
List<Transform> skillBehaviourTrans;
|
|
List<Button> skillPages;
|
List<Transform> skillPageSelects;
|
|
ImageEx dragIcon;
|
Text treasureName;
|
Text skillName;
|
Text skillLevel;
|
Text skillCoolDown;
|
Text skillDescription;
|
ImageEx skillExpertIcon;
|
Text skillExpertName;
|
Button skillExpertFunc;
|
Button btnClose;
|
|
protected override void BindController()
|
{
|
base.BindController();
|
|
skillBehaviours = new List<SkillMatchBehaviour>();
|
skillBehaviourTrans = new List<Transform>();
|
|
for (int i = 0; i < ILSkillMatchConfig.GetValues().Count; i++)
|
{
|
var child = this.transform.Find("Container/Container_Skills/" + i);
|
var skillBehaviour = new SkillMatchBehaviour();
|
skillBehaviour.Bind(child);
|
skillBehaviours.Add(skillBehaviour);
|
skillBehaviourTrans.Add(child);
|
}
|
|
skillPages = new List<Button>();
|
skillPageSelects = new List<Transform>();
|
for (int i = 0; i <= 2; i++)
|
{
|
this.skillPages.Add(this.transform.FindComponentEx<Button>("Container/Contaienr_Page/Page" + i));
|
this.skillPageSelects.Add(this.transform.FindComponentEx<Transform>("Container/Contaienr_Page/Page" + i + "/Img_Select"));
|
}
|
|
this.dragIcon = this.transform.FindComponentEx<ImageEx>("Img_DragIcon");
|
this.treasureName = this.transform.FindComponentEx<Text>("Container/Txt_TreasureName");
|
this.skillName = this.transform.FindComponentEx<Text>("Container/Txt_SkillName");
|
this.skillLevel = this.transform.FindComponentEx<Text>("Container/Txt_SkillLevel");
|
this.skillCoolDown = this.transform.FindComponentEx<Text>("Container/Txt_SkillCoolDown");
|
this.skillDescription = this.transform.FindComponentEx<Text>("Container/Txt_Description");
|
this.skillExpertIcon = this.transform.FindComponentEx<ImageEx>("Container/Container_Expert/SkillWidget/Img_Icon");
|
this.skillExpertName = this.transform.FindComponentEx<Text>("Container/Container_Expert/SkillWidget/Txt_SkillName");
|
this.skillExpertFunc = this.transform.FindComponentEx<Button>("Container/Container_Expert/SkillWidget");
|
this.btnClose = this.transform.FindComponentEx<Button>("Container/Btn_Close");
|
}
|
|
protected override void AddListeners()
|
{
|
base.AddListeners();
|
this.btnClose.SetListener(() =>
|
{
|
WindowCenter.Instance.CloseIL<SkillMatchWin>();
|
});
|
|
for (int i = 0; i < skillPages.Count; i++)
|
{
|
var page = i;
|
skillPages[i].SetListener(() =>
|
{
|
OnSelectPage(page);
|
});
|
}
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
UIDragDropBehaviour.draging = false;
|
this.dragIcon.SetActiveIL(false);
|
this.selectPage = SkillMatchModel.Instance.GetSkillPage();
|
var displayIds = SkillMatchModel.Instance.GetDisplayIds(this.selectPage);
|
SkillMatchModel.Instance.selectId = displayIds[0];
|
this.selectId = displayIds[0];
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
SkillMatchModel.Instance.SetSkillMatch(this.selectPage);
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
if (this.selectId != SkillMatchModel.Instance.selectId)
|
{
|
this.selectId = SkillMatchModel.Instance.selectId;
|
DisplayDetail();
|
}
|
|
if (UIDragDropBehaviour.draging)
|
{
|
if (this.dragIcon.gameObject.activeSelf == false)
|
{
|
this.dragIcon.SetActiveIL(true);
|
var id = UIDragDropBehaviour.dragData;
|
var skillId = SkillMatchModel.Instance.GetSkillId(id);
|
var config = SkillConfig.Get(skillId);
|
if (config != null)
|
this.dragIcon.SetSprite(config.IconName);
|
}
|
|
var mousePosition = new Vector2();
|
mousePosition.x = Input.mousePosition.x;
|
mousePosition.y = Input.mousePosition.y;
|
Vector2 pos;
|
var contain = RectTransformUtility.ScreenPointToLocalPointInRectangle(this.transform as RectTransform, mousePosition, CameraManager.uiCamera, out pos);
|
if (contain)
|
{
|
var position = new Vector3(pos.x, pos.y, 0);
|
this.dragIcon.rectTransform.localPosition = position;
|
}
|
|
if (Input.GetMouseButtonUp(0))
|
{
|
UIDragDropBehaviour.draging = false;
|
this.TrySwitchSkill();
|
this.dragIcon.SetActiveIL(false);
|
}
|
}
|
}
|
|
void Display()
|
{
|
var displayIds = SkillMatchModel.Instance.GetDisplayIds(this.selectPage);
|
for (int i = 0; i < ILSkillMatchConfig.GetValues().Count; i++)
|
{
|
if (i < displayIds.Length)
|
{
|
this.skillBehaviours[i].Dispose();
|
this.skillBehaviours[i].Display(displayIds[i]);
|
}
|
else
|
{
|
this.skillBehaviours[i].Dispose();
|
}
|
}
|
|
this.DisplayPageState();
|
this.DisplayDetail();
|
}
|
|
void DisplayPageState()
|
{
|
for (int i = 0; i <= 2; i++)
|
{
|
this.skillPageSelects[i].SetActiveIL(this.selectPage == i);
|
}
|
}
|
|
void DisplayDetail()
|
{
|
var model = ModelCenter.Instance.GetModelEx<TreasureSkillModel>();
|
var skillId = SkillMatchModel.Instance.GetSkillId(SkillMatchModel.Instance.selectId);
|
TreasureSkill skill;
|
var exist = model.TryGetSkill(skillId, out skill);
|
if (exist)
|
{
|
var config = SkillConfig.Get(skillId);
|
this.treasureName.text = config.Skillsource;
|
this.skillName.text = config.SkillName;
|
if (skill.level > 0)
|
this.skillLevel.text = Language.Get("SkillActLevel", skill.level);
|
else
|
this.skillLevel.text = Language.Get("SkillActLevel", Language.Get("TreasureSkilllock"));
|
if (config.CoolDownTime == 0)
|
this.skillCoolDown.text = "";
|
else
|
this.skillCoolDown.text = Language.Get("L1065", config.CoolDownTime / 1000);
|
|
this.skillDescription.text = UIHelper.ReplaceNewLine(config.Description);
|
|
int skillExpertId;
|
var hasExpert = model.TryGetExpertSkill(skillId, out skillExpertId);
|
this.skillExpertIcon.SetActiveIL(hasExpert);
|
this.skillExpertName.SetActiveIL(hasExpert);
|
this.skillExpertFunc.RemoveAllListeners();
|
if (hasExpert)
|
{
|
var expertConfig = SkillConfig.Get(skillExpertId);
|
this.skillExpertIcon.SetSprite(expertConfig.IconName);
|
this.skillExpertName.text = expertConfig.SkillName;
|
this.skillExpertFunc.SetListener(this.OnOpenExpert);
|
}
|
}
|
|
for (int i = 0; i < skillBehaviours.Count; i++)
|
{
|
this.skillBehaviours[i].DisplaySelect();
|
}
|
}
|
void OnSelectPage(int page)
|
{
|
this.selectPage = page;
|
var displayIds = SkillMatchModel.Instance.GetDisplayIds(this.selectPage);
|
SkillMatchModel.Instance.selectId = displayIds[0];
|
this.selectId = displayIds[0];
|
Display();
|
}
|
|
void OnOpenExpert()
|
{
|
var model = ModelCenter.Instance.GetModelEx<TreasureSkillModel>();
|
var skillId = SkillMatchModel.Instance.GetSkillId(SkillMatchModel.Instance.selectId);
|
int skillExpertId;
|
var hasExpert = model.TryGetExpertSkill(skillId, out skillExpertId);
|
if (hasExpert)
|
{
|
ExpertSkillSelectWin.skillId = skillExpertId;
|
WindowCenter.Instance.OpenEx<ExpertSkillSelectWin>();
|
}
|
}
|
|
void TrySwitchSkill()
|
{
|
for (int i = 0; i < skillBehaviourTrans.Count; i++)
|
{
|
var des = RectTransformUtility.CalculateRelativeRectTransformBounds(this.transform, this.skillBehaviourTrans[i]);
|
var src = RectTransformUtility.CalculateRelativeRectTransformBounds(this.transform, this.dragIcon.transform);
|
var dis = Vector3.Distance(des.center, src.center);
|
|
if (dis < 50)
|
{
|
var id = this.skillBehaviours[i].GetId();
|
if (id == UIDragDropBehaviour.dragData)
|
break;
|
else
|
{
|
var skillId = SkillMatchModel.Instance.GetSkillId(id);
|
var model = ModelCenter.Instance.GetModelEx<TreasureSkillModel>();
|
TreasureSkill skill;
|
var exist = model.TryGetSkill(skillId, out skill);
|
|
if (exist && skill.level > 0)
|
{
|
SkillMatchModel.Instance.SetQuickSetting(this.selectPage, i, UIDragDropBehaviour.dragData);
|
var index = this.GetIndex(UIDragDropBehaviour.dragData);
|
SkillMatchModel.Instance.SetQuickSetting(this.selectPage, index, id);
|
QuickSetting.Instance.SendPackage();
|
this.Display();
|
}
|
}
|
break;
|
}
|
}
|
}
|
|
int GetIndex(int id)
|
{
|
for (int i = 0; i < skillBehaviourTrans.Count; i++)
|
{
|
if (this.skillBehaviours[i].GetId() == id)
|
return i;
|
}
|
return 0;
|
}
|
|
}
|