//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, November 14, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine.UI;
|
using System.Linq;
|
|
using System;
|
using vnxbqy.UI;
|
//灵宠属性
|
namespace vnxbqy.UI
|
{
|
|
public class PetAttributeWin : Window
|
{
|
[SerializeField] ScrollerController m_ScrollerController;
|
[SerializeField] UIEffect _uiEffect;//特效播放
|
[SerializeField] UIEffect m_LevelUpEffect;
|
[SerializeField] PetAttributeMethods _PetAttributeMethods;
|
[SerializeField] GameObject m_PetTrainBtnObj;
|
List<PetInfoConfig> sortlist = new List<PetInfoConfig>();//灵兽顺序排列
|
PetModel m_petModel;
|
PetModel petmodel { get { return m_petModel ?? (m_petModel = ModelCenter.Instance.GetModel<PetModel>()); } }
|
|
PackModel _playerPack;
|
PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); } }
|
|
RidingAndPetActivationModel ridingAndPetActivationModel { get { return ModelCenter.Instance.GetModel<RidingAndPetActivationModel>(); } }
|
public static event Action IsRedPointCultivate;
|
public AchievementGuideEffect AchievementGuideEffect1;
|
public AchievementGuideEffect AchievementGuideEffect2;
|
private int PetLv = 0;//获取当前选中灵宠的等级
|
private int TypePetID = 0;//用来标记当前选中的灵宠ID
|
private bool inLevelUp = false;
|
private bool isOpenFirst = true;
|
private List<PetInfoConfig> petinfo = new List<PetInfoConfig>();
|
protected override void BindController()
|
{
|
petinfo = PetInfoConfig.GetValues();
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
|
inLevelUp = false;
|
ToAddSorting();
|
isOpenFirst = true;
|
petmodel.Wait = true;
|
PetModel.Event_H0704Add += AddPet;
|
PetModel.Event_H0704Update += PetUpdate;
|
PetModel.Event_SpiritPetPlay += OnSpiritPetPlay;
|
m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
|
OptionIsSelected();//默认赋值
|
OnCreateGridLineCell(m_ScrollerController);
|
m_ScrollerController.JumpIndex(JunpIndex());
|
}
|
|
protected override void OnActived()
|
{
|
HandleAchievement();
|
ClickSelectPetBtn(TypePetID);
|
|
}
|
protected override void OnAfterOpen()
|
{
|
|
|
}
|
|
protected override void OnPreClose()
|
{
|
StopCoroutine("IeWait");
|
AchievementGoto.achievementType = 0;
|
PetModel.Event_H0704Add -= AddPet;
|
m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
|
PetModel.Event_SpiritPetPlay -= OnSpiritPetPlay;
|
PetModel.Event_H0704Update -= PetUpdate;
|
}
|
|
|
|
protected override void OnAfterClose()
|
{
|
if (PlayerDatas.Instance.baseData.LV >= 1500 && IsRedPointCultivate != null)
|
{
|
IsRedPointCultivate();
|
}
|
if (ItemOperateUtility.Instance.useItemModel != null)
|
{
|
ItemOperateUtility.Instance.useItemModel = null;
|
}
|
}
|
|
private void AddPet()//灵宠添加
|
{
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
ridingAndPetActivationModel.RidingAndPetActivationSet(RidingAndPetActivation.PetActivation, TypePetID);
|
}
|
List<int> PetSkillLv = new List<int>();
|
List<int> PetSkill = new List<int>();
|
private void PetUpdate(int _PetID)//灵宠刷新
|
{
|
petmodel.Wait = true;
|
PetInfoConfig petInfo = PetInfoConfig.Get(_PetID);
|
if (petmodel._DicPetBack.ContainsKey(_PetID))
|
{
|
PetSkillLv.Clear();
|
PetSkill.Clear();
|
int[] petSkillLvStrList = petInfo.SkillUnLock;
|
int[] petSkillStrList = petInfo.SkillID;
|
for (int i = 0; i < petSkillLvStrList.Length; i++)
|
{
|
PetSkillLv.Add(petSkillLvStrList[i]);
|
}
|
for (int i = 0; i < petSkillStrList.Length; i++)
|
{
|
PetSkill.Add(petSkillStrList[i]);
|
}
|
if (_PetID== TypePetID && petmodel._DicPetBack[_PetID].PetClass > PetLv && PetSkillLv.Contains((petmodel._DicPetBack[_PetID].PetClass)))
|
{
|
int Index = PetSkillLv.IndexOf((petmodel._DicPetBack[_PetID].PetClass));
|
ridingAndPetActivationModel.RidingAndPetActivationSet(RidingAndPetActivation.PetSkillActivates, _PetID, PetSkill[Index], petmodel._DicPetBack[_PetID].PetClass);
|
}
|
}
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
|
private void OnSpiritPetPlay(int _toPlay)
|
{
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
|
}
|
|
void OnCreateGridLineCell(ScrollerController gridCtrl)
|
{
|
gridCtrl.Refresh();
|
for (int i = 0; i < sortlist.Count; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, sortlist[i].ID);
|
}
|
gridCtrl.Restart();
|
|
}
|
|
|
private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
|
{
|
PetButton petButton = cell.GetComponent<PetButton>();
|
int petId = cell.index;
|
|
Image chooseImg = petButton.ChoosenImg.GetComponent<Image>();
|
Image unChooseImg = petButton.UnchooseBtn1.GetComponent<Image>();
|
PetInfoConfig petConfig = PetInfoConfig.Get(petId);
|
if (petConfig.Quality == 7)
|
{
|
unChooseImg.SetSprite("mhLCBQ1");
|
chooseImg.SetSprite("mhLCBQ2");
|
}
|
else
|
{
|
unChooseImg.SetSprite("ListBtn_UnSelect");
|
chooseImg.SetSprite("ListBtn_Select");
|
}
|
petButton.ButtonAssignment(petId);
|
if (TypePetID == petId)
|
{
|
if (petmodel._DicPetBack.ContainsKey(petId))
|
{
|
PetLv = petmodel._DicPetBack[petId].PetClass;
|
}
|
else
|
{
|
PetLv = 0;
|
}
|
petButton.ChoosenImg.SetActive(true);
|
petButton.UnchooseBtn1.SetActive(false);
|
if (petmodel._DicPetBack.ContainsKey(petId) && petmodel.PetNow != petId)
|
{
|
petButton.PlayedButton.SetActive(true);
|
petButton.PlayedButton.RemoveAllListeners();
|
PetBackpack petPack = petmodel._DicPetBack[petId];
|
if (petPack.PetClass >= petConfig.UseNeedRank)
|
{
|
petButton.Played_Text.text = Language.Get("PetText2");
|
petButton.PlayedButton.AddListener(() =>
|
{
|
petmodel.SendPetSwitchQuest(petPack.ItemPlace);
|
});
|
}
|
else
|
{
|
petButton.Played_Text.text = Language.Get("PetText1", petConfig.UseNeedRank);
|
petButton.PlayedButton.AddListener(() =>
|
{
|
ScrollTip.ShowTip(Language.Get("Z1821", petConfig.Name, petConfig.UseNeedRank));
|
});
|
}
|
}
|
else
|
{
|
petButton.PlayedButton.SetActive(false);
|
}
|
}
|
else
|
{
|
petButton.PlayedButton.SetActive(false);
|
petButton.ChoosenImg.SetActive(false);
|
petButton.UnchooseBtn1.SetActive(true);
|
}
|
petButton.PetButton1.RemoveAllListeners();
|
petButton.PetButton1.AddListener(() =>
|
{
|
StartCoroutine("IeWait", petId);
|
//ClickSelectPetBtn(petId);
|
//m_ScrollerController.m_Scorller.RefreshActiveCellViews();
|
});
|
}
|
|
IEnumerator IeWait(int petId)
|
{
|
yield return new WaitForSeconds(0.3f);
|
ClickSelectPetBtn(petId);
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();
|
}
|
|
|
private void ClickSelectPetBtn(int petId)
|
{
|
if (isOpenFirst)
|
{
|
isOpenFirst = false;
|
}
|
else
|
{
|
if (TypePetID == petId)
|
{
|
return;
|
}
|
}
|
TypePetID = petId;
|
_PetAttributeMethods.ModelShow(petId);
|
ModelCenter.Instance.GetModel<PetModel>().TypePetID = petId;
|
}
|
|
private bool IsStreetful()//判断是否有满阶灵宠
|
{
|
bool isBool = false;
|
if (m_petModel._DicPetBack.Count == 0)
|
{
|
return false;
|
}
|
foreach (int key in m_petModel._DicPetBack.Keys)
|
{
|
int petMaxLv = PetInfoConfig.Get(key).MaxRank;
|
if (m_petModel._DicPetBack[key].PetClass >= petMaxLv)
|
{
|
isBool = true;
|
}
|
}
|
return isBool;
|
}
|
void ToAddSorting()//灵宠排序
|
{
|
// sortlist.Clear();
|
if (sortlist.Count <= 0)
|
{
|
sortlist = PetInfoConfig.GetValues();
|
}
|
|
sortlist.Sort(Compare);
|
}
|
int Compare(PetInfoConfig x, PetInfoConfig y)//数组排列
|
{
|
int havex = NoFullLv(x.ID);
|
int havey = NoFullLv(y.ID);
|
bool have_x = IsFullLv(x.ID);
|
bool have_y = IsFullLv(y.ID);
|
if (havex.CompareTo(havey) != 0)
|
{
|
return -havex.CompareTo(havey);
|
}
|
if (have_x.CompareTo(have_y) != 0)
|
{
|
return -have_x.CompareTo(have_y);
|
}
|
if (x.Sort.CompareTo(y.Sort) != 0)
|
{
|
return x.Sort.CompareTo(y.Sort);
|
}
|
return 1;
|
}
|
private int NoFullLv(int petID)//未满街
|
{
|
PetInfoConfig PetConfig = PetInfoConfig.Get(petID);
|
int MaterialNumber = playerPack.GetItemCountByID(PackType.Item, PetConfig.UnLockNeedItemID);//获取背包解锁材料的数量
|
if (MaterialNumber != 0 && !petmodel._DicPetBack.ContainsKey(petID))
|
{
|
return 3;
|
}
|
if (petmodel.PetNow == petID) return 2;
|
|
if (petmodel._DicPetBack.ContainsKey(petID))
|
{
|
if (PetConfig.MaxRank > petmodel._DicPetBack[petID].PetClass)
|
{
|
return 1;
|
}
|
else
|
{
|
return 0;
|
}
|
}
|
return 0;
|
}
|
private bool IsFullLv(int petID)//满阶
|
{
|
PetInfoConfig PetConfig = PetInfoConfig.Get(petID);
|
if (petmodel._DicPetBack.ContainsKey(petID))
|
{
|
if (PetConfig.MaxRank <= petmodel._DicPetBack[petID].PetClass)
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
return false;
|
}
|
|
private void OptionIsSelected()//跳转选择
|
{
|
if (ItemOperateUtility.Instance.useItemModel != null)//灵宠单
|
{
|
int ItemId = ItemOperateUtility.Instance.useItemModel.itemId;
|
if (ItemId == 4151)
|
{
|
int Pet = petmodel.GetMinPetExp();
|
if (Pet != 0)
|
{
|
TypePetID = Pet;
|
return;
|
}
|
}
|
|
}
|
if (ItemOperateUtility.Instance.useItemModel != null)//坐骑碎片
|
{
|
int ItemId = ItemOperateUtility.Instance.useItemModel.itemId;
|
//var petinfo = PetInfoConfig.GetValues();
|
|
foreach (var Value in petinfo)
|
{
|
if (Value.UnLockNeedItemID == ItemId)
|
{
|
TypePetID = Value.ID;
|
return;
|
}
|
}
|
}
|
|
foreach (var key in petmodel.DeblockingRedPoint.Keys)//灵宠解锁
|
{
|
if (petmodel.DeblockingRedPoint[key].state == RedPointState.Simple)
|
{
|
TypePetID = key;
|
return;
|
}
|
}
|
|
foreach (var key in petmodel.CultivateRedPoint.Keys)//灵宠培养
|
{
|
if (petmodel.CultivateRedPoint[key].state == RedPointState.Simple)
|
{
|
TypePetID = key;
|
return;
|
}
|
}
|
if (petmodel.PetNow != 0)
|
{
|
TypePetID = petmodel.PetNow;
|
}
|
else
|
{
|
TypePetID = sortlist[0].ID;
|
}
|
}
|
private int JunpIndex()
|
{
|
int Index = 0;
|
Index = sortlist.FindIndex((x) =>
|
{
|
return x.ID == TypePetID;
|
});
|
if (Index == -1)
|
{
|
Index = 0;
|
}
|
return JumpSelect(Index);
|
}
|
|
private void HandleAchievement()
|
{
|
if (AchievementGoto.achievementType == AchievementGoto.SpiritPetAdvanced)//灵宠培养
|
{
|
AchievementGoto.achievementType = 0;
|
SuccessConfig successConfig = SuccessConfig.Get(AchievementGoto.guideAchievementId);
|
int[] petID = successConfig.Condition;
|
// var PetModel = PetInfoConfig.GetValues();
|
foreach (var value in petinfo)
|
{
|
if (value.ID == petID[0])
|
{
|
TypePetID = petID[0];
|
}
|
}
|
//m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
OnCreateGridLineCell(m_ScrollerController);
|
m_ScrollerController.JumpIndex(JunpIndex());
|
|
if (petmodel._DicPetBack.ContainsKey(TypePetID))
|
{
|
int haveCnt = playerPack.GetItemCountByID(PackType.Item, 4151);
|
if (haveCnt > 0)
|
{
|
AchievementGuideEffect2 = AchievementGuideEffectPool.Require(1);
|
AchievementGuideEffect2.transform.SetParentEx(m_PetTrainBtnObj.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("PetShowTipAchievement2");
|
}
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("PetShowTipAchievement1");
|
}
|
|
}
|
}
|
|
private int JumpSelect(int Index)
|
{
|
if (Index <= 4)
|
{
|
return 0;
|
}
|
return Index;
|
}
|
}
|
}
|
|
|
|