/// <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); } } ); }
/// <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); } } ); }
/// <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);*/ }