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); }
//公共技能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); }
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); }
//更新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]); } } }