public CSCommon.Data.SocialData AddSocial(ulong otherId, CSCommon.eSocialType type) { CSCommon.Data.SocialData sd = null; if (mSocialDict.ContainsKey(otherId)) { Social s = mSocialDict[otherId]; if (s.IsSocial(type)) { return(null); } else { s.SetSocial(type, true); sd = s.SocialData; } } else { sd = new CSCommon.Data.SocialData(); sd.OwnerId = mHostRole.RoleData.RoleId; sd.OtherId = otherId; Social s = new Social(sd); s.SetSocial(type, true); mSocialDict[sd.OtherId] = s; } return(sd); }
public List <CSCommon.Data.SocialData> GetSocialList(CSCommon.eSocialType type) { List <CSCommon.Data.SocialData> list = new List <CSCommon.Data.SocialData>(); foreach (var i in mSocialDict.Values) { if (IsCoupleType(type)) { for (CSCommon.eSocialType stype = CSCommon.eSocialType.ManWife; stype <= CSCommon.eSocialType.Lily;) { if (i.IsSocial(stype)) { list.Add(i.SocialData); break; } stype = (CSCommon.eSocialType)(((uint)stype) << 1); } } else { if (i.IsSocial(type)) { list.Add(i.SocialData); } } } return(list); }
public bool IsSocial(CSCommon.eSocialType type) { if ((mSocialData.Socail & (uint)type) > 0) { return(true); } return(false); }
public void RPC_OperateAddSocial(ulong roleId, string otherName, byte type, byte operate, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd) { RPC.PackageWriter pkg = new RPC.PackageWriter(); var role = this.GetRole(roleId); if (role == null) { Log.Log.Social.Print("role is null , {0}", roleId); pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.NoRole); pkg.DoReturnCommand2(connect, fwd.ReturnSerialId); return; } var other = this.GetRole(otherName); if (other == null) { pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.NoOther); pkg.DoReturnCommand2(connect, fwd.ReturnSerialId); return; } if (roleId == other.RoleData.RoleId) { pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.RoleIsOther); pkg.DoReturnCommand2(connect, fwd.ReturnSerialId); return; } CSCommon.eSocialType sType = _GetSocialTypeFromMsg((CSCommon.eMessageType)type); if (sType == CSCommon.eSocialType.None) { pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.TypeError); //类型错误 pkg.DoReturnCommand2(connect, fwd.ReturnSerialId); return; } if (role.SocialManager.IsSocial(other.RoleData.RoleId, sType)) { pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.IsSocial); //已经是这种关系 pkg.DoReturnCommand2(connect, fwd.ReturnSerialId); return; } if ((CSCommon.eOperateAsk)operate == CSCommon.eOperateAsk.Accept) { role.SocialManager.AddSocial(other.RoleData.RoleId, (CSCommon.eSocialType)type); role.SocialManager.AddSocial(other.RoleData.RoleId, CSCommon.eSocialType.Friend); other.SocialManager.AddSocial(role.RoleData.RoleId, (CSCommon.eSocialType)type); CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, CSCommon.eMessageType.Couple_Accept, role.RoleData.Name, other.RoleData.RoleId); msg.ShowInfo = string.Format("玩家{0}同意与你成为{1}关系", role.RoleData.Name, _GetStrSocial(sType)); SendMessageToOther(other, msg); } else { CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, CSCommon.eMessageType.Couple_Refuse, role.RoleData.Name, other.RoleData.RoleId); msg.ShowInfo = string.Format("玩家{0}拒绝与你成为{1}关系", role.RoleData.Name, _GetStrSocial(sType)); SendMessageToOther(other, msg); } pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.Succeed); pkg.DoReturnCommand2(connect, fwd.ReturnSerialId); }
public void SetSocial(CSCommon.eSocialType type, bool want) { if (want) { mSocialData.Socail |= (uint)type; //相应位得1 } else { mSocialData.Socail &= (0xffffff ^ (uint)type); //相应位取0 } }
public bool IsCoupleType(CSCommon.eSocialType stype) { for (CSCommon.eSocialType type = CSCommon.eSocialType.ManWife; type <= CSCommon.eSocialType.Lily;) { if (stype == type) { return(true); } type = (CSCommon.eSocialType)(((uint)type) << 1); } return(false); }
public void RemoveCouple(ulong otherId) { if (mSocialDict.ContainsKey(otherId)) { Social s = mSocialDict[otherId]; for (CSCommon.eSocialType stype = CSCommon.eSocialType.ManWife; stype <= CSCommon.eSocialType.Lily;) { if (s.IsSocial(stype)) { s.SetSocial(stype, false); } stype = (CSCommon.eSocialType)(((uint)stype) << 1); } } }
public bool RemoveSocial(ulong otherId, CSCommon.eSocialType type) { if (mSocialDict.ContainsKey(otherId)) { Social s = mSocialDict[otherId]; if (s.IsSocial(type) == false) { return(false); } else { s.SetSocial(type, false); } } return(true); }
private void UpdateSocialInfoList(CSCommon.eSocialType type, UserRole role) { var socials = role.SocialManager.GetSocialList(type); role.mSocialInfoList.Clear(); foreach (var i in socials) { var retPlayer = this.GetRole(i.OtherId); if (retPlayer == null) { //此角色不存在,建议删除 continue; } var info = CreateSocialRoleInfo(i, retPlayer); role.mSocialInfoList[info.id] = info; } }
public bool IsCouple(ulong otherId) { if (mSocialDict.ContainsKey(otherId) == false) { return(false); } for (CSCommon.eSocialType type = CSCommon.eSocialType.ManWife; type <= CSCommon.eSocialType.Lily;) { if (mSocialDict[otherId].IsSocial(type)) { return(true); } type = (CSCommon.eSocialType)(((uint)type) << 1); } return(false); }
public bool IsSocial(ulong otherId, CSCommon.eSocialType type) { if (mSocialDict.ContainsKey(otherId) == false) { return(false); } if (IsCoupleType(type)) { if (IsCouple(otherId)) { return(true); } } else if (mSocialDict[otherId].IsSocial(type)) { return(true); } return(false); }
public string _GetStrSocial(CSCommon.eSocialType type) { string name = "好友"; switch (type) { case CSCommon.eSocialType.Friend: name = "好友"; break; case CSCommon.eSocialType.ManWife: name = "夫妻"; break; case CSCommon.eSocialType.Brother: name = "兄弟"; break; case CSCommon.eSocialType.BasicFriends: name = "基友"; break; case CSCommon.eSocialType.Lover: name = "情人"; break; case CSCommon.eSocialType.Sister: name = "姐妹"; break; case CSCommon.eSocialType.Lily: name = "百合"; break; default: break; } return(name); }
public CSCommon.eMessageType _GetSocialMsgType(CSCommon.eSocialType type) { CSCommon.eMessageType mType = CSCommon.eMessageType.Friend_Ask; switch (type) { case CSCommon.eSocialType.Friend: mType = CSCommon.eMessageType.Friend_Ask; break; case CSCommon.eSocialType.ManWife: mType = CSCommon.eMessageType.ManWife_Ask; break; case CSCommon.eSocialType.Brother: mType = CSCommon.eMessageType.Brother_Ask; break; case CSCommon.eSocialType.BasicFriends: mType = CSCommon.eMessageType.BasicFriends_Ask; break; case CSCommon.eSocialType.Lover: mType = CSCommon.eMessageType.Lover_Ask; break; case CSCommon.eSocialType.Sister: mType = CSCommon.eMessageType.Sister_Ask; break; case CSCommon.eSocialType.Lily: mType = CSCommon.eMessageType.Lily_Ask; break; default: break; } return(mType); }
public CSCommon.eSocialType _GetSocialTypeFromMsg(CSCommon.eMessageType type) { CSCommon.eSocialType mType = CSCommon.eSocialType.None; switch (type) { case CSCommon.eMessageType.Friend_Ask: mType = CSCommon.eSocialType.Friend; break; case CSCommon.eMessageType.ManWife_Ask: mType = CSCommon.eSocialType.ManWife; break; case CSCommon.eMessageType.Brother_Ask: mType = CSCommon.eSocialType.Brother; break; case CSCommon.eMessageType.BasicFriends_Ask: mType = CSCommon.eSocialType.BasicFriends; break; case CSCommon.eMessageType.Lover_Ask: mType = CSCommon.eSocialType.Lover; break; case CSCommon.eMessageType.Sister_Ask: mType = CSCommon.eSocialType.Sister; break; case CSCommon.eMessageType.Lily_Ask: mType = CSCommon.eSocialType.Lily; break; default: break; } return(mType); }