Пример #1
0
    public pd_CreatureData CreateSaveData()
    {
        pd_CreatureData data = new pd_CreatureData();

        data.creature_idx = Idx;
        data.creature_idn = Info.IDN;

        data.creature_grade         = Grade;
        data.creature_enchant       = Enchant;
        data.creature_enchant_point = EnchantPoint;
        data.creature_level         = Level;
        data.creature_exp           = Exp;

        data.skill_level = new List <short>();
        foreach (var skill in Skills.GetRange(1, Skills.Count - 1))
        {
            data.skill_level.Add(skill.Level);
        }
        data.equip_idx = new List <long>();
        data.equip_idx.Add(Weapon.EquipIdx);
        data.equip_idx.Add(Armor.EquipIdx);
        data.is_lock = IsLock;

        return(data);
    }
Пример #2
0
 public void Set(pd_CreatureData data)
 {
     SetInternal(data, null, null, null);
 }
Пример #3
0
    void SetInternal(pd_CreatureData data, pd_EquipData weapon, pd_EquipData armor, List <Rune> runes) //设置Creature对象的信息
    {
        this.Info = CreatureInfoManager.Instance.GetInfoByIdn(data.creature_idn);

        Idx          = data.creature_idx;
        SkinName     = Info.GetSkinName(data.skin_index);
        Grade        = data.creature_grade;
        Level        = data.creature_level;
        Enchant      = data.creature_enchant;
        EnchantPoint = data.creature_enchant_point;
        Exp          = data.creature_exp;
        IsLock       = data.is_lock;

        Skills = new List <Skill>();
        for (short i = 0; i < Info.Skills.Count; ++i)
        {
            SkillInfo skillInfo   = Info.Skills[i];
            short     skill_level = Level;
            if (i > 0)
            {
                if (i - 1 < data.skill_level.Count)
                {
                    skill_level = data.skill_level[i - 1];
                }
                else
                {
                    skill_level = 1;
                }
            }
            Skills.Add(new Skill(i, this, skillInfo, skill_level));
        }
        if (Info.TeamSkill != null)
        {
            TeamSkill = new Skill(-1, this, Info.TeamSkill, Level);
        }

        if (weapon == null)
        {
            Weapon = EquipManager.Instance.GetEquipByIdx(data.equip_idx[0]);
        }
        else
        {
            Weapon = new Equip(weapon);
        }
        if (armor == null)
        {
            Armor = EquipManager.Instance.GetEquipByIdx(data.equip_idx[1]);
        }
        else
        {
            Armor = new Equip(armor);
        }

        if (runes != null)
        {
            Runes = runes;
        }
        else
        {
            Runes = RuneManager.Instance.GetRunesByCreatureIdx(this.Idx);
        }

        CalculateStat();
    }
Пример #4
0
 public Creature(pd_CreatureData data, pd_EquipData weapon = null, pd_EquipData armor = null, List <Rune> runes = null)
 {
     SetInternal(data, weapon, armor, runes);
 }