예제 #1
0
        public KFCopyTeamSetFlagRsp SetFlag(KFCopyTeamSetFlagReq req)
        {
            IKuaFuCopyService    service = this.GetKuaFuService(true);
            KFCopyTeamSetFlagRsp result;

            if (service == null)
            {
                result = null;
            }
            else
            {
                result = service.TeamSetFlag(req);
            }
            return(result);
        }
예제 #2
0
 public KFCopyTeamSetFlagRsp TeamSetFlag(KFCopyTeamSetFlagReq req)
 {
     return(this.teamMgr.TeamSetFlag(req));
 }
예제 #3
0
        public KFCopyTeamSetFlagRsp TeamSetFlag(KFCopyTeamSetFlagReq req)
        {
            KFCopyTeamSetFlagRsp rsp = new KFCopyTeamSetFlagRsp();

            try
            {
                lock (this.Mutex)
                {
                    CopyTeamData td = null;
                    if (!this.CopyTeamDict.TryGetValue(req.TeamId, out td))
                    {
                        rsp.ErrorCode = CopyTeamErrorCodes.TeamIsDestoryed;
                        return(rsp);
                    }
                    if (req.RoleId != td.LeaderRoleID)
                    {
                        rsp.ErrorCode = CopyTeamErrorCodes.NotTeamLeader;
                        return(rsp);
                    }
                    CopyTeamMemberData member = td.TeamRoles.Find((CopyTeamMemberData _role) => _role.RoleID == req.RoleId);
                    if (member == null)
                    {
                        rsp.ErrorCode = CopyTeamErrorCodes.NotInMyTeam;
                        return(rsp);
                    }
                    if (td.StartTime > 0L)
                    {
                        rsp.ErrorCode = CopyTeamErrorCodes.Success;
                        return(rsp);
                    }
                    if (req.AutoStart >= 0)
                    {
                        td.AutoStart = (req.AutoStart > 0);
                    }
                    if (req.AutoKick >= 0)
                    {
                        td.AutoKick = req.AutoKick;
                    }
                    CopyTeamFlagData data = new CopyTeamFlagData();
                    data.RoleId    = req.RoleId;
                    data.TeamId    = req.TeamId;
                    data.AutoStart = (td.AutoStart ? 1 : 0);
                    data.AutoKick  = td.AutoKick;
                    this.AddAsyncEvent(new AsyncDataItem
                    {
                        EventType = KuaFuEventTypes.KFCopyTeamSetFlag,
                        Args      = new object[]
                        {
                            member.ServerId,
                            data
                        }
                    });
                    rsp.ErrorCode = CopyTeamErrorCodes.Success;
                    rsp.Data      = data;
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("更新跨服副本队伍准备状态异常, role={0}, teamid={1}", req.RoleId, req.TeamId), ex, true);
                rsp.ErrorCode = CopyTeamErrorCodes.CenterServerFailed;
            }
            return(rsp);
        }