*添加好友以及好友列表
现象
好友请求如果你一直不处理,他会一直存留(退出游戏再登也会存在)
分析
好友请求需要持久化存储。等到另一个玩家同意之后才会真正的加上好友[数据库写上关系]
[好友请求怎么存储的话?不是很懂,难道用数据库吗?]
这块比较简单就不做过多赘述
*好友状态广播
现象
会在邀请列表中显示 空闲/在房间且房间未满 的好友列表
并且会在主菜单弹出一个云,并且标明好友名称
推测
根据好友的状态是否为 空闲/在房间且房间未满 然后显示在列表中(咱先假设好友状态有:战斗中,空闲,在房间且房间未满,在房间且房间满了,被邀请中,离线)[如果是我写的话会用一个集合存所有在线好友,使用观察者模式根据玩家状态信息的更新来对好友广播状态信息]
至于主菜单弹出一个云,并且标明好友名称这一块功能完全可以根据广播收到的消息在客户端处理(广播收到的信息应该是一个 空闲/在房间且房间未满 的好友集合)
*邀请好友进房间
现象
1.邀请好友的瞬间会出现一个小队代码
2.邀请好友的那一方会有一个正在邀请框提示[如果你取消了我也不知道会发生什么]
并且又会进行查找空闲好友的操作
被邀请的一方会弹出一个邀请框表示是否加入(我们暂且不考虑游戏模式这方面的细节)
4.好友进来了之后会显示英雄和名字
推测
1.邀请好友之前先判断自己是不是有房间了,如果没有房间就创建一个房间在邀请好友。[我设计的话,房间会包含id,状态,最大人数,当前人数这些熟悉]。id会作为房间唯一标识,最大人数根据模式决定[单人荒野其实没有房间这种说法,双人荒野是双人,其他模式全是三人]
[但,其实这块估计是客户端处理,因为你在三个人的时候可以临时切换成双人模式,然后开不了游戏等诸多情况]
2.邀请好友的那一方会有一个正在邀请框提示和4.好友进来了之后会显示英雄和名字
这两点可以一起讲。其实这完全可以拆分成三个状态
[欲邀请好友,邀请好友中,好友已在房间]
这块应该也是客户端处理,根据状态机切换即可。[注意:被邀请的一方是直接跳跃到好友已在房间状态,而邀请者是一条龙服务]
3.被邀请的一方会弹出一个邀请框。
简单的回调而已,邀请者把信息传给服务端,服务端转给被邀请者。
*好友聊天室
现象
1.你在创建房间的一瞬间就会弹出这个
当然,其他人加入的瞬间也会弹出这个
2.由于我没有两个手机测试,其实我不是很懂他的聊天室是持久化存的,还是临时的[指刚进来的人能不能看到历史记录]
3.然后其实有个很有趣的事情
就是这个框
如果你连续发送多条语句,这框会自动融合成一个大框[不是很懂这个技术是咋做的wsfw]
4.至于表情,他只能发一个表情作为一句话,而不是qq这种可以嵌入到句子中的。
比较简单,就是正常的聊天系统,只需要区分这三种元素就行了
*战斗系统
由于无朋友玩[所以无图,qwq]
1.首先相同英雄不能开房间[客户端判断轻轻松松]
2.所有玩家准备好了房主才能开始游戏[这块逻辑准备的时候广播一个准备状态就行,蛮简单的]
3.开始匹配之后,如果有一个人中途取消那就G,集体中断。(如果战斗房间完全准备ok那就无法点击退出房间,直接进入战斗)
4.好友房间和实际游戏房间应该是两个房间[估计是两个好友房间和若个空闲玩家组成的游戏房间]
5.模式选择,房主可以换模式,其他人只能推荐房主玩什么模式