Beispiel #1
0
        /// <summary>
        /// 玩家跳过
        /// </summary>
        /// <param name="clientPeer"></param>
        private void processPass(ClientPeer clientPeer)
        {
            SingleExecute.Instance.processSingle(
                () =>
            {
                if (!UserCache.Instance.IsOnline(clientPeer))
                {
                    return;
                }
                int uid = UserCache.Instance.GetId(clientPeer);

                FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid);
                PlayerDto playerDto = fightRoom.GetPlayerDto(uid);

                if (fightRoom.roundModle.BiggestUid == playerDto.UserID)
                {
                    //clientPeer.StartSend(OpCode.FIGHT, FightCode.PASS_SRES, false);
                    //最大出牌者不能不出
                    return;
                }
                else
                {
                    turn(fightRoom);    //轮换出牌
                    //clientPeer.StartSend(OpCode.FIGHT, FightCode.PASS_SRES, true);
                }
            }
                );
        }
Beispiel #2
0
        /// <summary>
        /// 处理玩家离开
        /// </summary>
        /// <param name="clientPeer"></param>
        private void processLeave(ClientPeer clientPeer)
        {
            SingleExecute.Instance.processSingle(
                () =>
            {
                if (!UserCache.Instance.IsOnline(clientPeer))
                {
                    return;
                }
                int uid = UserCache.Instance.GetId(clientPeer);

                if (!FightRoomCache.Instance.IsJoinFight(uid))
                {
                    //如果没有进入战斗房间
                    return;
                }

                FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid);
                PlayerDto playerDto = fightRoom.GetPlayerDto(uid);

                fightRoom.LeavePlayerDtos.Add(playerDto);
                fightRoom.Leave(clientPeer);
                fightRoom.UidRaceidDic.Remove(uid);

                if (fightRoom.LeavePlayerDtos.Count >= 2)
                {
                    //所有玩家都离开了
                    FightRoomCache.Instance.Destroy(fightRoom.ID);
                }
            }
                );
        }
Beispiel #3
0
        /// <summary>
        /// 游戏结束
        /// </summary>
        /// <param name="fightRoom"></param>
        /// <param name="winuid"></param>
        private void gameover(FightRoom fightRoom, int winuid)
        {
            PlayerDto playerDto = fightRoom.GetPlayerDto(winuid);
            //int winIdentity = playerDto.Identity;
            //List<PlayerDto> winList = fightRoom.GetSameIdentityPlayer(winIdentity);
            //List<PlayerDto> loseList = fightRoom.GetDiffIdentityPlayer(winIdentity);
            //int winbeen = fightRoom.Multiple * 100;
            //int losebeen = fightRoom.Multiple * 100 * 2;
            //int runbeen = fightRoom.Multiple * 100  * 3;

            //给胜利玩家增加

            /*for (int i = 0; i < winList.Count; i++)
             * {
             *  ClientPeer client = UserCache.Instance.GetClientPeer(winList[i].UserID);
             *  UserModel um = UserCache.Instance.GetModelByClientPeer(client);
             *
             *  if (!fightRoom.LeavePlayerDtos.Contains(winList[i]))
             *  {
             *      //如果玩家没有中途离开
             *      //um.Money += winbeen;
             *      um.Exp += 20;
             *      if (um.Exp >= 100)
             *      {
             *          um.Exp = 0;
             *          um.Lv++;
             *      }
             *      um.WinCount++;
             *      UserCache.Instance.Update(um);
             *  }
             * }
             *
             * for (int i = 0; i < loseList.Count; i++)
             * {
             *  ClientPeer client = UserCache.Instance.GetClientPeer(loseList[i].UserID);
             *  UserModel um = UserCache.Instance.GetModelByClientPeer(client);
             *
             *  if (!fightRoom.LeavePlayerDtos.Contains(loseList[i]))
             *  {
             *      //如果玩家没有中途离开
             *      //um.Money -= losebeen;
             *      um.Exp += 10;
             *      if (um.Exp >= 100)
             *      {
             *          um.Exp = 0;
             *          um.Lv++;
             *      }
             *      um.LoseCount++;
             *      UserCache.Instance.Update(um);
             *  }
             * }
             *
             * for (int i = 0; i < fightRoom.LeavePlayerDtos.Count; i++)
             * {
             *  //PlayerDto runplayer = fightRoom.LeavePlayerDtos[i];
             *  ClientPeer client = UserCache.Instance.GetClientPeer(fightRoom.LeavePlayerDtos[i].UserID);
             *  UserModel um = UserCache.Instance.GetModelByClientPeer(client);
             *  //um.Money -= runbeen;
             *  um.LoseCount++;
             *  um.RunCount++;
             *  UserCache.Instance.Update(um);
             * }
             *
             * //OverDto overDto = new OverDto(winIdentity, winList, winbeen);
             * //fightRoom.Broadcast(OpCode.FIGHT, FightCode.GAME_OVER_SBOD, overDto);*/
        }