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()区别

猜你喜欢

转载自blog.csdn.net/norman_lin/article/details/79966442