/// <summary> /// 准备 /// </summary> /// <param name="client"></param> private void ready(ClientPeer client) { SingleExecute.Instance.Execute( () => { if (userCache.IsOnline(client) == false) { return; } int userId = userCache.GetId(client); if (matchCache.IsMatching(userId) == false) { return; } //一定要注意安全的验证 MatchRoom room = matchCache.GetRoom(userId); room.Ready(userId); //之前忘记了 &&&……%……&¥&¥&%#%#&¥&……%& room.Brocast(OpCode.MATCH, MatchCode.READY_BRO, userId); //检测:是否所有玩家都准备了 if (room.IsAllReady()) { //开始战斗 startFight(room.GetUIdList()); //通知房间内的玩家 要进行战斗了 给客户端群发消息 room.Brocast(OpCode.MATCH, MatchCode.START_BRO, null); //销毁房间 matchCache.Destroy(room); } } ); }
/// <summary> /// 准备 /// </summary> /// <param name="client"></param> private void Ready(ClientPeer client) { SingleExecute.Instance.Execute(() => { //安全校验 if (!userCache.IsOnLine(client)) { return; } int userId = userCache.GetIdByClient(client); if (matchCache.IsMatching(userId) == false) { return; } //玩家准备list添加 MatchRoom room = matchCache.GetRoom(userId); room.Ready(userId); room.Brocast(OpCode.MATCH, MatchCode.READY_BRO, userId); //每准备一个 判断一下是否全部准备 if (room.IsReady()) { //开始进入战斗 //客户端群发进入战斗 startFight(room.GetIdList()); room.Brocast(OpCode.MATCH, MatchCode.START_BRO, null); //销毁准备房间 matchCache.Destroy(room); } }); }
/// <summary> /// 准备 /// </summary> /// <param name="client"></param> private void ready(ClientPeer client) { SingleExecute.Instance.Execute(() => { if (userCache.IsOnline(client) == false) { return; } int userId = userCache.GetId(client); if (matchCache.IsMatching(userId) == false) { return; } MatchRoom room = matchCache.GetRoom(userId); room.Ready(userId); room.Brocast(OpCode.MATCH, MatchCode.READY_BRO, userId); //检测: 是否所有玩家都准备了 if (room.IsAllReady()) { //开始战斗 //TODO //通知房间内玩家 要进行战斗了 给客户端群发消息 room.Brocast(OpCode.MATCH, MatchCode.START_BRO, null); //销毁房间 matchCache.Destroy(room); } }); }
/// <summary> /// player ready /// </summary> /// <param name="client"></param> private void ready(ClientPeer client) { SingleExecute.Instance.Execute(() => { if (userCache.IsOnline(client) == false) { return; } int userId = userCache.GetId(client); if (matchCache.IsMatching(userId) == false) { return; } MatchRoom room = matchCache.GetRoom(userId); room.Ready(userId); room.Broadcast(OpCode.MATCH, MatchCode.READY_BROADCAST, userId); //check:all player is ready if (room.IsAllReady()) { //start play card,deal cards startFight(room.GetUIdList); //send all player start play cards room.Broadcast(OpCode.MATCH, MatchCode.START_BROADCAST, null); //destroy room matchCache.Destroy(room); } }); }
/// <summary> /// 准备 /// </summary> /// <param name="clientPeer"></param> private void ready(ClientPeer clientPeer) { SingleExecute.Instance.processSingle( () => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); UserModel userModel = UserCache.Instance.GetModelByClientPeer(clientPeer); if (!MatchCache.Instance.IsMatching(uid)) { return; } MatchRoom room = MatchCache.Instance.GetRoom(uid); room.Ready(uid); //通知房间内除了自己以外的人,自己准备了 room.Broadcast(OpCode.MATCH, MatchCode.READY_BOD, uid, clientPeer); Console.WriteLine("玩家" + userModel.Name + "在匹配房间:" + room.ID + "准备了"); //如果所有人都准备了则开始游戏 if (room.IsAllReady()) { //创建FightHandler FightHandler.Instance.ToString(); /*if (StartGameEvent != null) * { * StartGameEvent(room.ReadyUidlist); * }*/ //创建战斗房间 FightRoom fightRoom = FightRoomCache.Instance.Create(room.ReadyUidlist); //广播消息通知房间内所有人开始选择选择种族 room.Broadcast(OpCode.FIGHT, FightCode.SELECT_RACE_SBOD, "开始选择种族"); MatchCache.Instance.Destory(room); //销毁匹配房间重用 return; } } ); }
private void HandleReady(ClientPeer client, bool ready) { if (!Sessions.matchSession.IsMatching(client)) { return; } MatchRoom room = Sessions.matchSession.GetRoom(client); UserInfoDto userInfoDto = DatabaseManager.CreateUserInfoDto(client.userId); if (ready) { room.Ready(client); room.Broadcast(OpCode.match, MatchCode.ReadyBrd, userInfoDto, client); } else { room.UnReady(client); room.Broadcast(OpCode.match, MatchCode.UnReadyBrd, userInfoDto, client); } }
/// <summary> /// 客户端发来的准备请求 /// </summary> /// <param name="client"></param> /// <param name="roomType"></param> private void Ready(ClientPeer client, int roomType) { SingleExecute.Instance.Execute(() => { if (matchCacheList[roomType].IsMatching(client.Id) == false) { return; } MatchRoom room = matchCacheList[roomType].GetRoom(client.Id); room.Ready(client.Id); room.Broadcase(OpCode.Match, MatchCode.Read_BRO, client.Id); //全部都准备了,可以开始游戏了 if (room.IsAllReady()) { startFight(room.clientList, roomType); //通知房间内的所有玩家开始游戏了 room.Broadcase(OpCode.Match, MatchCode.StartGame_BRO, null); //销毁房间 matchCacheList[roomType].DestroyRoom(room); } }); }
/// <summary> /// 用户准备 /// </summary> /// <param name="client"></param> private void Ready(ClientPeer client) { SingleExecute.Instance.Execute(() => { if (!user.IsOnLine(client)) { //不在线 return; } int userId = user.GetId(client); if (!match.IsMatching(userId)) { return;//非法操作 不能准备 } MatchRoom room = match.GetRoom(userId); room.Ready(userId); //广播消息 准备了 为什么要给自己发,确保服务器收到准备请求 回复消息后 将准备按钮隐藏 room.Brocast(OpCode.MATCHROOM, MatchRoomCode.READY_BRO, userId); Console.WriteLine(string.Format("玩家 : {0} 在房间 :{1} 准备了", user.GetModelByClient(client).name, room.id)); //是否所有玩家都准备了 if (room.IsAllUserReady()) { Console.WriteLine(String.Format("房间 :{0} 开始了战斗。。。", room.id)); //开始战斗 调用FightHandler 的开始方法 委托 if (FightDelegate != null) { FightDelegate.Invoke(room.uidList); } //通知房间内的玩家 要进行战斗了 群发消息 room.Brocast(OpCode.MATCHROOM, MatchRoomCode.START_BRO, null); match.Destroy(room); } }); }