using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using LitJson;
|
|
namespace vnxbqy.UI
|
{
|
public class RealmBriefBehaviour : MonoBehaviour
|
{
|
[SerializeField] Image m_Icon;
|
[SerializeField] PropertyBehaviour m_ClonePropertyBeha;
|
[SerializeField] Transform m_PropertyRoot;
|
[SerializeField] List<PropertyBehaviour> m_Properties;
|
[SerializeField] Transform m_ContainerReiki;
|
[SerializeField] Text m_ReikiPoint;
|
[SerializeField] Text m_OnHookMaxTime;
|
[SerializeField] Transform m_ContainerSkill;
|
[SerializeField] Text m_SkillName;
|
[SerializeField] Button m_ViewDetail;
|
[SerializeField] Image m_SkillIcon;
|
|
[SerializeField] Transform m_ContainerUnlockEquip;
|
[SerializeField] Image m_UnlockEquip;
|
[SerializeField] Button m_Preview;
|
|
|
int realmLevel = 0;
|
|
RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
|
|
OffLineOnHookModel onHookModel { get { return ModelCenter.Instance.GetModel<OffLineOnHookModel>(); } }
|
|
private void Awake()
|
{
|
m_Preview.AddListener(OnEquipPreview);
|
}
|
|
public void Display(int realmLevel)
|
{
|
this.realmLevel = realmLevel;
|
CreatePropertyBehaviour();
|
DisplayBase();
|
DisplayProperty();
|
DisplayEquip();
|
DisplaySkill();
|
DisplayReiki();
|
}
|
|
void DisplayBase()
|
{
|
if (realmLevel > 0 && RealmConfig.Has(realmLevel))
|
{
|
var config = RealmConfig.Get(realmLevel);
|
m_Icon.SetActive(true);
|
m_Icon.SetSprite(config.Img);
|
}
|
else
|
{
|
m_Icon.SetActive(false);
|
}
|
}
|
|
void DisplayProperty()
|
{
|
var index = 0;
|
Dictionary<int, int> propertyDict;
|
if (model.TryGetRealmProperty(realmLevel, out propertyDict))
|
{
|
var keys = propertyDict.Keys;
|
foreach (var property in keys)
|
{
|
m_Properties[index].SetActive(true);
|
m_Properties[index].Display(property, propertyDict[property]);
|
index++;
|
}
|
}
|
for (int i = index; i < m_Properties.Count; i++)
|
{
|
m_Properties[i].SetActive(false);
|
}
|
|
}
|
|
void DisplayEquip()
|
{
|
var level = 0;
|
if (model.IsUnlockEquipRealm(realmLevel, out level)
|
&& model.displayRealmLevel >= model.realmEquipDisplayLevel)
|
{
|
m_ContainerUnlockEquip.SetActive(true);
|
var config = RealmConfig.Get(realmLevel);
|
m_UnlockEquip.SetSprite(config.equipNameIcon);
|
}
|
else
|
{
|
m_ContainerUnlockEquip.SetActive(false);
|
}
|
}
|
|
void DisplayReiki()
|
{
|
var config = RealmConfig.Get(realmLevel);
|
if (config.AddFreePoint == 0)
|
{
|
m_ContainerReiki.SetActive(false);
|
return;
|
}
|
m_ContainerReiki.SetActive(true);
|
|
m_ReikiPoint.text = config.AddFreePoint.ToString();
|
|
int addTime = onHookModel.GetAddMaxOnHookTime(realmLevel);
|
m_OnHookMaxTime.text = addTime == 0 ? string.Empty : Language.Get("GameOnHook8", addTime);
|
}
|
|
void DisplaySkill()
|
{
|
var config = RealmConfig.Get(realmLevel);
|
if (config.LearnSkillIDInfo.Length < 4)
|
{
|
//json 字符串 可能会配置{}
|
m_ContainerSkill.SetActive(false);
|
return;
|
}
|
m_ContainerSkill.SetActive(true);
|
var json = JsonMapper.ToObject(config.LearnSkillIDInfo);
|
|
var array = JsonMapper.ToObject<int[]>(json[PlayerDatas.Instance.baseData.Job.ToString()].ToJson());
|
var skillID = array[0]; //约定规则只显示第一个,普攻相关有多个
|
|
var skillConfig = SkillConfig.Get(skillID);
|
m_SkillIcon.SetSprite(skillConfig.IconName);
|
m_SkillName.text = skillConfig.SkillName;
|
|
m_ViewDetail.SetListener(() => {
|
SkillDetails.ShowSkillDetails(skillID, SkillDetails.SkillSourceType.PlayerSkill, skillConfig.FightPower);
|
});
|
}
|
|
|
void CreatePropertyBehaviour()
|
{
|
Dictionary<int, int> propertyDict;
|
var requireBehaCount = 0;
|
if (model.TryGetRealmProperty(realmLevel, out propertyDict))
|
{
|
requireBehaCount = propertyDict.Count;
|
}
|
if (requireBehaCount > m_Properties.Count)
|
{
|
var start = m_Properties.Count;
|
for (int i = start; i < requireBehaCount; i++)
|
{
|
var clone = GameObject.Instantiate<PropertyBehaviour>(m_ClonePropertyBeha, Vector3.zero, Quaternion.identity);
|
clone.transform.SetParent(m_PropertyRoot);
|
clone.transform.localScale = Vector3.one;
|
clone.SetActive(false);
|
m_Properties.Add(clone);
|
}
|
}
|
}
|
|
private void OnEquipPreview()
|
{
|
RealmEquipPreviewWin.selectRealmLevel = realmLevel;
|
WindowCenter.Instance.Open<RealmEquipPreviewWin>();
|
}
|
}
|
}
|
|