Files
test/Assets/PerfectWorld/Scripts/Skills/CECSkillConvert.cs
T
2026-01-21 17:40:10 +07:00

86 lines
2.5 KiB
C#

// Filename : CECSkillConvert.cs
// Creator : zhangyitian
// Date : 2014/07/09
// Converted to C# from EC_SkillConvert.cpp
using CSNetwork.GPDataType;
using System.Collections.Generic;
namespace BrewMonster.Scripts.Skills
{
// 神魔转换查询表 // God-Evil skill conversion table
public class CECSkillConvert
{
private static CECSkillConvert instance;
private Dictionary<int, int> m_convertTable;
private bool m_bInitialized;
private CECSkillConvert()
{
m_convertTable = new Dictionary<int, int>();
m_bInitialized = false;
}
// 单例 // Singleton
public static CECSkillConvert Instance
{
get
{
if (instance == null)
{
instance = new CECSkillConvert();
}
return instance;
}
}
private void Initialize()
{
var pDB = ElementDataManProvider.GetElementDataMan();
var dt = DATA_TYPE.DT_GOD_EVIL_CONVERT_CONFIG;
var map = pDB.GetAllDataTypeWithType(ID_SPACE.ID_SPACE_CONFIG, dt);
if (map == null)
{
BMLogger.LogError("CECSkillConvert Initialize failed: no data found for DT_GOD_EVIL_CONVERT_CONFIG");
return;
}
foreach (var obj in map)
{
GOD_EVIL_CONVERT_CONFIG config = (GOD_EVIL_CONVERT_CONFIG)obj;
if (config.skill_map != null)
{
for (int i = 0; i + 1 < map.Length; i += 2)
{
if (config.skill_map[i] != 0 &&
config.skill_map[i+128] != 0)
{
m_convertTable[config.skill_map[i]] = config.skill_map[i + 128];
m_convertTable[config.skill_map[i+128]] = config.skill_map[i];
}
}
}
}
m_bInitialized = true;
}
// 获得转换后的技能,返回0表示没有转换的技能 // Get the converted skill, return 0 if no conversion exists
public int GetConvertSkill(int skillID)
{
if (!m_bInitialized)
{
Initialize();
}
if (m_convertTable.TryGetValue(skillID, out int convertedSkillID))
{
return convertedSkillID;
}
return 0;
}
}
}