正义集结&ROD~好友系统1(前言片)

简单的加好友过程详解
简单拿 userA 和 userB 作为例子

首先这个好友系统是通用的好友系统
功能:

  1. 加好友
  2. 删好友
  3. 接收到好友申请
  4. 拒绝好友邀请
  5. 同意好友邀请
  6. 拉黑好友

实现逻辑是非常简单的,重要的是处理TimeOut以及用户体验的问题。

这个系统基于一些架构实现的功能,例如玩家自己的Model数据,变化会通知会客户端。在本人的项目中叫做ModelChange
(简单介绍ModelChange:例如客户端玩家升了一级,就通过协议发送至服务端,修改Model的数据加一级。发送的同时还会发送客户端数据的版本号 例如1.0。在服务端修改数据是一定会使用线程锁,防止多个线程同时访问操作同一数据的对象。在线程锁是不仅防止多访问,还会把当前PlayerDB
[我们把玩家系统,分类数据分成不同的Model写入不同的MySQL表中,这里玩家的等级就PlayerDB的一条数据] 的版本号加0.1,例如1.1。通过构建回馈包,回来的不仅有这条协议的返回数据。还有这个DB的数据,覆盖客户端的数据。客户端发现版本号发生变化就会调用这个PlayerDB对应的 ModelChange。这样就可以做到数据同步,UI的及时刷新等。)

首先定义一个玩家的 好友系统FriendDB,对应MySQL的一个表。
Model使用Proto定义,生成C#代码。
例如:

Message Friend
{
    require uint32 UserBID = 1; //玩家的ID
    require sint64 DealTime    = 2;// 状态转化的时间戳
    require FriendType FriendState = 3;//当前与该玩家的状态
}
enum FriendType
{
    PF_NONE    = 0; //默认
   PF_ASKINGB = 1;  // 准备加好友(未通知对方)(对于主动加的一方)
   PF_WAITINGB = 2;  //准备加好友(已通知对方)(对于主动加的一方)
   PF_WAITINGME = 3;  //有玩家申请加我 (对于被加的一方)
   PF_NOMAL = 4;  // 正常好友状态
   PF_UNUSE = 5;  //槽位为空(在服务端用List存储,所以姑且叫槽位)
   PF_DELETEING = 6; // 删除状态(未通知对方)(对于主动加的一方)
   PF_BLACK    = 7; //拉黑
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值