Beispiel #1
0
    public HeartSkillDataBase GetHeartSkillData(uint skillID)
    {
        string        des        = "";
        SkillDatabase db         = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, 1);
        bool          hasLearn   = false;
        uint          heartID    = db.heartID;
        uint          heartLevel = 0;

        if (db != null)
        {
            List <GameCmd.HeartSkill> heartList = DataManager.Manager <HeartSkillManager>().OwnedHeartSkillList;

            for (int i = 0; i < heartList.Count; i++)
            {
                HeartSkill hs = heartList[i];
                if (hs.skill_id == heartID)
                {
                    hasLearn   = true;
                    heartLevel = hs.level;
                    break;
                }
            }
        }
        if (hasLearn)
        {
            HeartSkillDataBase hdb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartID, (int)heartLevel);
            if (hdb != null)
            {
                return(hdb);
            }
        }
        return(null);
    }
Beispiel #2
0
    /// <summary>
    /// 升级心法数据
    /// </summary>
    /// <param name="cmd"></param>
    public void OnUpgradeHeartSkill(stUpSkillGodDataUserCmd_CS cmd)
    {
        HeartSkill heartSkill = m_ownedHeartSkillList.Find((data) => { return(data.skill_id == cmd.skill_id); });

        if (heartSkill != null)
        {
            heartSkill.level = cmd.level;
        }
        else
        {
            heartSkill = new HeartSkill {
                skill_id = cmd.skill_id, level = cmd.level
            };
            m_ownedHeartSkillList.Add(heartSkill);
        }

        Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.HEARTSKILLUPGRADE, heartSkill);
    }
Beispiel #3
0
    public override void SetGridData(object data)
    {
        base.SetGridData(data);
        m_heartSkill = data as HeartSkill;
        if (m_heartSkill == null)
        {
            return;
        }

        HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(m_heartSkill.skill_id, (int)m_heartSkill.level);

        if (db != null)
        {
            SetIcon(db.icon);
            SetName(db.name);
            SetLv(db.lv);
            bool isLock = db.lv == 0 ? true : false;
            SetMask(isLock);
        }
    }
Beispiel #4
0
    /// <summary>
    /// 获得前置技能list
    /// </summary>
    /// <param name="preSkill"></param>
    /// <returns></returns>
    public List <HeartSkill> GetPreHeartSkill(string preSkill)
    {
        List <HeartSkill> list = new List <HeartSkill>();
        bool b1 = preSkill.Contains(";");
        bool b2 = preSkill.Contains("_");

        string[] arr1 = preSkill.Split(';');

        for (int i = 0; i < arr1.Length; i++)
        {
            string[] arr2 = arr1[i].Split('_');

            if (arr2.Length != 2)
            {
                return(list);
            }

            uint skillId;
            uint lv;
            if (!uint.TryParse(arr2[0], out skillId))
            {
                Engine.Utility.Log.Error("--->>> 表格数据出错 ,没取到数据!");
            }
            if (!uint.TryParse(arr2[1], out lv))
            {
                Engine.Utility.Log.Error("--->>> 表格数据出错 ,没取到数据!");
            }

            HeartSkill hs = new HeartSkill {
                skill_id = skillId, level = lv
            };
            list.Add(hs);
        }

        return(list);
    }
Beispiel #5
0
    /// <summary>
    /// 心法是否可升级
    /// </summary>
    public bool IsEnableUpgrade(HeartSkill heartSkill)
    {
        bool isEnableUpgrade = true;

        //下一等级心法数据
        HeartSkillDataBase nextDb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartSkill.skill_id, (int)heartSkill.level + 1);

        if (nextDb == null)
        {
            isEnableUpgrade = false;
            return(isEnableUpgrade);
        }

        //神魔等级
        IPlayer player = Client.ClientGlobal.Instance().MainPlayer;

        if (player != null)
        {
            if (player.GetProp((int)CreatureProp.Level) < nextDb.needPlayerLv)
            {
                isEnableUpgrade = false;
            }
        }


        //心法点
        if (m_heartSkillPoint < nextDb.costHeartSkillPoint)
        {
            isEnableUpgrade = false;
        }

        //前置技能
        List <HeartSkill> preSkillList = GetPreHeartSkill(nextDb.pre_skill);

        for (int i = 0; i < preSkillList.Count; i++)
        {
            if (false == m_ownedHeartSkillList.Exists((data) => { return(data.skill_id == preSkillList[i].skill_id && data.level == preSkillList[i].level); }))
            {
                isEnableUpgrade = false;
            }
        }

        //消耗金币
        if (Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.PlayerProp.Coupon) < nextDb.need_money)   //金币不足 字体红色
        {
            isEnableUpgrade = false;
        }

        //是否最高等级
        HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartSkill.skill_id, (int)heartSkill.level);

        if (db != null)
        {
            if (heartSkill.level == db.maxLv)
            {
                isEnableUpgrade = false;
            }
        }

        return(isEnableUpgrade);
    }