コード例 #1
0
ファイル: SkillCastMgr.cs プロジェクト: midgithub/notes
        public void SetShareCoolDownTime(int skillID, int GroupId, int GroupCD)
        {
            float curTime = Time.time;

            int group_cd_id = GetGroup_cd_idBySkillID(skillID);
            //查询技能组
            //LuaTable skillDesc = GetCurSkillDesc(skillID);

            ShareCDData data = new ShareCDData();

            data.fSkillTime = curTime;
            data.nSkillID   = skillID;
            data.cdTime     = GroupCD;

            if (group_cd_id != GroupId)
            {
                Debug.Log(string.Format("服务器技能cd组与客户端cd组不一致skillid:{0} 服务器:groupId:{1}  客户端groupid:{2}", skillID, GroupId, group_cd_id));
            }

            if (m_SkillShareCDMap.ContainsKey(group_cd_id))
            {
                m_SkillShareCDMap[group_cd_id] = data;
                return;
            }

            m_SkillShareCDMap.Add(group_cd_id, data);
        }
コード例 #2
0
ファイル: SkillCastMgr.cs プロジェクト: midgithub/notes
        //公共技能CD组
        public bool IsInShareCDTime(int nSkillID)
        {
            //m_SkillShareCDMap

            int Group_cd_id = GetGroup_cd_idBySkillID(nSkillID);

            if (Group_cd_id == 0)
            {
                return(false);
            }


            if (!m_SkillShareCDMap.ContainsKey(Group_cd_id))
            {
                return(false);
            }


            ShareCDData data     = m_SkillShareCDMap[Group_cd_id];
            float       lastTime = data.fSkillTime;
            float       curTime  = Time.time;


            if ((curTime - lastTime) * 1000 <= data.cdTime)
            {
                return(true);
            }

            return(false);
        }
コード例 #3
0
ファイル: SkillCastMgr.cs プロジェクト: midgithub/notes
        public float QueryShareCDOverTime(int skillID)
        {
            int group_cd_id = GetGroup_cd_idBySkillID(skillID);


            if (!m_SkillShareCDMap.ContainsKey(group_cd_id))
            {
                return(0f);
            }
            ShareCDData data     = m_SkillShareCDMap[group_cd_id];
            float       lastTime = data.fSkillTime;
            float       curTime  = Time.time;


            float remainTime = data.cdTime - (curTime - lastTime) * 1000;

            if (remainTime < 0)
            {
                remainTime = 0f;
            }

            return(remainTime);
        }
コード例 #4
0
ファイル: SkillCastMgr.cs プロジェクト: midgithub/notes
        //更新CD组,如果CD组的剩余时间为0,则删除当前CD组
        public void UpdateShareCDOverTime()
        {
            if (m_SkillShareCDMap.Count == 0)
            {
                return;
            }

            Dictionary <int, ShareCDData> .Enumerator iter = m_SkillShareCDMap.GetEnumerator();
            List <int> delList = null;

            while (iter.MoveNext())
            {
                ShareCDData data     = iter.Current.Value;
                float       lastTime = data.fSkillTime;
                int         cdTime   = data.cdTime;
                float       curTime  = Time.time;

                float remainTime = cdTime - (curTime - lastTime) * 1000;
                if (remainTime <= 0)
                {
                    if (delList == null)
                    {
                        delList = new List <int>();
                    }
                    delList.Add(iter.Current.Key);
                }
            }

            if (delList != null)
            {
                for (int i = 0; i < delList.Count; i++)
                {
                    m_SkillShareCDMap.Remove(delList[i]);
                }
            }
        }