using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
|
class SkillMatchModel : ILModel<SkillMatchModel>
|
{
|
int skillPage;
|
List<int[]> skillIds;
|
|
int pageLength = 15;
|
int pageQuickSettingType = 1;
|
int skillQuickSettingType = 3;
|
|
public int selectId;
|
|
public event Action onSkillMatchPageUpdate;
|
|
protected override void Init()
|
{
|
this.skillPage = 0;
|
skillIds = new List<int[]>();
|
for (int i = 0; i < 3; i++)
|
{
|
var values = ILSkillMatchConfig.GetValues();
|
var ids = new int[values.Count];
|
for (int j = 0; j < values.Count; j++)
|
{
|
ids[j] = values[j].id;
|
}
|
skillIds.Add(ids);
|
}
|
QuickSetting.Instance.onQuickSettingUpdate += OnQuickSettingUpdate;
|
ModelCenter.Instance.GetModelEx<TreasureSkillModel>().treasureSkillRefresh += OnTreasureSkillRefresh;
|
GameEvent.playerLoginOkEvent += OnPlayerLoginOk;
|
var skillModel = ModelCenter.Instance.GetModelEx<SkillModel>();
|
this.onSkillMatchPageUpdate += skillModel.OnSkillMatchPageUpdate;
|
}
|
|
protected override void UnInit()
|
{
|
var skillModel = ModelCenter.Instance.GetModelEx<SkillModel>();
|
this.onSkillMatchPageUpdate -= skillModel.OnSkillMatchPageUpdate;
|
}
|
|
void OnPlayerLoginOk()
|
{
|
TreasureSkillUpdate();
|
}
|
|
void OnQuickSettingUpdate()
|
{
|
var str = QuickSetting.Instance.GetQuickSetting(pageQuickSettingType, 0);
|
if (string.IsNullOrEmpty(str))
|
this.skillPage = 0;
|
else
|
this.skillPage = int.Parse(str);
|
UpdateSkillMatchs();
|
}
|
|
void OnTreasureSkillRefresh(int id)
|
{
|
TreasureSkillUpdate();
|
}
|
|
void UpdateSkillMatchs()
|
{
|
for (int i = 0; i < skillIds.Count; i++)
|
{
|
var ids = this.skillIds[i];
|
for (int j = 0; j < ids.Length; j++)
|
{
|
var id = ids[j];
|
var newid = this.GetQuickSetting(i, j);
|
if (newid != 0 && id != newid)
|
{
|
var index = Array.IndexOf(ids, newid);
|
ids[j] = newid;
|
ids[index] = id;
|
}
|
}
|
}
|
}
|
|
void TreasureSkillUpdate()
|
{
|
var configs = ILSkillMatchConfig.GetValues();
|
for (int i = 0; i < configs.Count; i++)
|
{
|
var config = configs[i];
|
var skillid = GetSkillId(config.id);
|
var model = ModelCenter.Instance.GetModelEx<TreasureSkillModel>();
|
TreasureSkill skill;
|
if (model.TryGetSkill(skillid, out skill))
|
{
|
if (skill.level > 0)
|
{
|
for (int p = 0; p <= 2; p++)
|
TrySetDefaultSkillMatch(config.id, p);
|
}
|
}
|
}
|
QuickSetting.Instance.SendPackage();
|
}
|
|
void TrySetDefaultSkillMatch(int _id, int page)
|
{
|
var skillid = this.GetSkillId(_id);
|
for (int i = 0; i < ILSkillMatchConfig.GetValues().Count; i++)
|
{
|
var ids = this.skillIds.Get(page);
|
if (ids != null && i < ids.Length && HasKey(ids[i]))
|
{
|
var id = ids[i];
|
if (id == _id)
|
return;
|
}
|
else
|
{
|
SetQuickSetting(page, i, _id);
|
}
|
}
|
|
}
|
|
bool HasKey(int id)
|
{
|
var configs = ILSkillMatchConfig.GetValues();
|
for (int i = 0; i < configs.Count; i++)
|
{
|
if (configs[i].id == id)
|
return true;
|
}
|
return false;
|
}
|
|
public int GetSkillId(int id)
|
{
|
var config = ILSkillMatchConfig.Get(id);
|
if (config != null)
|
{
|
var job = PlayerDatas.Instance.baseData.Job;
|
var length = config.skills.Length;
|
if (job <= length)
|
return config.skills[job - 1];
|
}
|
return 0;
|
}
|
|
public List<int> GetSkills()
|
{
|
List<int> skills = new List<int>();
|
var ids = this.skillIds.Get(this.skillPage);
|
if (ids != null)
|
for (int i = 0; i < ids.Length; i++)
|
{
|
var id = ids[i];
|
if (id != 0 && !skills.Contains(id))
|
skills.Add(GetSkillId(id));
|
}
|
return skills;
|
}
|
|
void SkillMatchPageUpdate()
|
{
|
onSkillMatchPageUpdate?.Invoke();
|
}
|
|
public int[] GetDisplayIds(int page)
|
{
|
List<int> skills = new List<int>();
|
var ids = this.skillIds.Get(page);
|
return ids;
|
//if (ids == null)
|
// ids = new int[0];
|
//for (int i = 0; i < ids.Length; i++)
|
//{
|
// var id = ids[i];
|
// if (id != 0 && !skills.Contains(id))
|
// skills.Add(id);
|
//}
|
|
//List<int> sorted = new List<int>();
|
//var config = SkillMatchConfig.GetValues();
|
//for (int i = 0; i < config.Count; i++)
|
//{
|
// if (!ids.Contains(config[i].id))
|
// sorted.Add(config[i].id);
|
//}
|
|
//sorted.Sort((x, y) =>
|
//{
|
// var xOrder = SkillMatchConfig.Get(x).order;
|
// var yOrder = SkillMatchConfig.Get(y).order;
|
// return xOrder.CompareTo(yOrder);
|
//});
|
|
//skills.AddRange(sorted);
|
|
//return skills;
|
}
|
|
public void SetQuickSetting(int page, int index, int id)
|
{
|
this.skillIds[page][index] = id;
|
var str = Convert.ToString(id, 16);
|
index = page * pageLength + index;
|
QuickSetting.Instance.SetQuickSetting(skillQuickSettingType, str, index);
|
}
|
|
int GetQuickSetting(int page, int index)
|
{
|
index = page * pageLength + index;
|
var str = QuickSetting.Instance.GetQuickSetting(skillQuickSettingType, index);
|
if (string.IsNullOrEmpty(str) || str == "0" || str == "*")
|
{
|
return 0;
|
}
|
return Convert.ToInt32(str, 16);
|
}
|
|
public void SetSkillMatch(int page)
|
{
|
if (this.skillPage != page)
|
{
|
this.skillPage = page;
|
QuickSetting.Instance.SetQuickSetting(pageQuickSettingType, page.ToString(), 0);
|
QuickSetting.Instance.SendPackage();
|
}
|
this.SkillMatchPageUpdate();
|
}
|
|
public int GetSkillPage()
|
{
|
return this.skillPage;
|
}
|
|
}
|