Guid[] GetIdleMembers(Guid managerId, DTOBuffMemberView buffData) { if (!buffData.SyncIdleFlag) { return(null); } var members = NbManagerbuffmemberMgr.GetByMid(managerId, ShareUtil.GetTableMod(managerId)); Guid tid = Guid.Empty; var dic = buffData.BuffMembers; const int cnt = 5; int i = 0; var ary = new Guid[cnt]; foreach (var item in members) { if (i >= cnt) { break; } tid = item.Tid; if (!dic.ContainsKey(tid)) { ary[i++] = tid; } } for (; i < cnt; ++i) { ary[i] = Guid.Empty; } return(ary); }
internal bool SyncMembersCore(Guid managerId, EnumArenaType arenaType, DTOBuffMemberView buffData, string siteId = "") { try { if (null == buffData) { return(false); } if (string.IsNullOrEmpty(siteId)) { int managerHash = ShareUtil.GetTableMod(managerId); //var idles = GetIdleMembers(managerId, buffData); string mSkills = FrameConvert.SkillListToText(buffData.ManagerSkills); int errorCode = 0; byte[] rowVer = BitConverter.GetBytes(buffData.UseSyncVersion); NbManagerbuffmemberMgr.SyncBatch(managerId, buffData.Kpi, string.Empty, mSkills, rowVer, ref rowVer, ref errorCode); if (errorCode != 0) { return(false); } buffData.UseSyncVersion = BitConverter.ToUInt64(rowVer, 0); } buffData.SyncIdleFlag = false; s_memBuffMember.Set(arenaType.ToString() + managerId.ToString(), buffData); return(true); } catch (Exception ex) { SystemlogMgr.Error(string.Format("BuffDataCore:Sync Manager[{0}]", managerId), ex); return(false); } }
DTOBuffMemberView GetMembers4Db(Guid managerId, ManagerSkillUseWrap use, ArenaTeammemberFrame arenaFrame) { if (!FrameConfig.SWAPBuffDataReadDb || null == use || use.Raw.SyncFlag != 0) { return(null); } var rawMembers = BuffUtil.GetRawMembers(managerId, true, arenaFrame); var members = NbManagerbuffmemberMgr.GetByMid(managerId, ShareUtil.GetTableMod(managerId)); //var extra = NbManagerextraMgr.GetById(managerId); var dic = new Dictionary <Guid, NbManagerbuffmemberEntity>(members.Count); DicPlayerEntity cfg = null; foreach (var item in members) { cfg = PlayersdicCache.Instance.GetPlayer(Math.Abs(item.Pid)); if (null == cfg) { continue; } FillBuffMemberProp(item, cfg); item.ReadySkillList = item.ReadySkills.Split(',').ToList(); item.LiveSkillList = item.LiveSkills.Split(',').ToList(); } var data = CreateBuffView(managerId, use, rawMembers.ToDictionary(i => i.Idx, i => i)); data.Kpi = arenaFrame.Kpi; data.SyncIdleFlag = false; data.BuffMembers = dic; return(data); }
internal bool SetMembersCore(Guid managerId, EnumArenaType arenaType) { try { int errorCode = 0; NbManagerbuffmemberMgr.SyncSend(managerId, null, ref errorCode); if (errorCode != 0) { throw new Exception(string.Format("Manager[{0}] FailCode[{1}]", managerId, errorCode)); } return(true); } catch (Exception ex) { s_memBuffMember.Delete(arenaType.ToString() + managerId.ToString()); SystemlogMgr.Error("BuffDataCore:SyncSend", ex); return(false); } }