173 lines
4.8 KiB
C#
173 lines
4.8 KiB
C#
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;
|
||
}
|
||
}
|