public void RemoveTeam(long teamId) { lock (this.Mutex) { CopyTeamData td = null; if (this.CopyTeamDict.TryGetValue(teamId, out td)) { this.CopyTeamDict.Remove(teamId); HashSet <long> teamList = null; if (this.CopyId2Teams.TryGetValue(td.FuBenId, out teamList)) { teamList.Remove(teamId); } this.TimeLimitCopy.Remove(td.TeamID); if (td.KFServerId > 0) { this._KFCopyService.RemoveGameTeam(td.KFServerId, td.TeamID); } foreach (CopyTeamMemberData role in td.TeamRoles) { this.RoleId2JoinedTeam.Remove(role.RoleID); } CopyTeamDestroyData data = new CopyTeamDestroyData(); data.TeamId = teamId; this.AddAsyncEvent(new AsyncDataItem { EventType = KuaFuEventTypes.KFCopyTeamDestroty, Args = new object[] { data } }); } } }
/// <summary> /// 队伍销毁 回调 /// </summary> /// <param name="data"></param> private void OnTeamDestroy(CopyTeamDestroyData data) { if (data == null) { return; } lock (Mutex) { CopyTeamData td = null; if (!TeamDict.TryGetValue(data.TeamId, out td)) { return; } TeamDict.Remove(data.TeamId); FuBenSeq2TeamId.Remove(td.FuBenSeqID); HashSet <long> teamList = null; if (FuBenId2Teams.TryGetValue(td.FuBenId, out teamList)) { teamList.Remove(td.TeamID); } foreach (var member in td.TeamRoles) { RoleId2JoinedTeam.Remove(member.RoleID); if (member.ServerId != ThisServerId) { continue; } GameClient client = GameManager.ClientMgr.FindClient(member.RoleID); if (client != null) { NotifyTeamStateChanged(client, (int)CopyTeamErrorCodes.LeaveTeam, member.RoleID, 0); } } // 队长id设为-1, 通知整个队伍 td.LeaderRoleID = -1; NotifyTeamData(td); // 清空队伍,然后通知给所有关注列表的人 td.TeamRoles.Clear(); td.MemberCount = td.TeamRoles.Count; NotifyTeamListChange(td); } }
public void CheckLogAsyncEvents(AsyncDataItem[] evList) { if (evList != null) { foreach (AsyncDataItem ev in evList) { string sql = string.Empty; try { if (ev.EventType == KuaFuEventTypes.KFCopyTeamCreate) { CopyTeamCreateData data = ev.Args[1] as CopyTeamCreateData; sql = string.Format("INSERT INTO t_kuafu_fuben_game_team(teamid,copyid,by_serverid,by_roleid,createtime) VALUES({0},{1},{2},{3},'{4}')", new object[] { data.TeamId, data.CopyId, data.Member.ServerId, data.Member.RoleID, TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss") }); } else if (ev.EventType == KuaFuEventTypes.KFCopyTeamStart) { CopyTeamStartData data2 = ev.Args[1] as CopyTeamStartData; sql = string.Format("UPDATE t_kuafu_fuben_game_team SET starttime='{0}', kf_serverid={1} WHERE teamid={2}", TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"), data2.ToServerId, data2.TeamId); } else if (ev.EventType == KuaFuEventTypes.KFCopyTeamDestroty) { CopyTeamDestroyData data3 = ev.Args[0] as CopyTeamDestroyData; sql = string.Format("UPDATE t_kuafu_fuben_game_team SET endtime='{0}' WHERE teamid={1}", TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"), data3.TeamId); } } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, "KuaFuCopyDbMgr.CheckLogAsyncEvents Failed!!!", ex, true); } if (!string.IsNullOrEmpty(sql)) { this.ExecuteSqlNoQuery(sql); } } } }
public void RemoveTeam(long teamId) { lock (Mutex) { CopyTeamData td = null; if (!CopyTeamDict.TryGetValue(teamId, out td)) { return; } CopyTeamDict.Remove(teamId); HashSet <long> teamList = null; if (CopyId2Teams.TryGetValue(td.FuBenId, out teamList)) { teamList.Remove(teamId); } TimeLimitCopy.Remove(td.TeamID); if (td.KFServerId > 0) { _KFCopyService.RemoveGameTeam(td.KFServerId, td.TeamID); } foreach (var role in td.TeamRoles) { RoleId2JoinedTeam.Remove(role.RoleID); } // 异步广播队伍摧毁的事件 CopyTeamDestroyData data = new CopyTeamDestroyData(); data.TeamId = teamId; AsyncDataItem evItem = new AsyncDataItem(); evItem.EventType = KuaFuEventTypes.KFCopyTeamDestroty; evItem.Args = new object[1] { data }; AddAsyncEvent(evItem); } }
public KFCopyTeamDestroyEvent(CopyTeamDestroyData data) : base((int)GlobalEventTypes.KFCopyTeamDestroy) { this.Data = data; }