using System;
|
using System.Collections.Generic;
|
|
public partial class PetInfoConfig : IConfigPostProcess
|
{
|
static Dictionary<int, List<PetSkillLimit>> petSkillDict = new Dictionary<int, List<PetSkillLimit>>();
|
static Dictionary<int, int> itemUnlockPetMap = new Dictionary<int, int>();
|
|
public void OnConfigParseCompleted()
|
{
|
List<PetSkillLimit> list = null;
|
if (!petSkillDict.TryGetValue(ID, out list))
|
{
|
list = new List<PetSkillLimit>();
|
petSkillDict.Add(ID, list);
|
}
|
var skills = SkillID;
|
var skillUnlocks = SkillUnLock;
|
|
for (int i = 0; i < skills.Length; i++)
|
{
|
list.Add(new PetSkillLimit()
|
{
|
skill = skills[i],
|
lv = skillUnlocks[i],
|
});
|
}
|
|
itemUnlockPetMap[UnLockNeedItemID] = ID;
|
}
|
|
public static void GetPetSkills(int petId, int lv, bool onlyAcitve, ref List<int> skills)
|
{
|
if (skills == null)
|
{
|
return;
|
}
|
skills.Clear();
|
List<PetSkillLimit> list = null;
|
if (petSkillDict.TryGetValue(petId, out list))
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
if (lv < list[i].lv && onlyAcitve)
|
{
|
continue;
|
}
|
skills.Add(list[i].skill);
|
}
|
}
|
}
|
|
public static int GetPetSkillCondition(int petId, int skillId)
|
{
|
List<PetSkillLimit> list = null;
|
if (petSkillDict.TryGetValue(petId, out list))
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
if (skillId == list[i].skill)
|
{
|
return list[i].lv;
|
}
|
}
|
}
|
return 0;
|
}
|
|
public static bool TryGetPetIdBySkill(int skillId, out int petId)
|
{
|
petId = 0;
|
foreach (var key in petSkillDict.Keys)
|
{
|
var list = petSkillDict[key];
|
for (int i = 0; i < list.Count; i++)
|
{
|
if (list[i].skill == skillId)
|
{
|
petId = key;
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
|
public static int GetItemUnLockPet(int itemId)
|
{
|
if (itemUnlockPetMap.ContainsKey(itemId))
|
{
|
return itemUnlockPetMap[itemId];
|
}
|
|
return 0;
|
}
|
|
public struct PetSkillLimit
|
{
|
public int skill;
|
public int lv;
|
}
|
}
|