ET框架---MatchRoomComponent学习笔记

MatchRoomComponent

请大家关注我的微博:@NormanLin_BadPixel坏像素


这是管理匹配房间的组件。既然我们有管理匹配玩家的组件,当然也需要这个组件啦。

我们先记住,我们这个组件里的属性。

//所有房间列表
public readonly Dictionary<long, Room> rooms = new Dictionary<long, Room>();

//游戏中房间列表
public readonly Dictionary<long, Room> gameRooms = new Dictionary<long, Room>();

//等待中房间列表
public readonly Dictionary<long, Room> readyRooms = new Dictionary<long, Room>();

//空闲房间列表
public readonly Queue<Room> idleRooms = new Queue<Room>();

//房间总数
public int TotalCount { get { return this.rooms.Count; } }

//游戏中房间数
public int GameRoomCount { get { return gameRooms.Count; } }

//等待中房间数
public int ReadyRoomCount { get { return readyRooms.Where(p => p.Value.Count < 3).Count(); } }

//空闲房间数
public int IdleRoomCount { get { return idleRooms.Count; } }

这些都是共用的属性,我们随时可以获取并修改他们。

这里需要注意的是,获取等待中房间数的方法,并不是简单返回等待中房间列表的长度。因为一些房间里可能已经位置坐满了,但是还有些玩家没准备,或者房主没有开始游戏。这个时候,房间的状态还是等待中。但是,我们这个组件是服务于匹配的,我们要获得的是可以加入的房间,所以,它会排除人满的房间。

至于这个组件的逻辑,在扩展里。我们去瞅瞅。

里面的方法都比较简单,而且作者做了详细的注释。我就不废话了,无非就是对上面的属性进行各种操作。

这里稍微说一下获取等待中的匹配房间方法。里面用到了IEnemerable上的FirstOrDefault,可能有些人对这个方法不是很了解(我也是哈哈)。这里提供一篇博文给大家。Find()和First()与FirstOrDefault()区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值