Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 public bool IsSocial(CSCommon.eSocialType type)
 {
     if ((mSocialData.Socail & (uint)type) > 0)
     {
         return(true);
     }
     return(false);
 }
Exemple #4
0
        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);
        }
Exemple #5
0
 public void SetSocial(CSCommon.eSocialType type, bool want)
 {
     if (want)
     {
         mSocialData.Socail |= (uint)type; //相应位得1
     }
     else
     {
         mSocialData.Socail &= (0xffffff ^ (uint)type);     //相应位取0
     }
 }
Exemple #6
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);
 }
Exemple #7
0
 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);
         }
     }
 }
Exemple #8
0
        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);
        }
Exemple #9
0
        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;
            }
        }
Exemple #10
0
        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);
        }
Exemple #11
0
 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);
 }
Exemple #12
0
        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);
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        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);
        }