NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/ShowAllCharacter/PlayerSkillCultivateData.cs

173 lines
4.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using cfg.ActorCfg;
using cfg.SkillCfg;
using Framework;
using Gameplay;
using Gameplay.Net;
using System;
using System.Collections.Generic;
using System.Linq;
public class SinglePlayerSkillCultivateData
{
public int ID;
public int Level;
public string IconPath;
public DataPlayerSkill SkillCfg;
public DataPlayerSkillUpgrade UpgradeCfg;
public int maxLevel = 0;
public int lineNum = 0;
public string Name => CommonUtils.GetLocalizeText(SkillCfg.NameLocal);
public string Desc => CommonUtils.GetLocalizeText(SkillCfg.DescLocal);
public SinglePlayerSkillCultivateData(DataPlayerSkillUpgrade cfg)
{
ID= cfg.ID;
UpgradeCfg= cfg;
RefreshLevel();
RefreshMaxLevel(cfg.Level);
//检查上层配置
if(cfg.LayerID==1)
{
lineNum = 0;
}else
{
for (int i = 0; i < cfg.Unlock.Length; i++)
{
DataPlayerSkillUpgrade dataPlayerSkillUpgrade= TableManager.Instance.Tables.PlayerSkillUpgrade.Get(cfg.Unlock[i], cfg.LayerID - 1);
if (dataPlayerSkillUpgrade==null)
{
DebugUtil.LogError("playerSkillUpgrade表里,id为{0},等级为{1}的unlockId为{2}在上一层没有配置", cfg.ID, cfg.Level, cfg.Unlock[i]);
}
}
}
SkillCfg = TableManager.GetSingleton().Tables.PlayerSkillConfig.Get(cfg.ID);
if(SkillCfg==null)
{
DebugUtil.LogError("PlayerSkillConfig没有id为{0}的技能", cfg.ID);
SkillCfg = TableManager.GetSingleton().Tables.PlayerSkillConfig.DataList[0];
}
IconPath = SkillCfg.IconPath;
}
public bool IfMaxLevel()
{
return Level >= maxLevel;
}
public void RefreshMaxLevel(int curLv)
{
if(curLv>maxLevel)
{
maxLevel= curLv;
}
}
void RefreshLevel()
{
Level = Actor.Instance.PlayerSkill.GetLevel(ID);
}
}
public class PlayerBlockCultivateData
{
public cfg.PlayerSkillCfg.PlayerSkillType skillType;
public List<SinglePlayerSkillCultivateData> dataList;
public PlayerBlockCultivateData(DataPlayerSkillUpgrade cfg)
{
dataList = new List<SinglePlayerSkillCultivateData>
{
new SinglePlayerSkillCultivateData(cfg)
};
skillType = cfg.SkillType;
}
public void Add(DataPlayerSkillUpgrade cfg)
{
bool isContain = false;
for (int i = 0; i < dataList.Count; i++)
{
if (dataList[i].ID==cfg.ID)
{
isContain = true;
dataList[i].RefreshMaxLevel(cfg.Level);
}
}
if(isContain)
{
return;
}
SinglePlayerSkillCultivateData data = new SinglePlayerSkillCultivateData(cfg);
dataList.Add(data);
}
}
public class PlayerLayerCultivateData
{
public Dictionary<cfg.PlayerSkillCfg.PlayerSkillType,PlayerBlockCultivateData> DataDic;
public PlayerLayerCultivateData()
{
DataDic = new Dictionary<cfg.PlayerSkillCfg.PlayerSkillType, PlayerBlockCultivateData>();
}
public void Add(DataPlayerSkillUpgrade cfg)
{
PlayerBlockCultivateData blockCultivateData;
if (DataDic.TryGetValue(cfg.SkillType,out blockCultivateData))
{
blockCultivateData.Add(cfg);
}else
{
blockCultivateData = new PlayerBlockCultivateData(cfg);
DataDic.Add(cfg.SkillType, blockCultivateData);
}
}
}
public class PlayerSkillCultivateData
{
//layer 的dic
public Dictionary<int, PlayerLayerCultivateData> playerLayerDic;
public PlayerSkillCultivateData()
{
playerLayerDic = new Dictionary<int, PlayerLayerCultivateData>();
for (int i = 0; i < TableManager.Instance.Tables.PlayerSkillUpgrade.DataList.Count; i++)
{
DataPlayerSkillUpgrade data = TableManager.Instance.Tables.PlayerSkillUpgrade.DataList[i];
PlayerLayerCultivateData player;
if(playerLayerDic.TryGetValue(data.LayerID,out player))
{
player.Add(data);
}else
{
PlayerLayerCultivateData temp = new PlayerLayerCultivateData();
temp.Add(data);
playerLayerDic.Add(data.LayerID, temp);
}
}
}
public int GetMaxLayer()
{
int maxLayer = 0;
for (int i = 0; i < TableManager.Instance.Tables.PlayerSkillUpgrade.DataList.Count; i++)
{
if (TableManager.Instance.Tables.PlayerSkillUpgrade.DataList[i].LayerID>maxLayer)
{
maxLayer = TableManager.Instance.Tables.PlayerSkillUpgrade.DataList[i].LayerID;
}
}
return maxLayer;
}
}