Beispiel #1
0
        public Card KillOneCardAndGet(enumTypes cardType)
        {
            Card card = Hand.FirstOrDefault(h => h.type == cardType);

            Hand.Remove(card);

            return(card);
        }
Beispiel #2
0
    private void OnEnable()
    {
        this.monoScript       = MonoScript.FromMonoBehaviour(this.target as MonoBehaviour);
        this.boolValueContent = new GUIContent("Other Name", "This is tip");
        this.fadeGroup        = new AnimBool(true);
        this.types            = enumTypes.Four;

        this.fadeGroup.valueChanged.AddListener(this.Repaint);
    }
Beispiel #3
0
        public bool HasCard(enumTypes typeCard)
        {
            bool hasCard = false;

            foreach (Card card in Hand)
            {
                if (card.type == typeCard)
                {
                    hasCard = true;
                }
            }

            return(hasCard);
        }
Beispiel #4
0
        /****************************************************************************************************
         *
         ***************************************************************************************************/
        public void MsgClientToServe(string userIp, EnumTypeMSG type, EnumTypeACTIONS enumTypeACTIONS, string paramA, string paramB, string paramC, string paramD)
        {
            string ipClient = userIp;

            Room room = roomIcollection.FirstOrDefault(r => r.Players.Any(u => u.Ip == ipClient));

            if (room == null)
            {
                room = waitingRoom;
            }

            string roomId = room.Id;
            User   user   = room.Players.FirstOrDefault(u => u.Ip == ipClient);

            if (type == EnumTypeMSG.ACTION)
            {
                if ((room.IpActualPlayer == ipClient || room.CanInterrupt || room.IpChallenger == ipClient || room.MustAnswer == ipClient) && room.ActionProcessing != EnumActionProcessing.MUSTKILLONECARD && room.ActionProcessing != EnumActionProcessing.WAITINGRETREIVINGCARDS)
                {
                    switch (enumTypeACTIONS)
                    {
                    case EnumTypeACTIONS.REVENUE:
                        user.Money += 1;
                        SendToOnePlayer(ipClient, EnumTypeMSG.SET, EnumTypeACTIONS.MONEY, room.OrderNumberOfActualPlayer.ToString(), user.Money.ToString(), null, null);
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players.FirstOrDefault(u => u.Ip == ipClient).Money += 1;
                        NextPlayer(room.Id);
                        break;

                    case EnumTypeACTIONS.SOCIALHELP:
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.SOCIALHELP;
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).TypeChallenge    = enumTypesChallenge.DUCHESS;

                        SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.SOCIALHELP, room.OrderNumberOfActualPlayer.ToString(), null, null, null);

                        WaitForSomeoneChallenge(room.Id);
                        break;

                    case EnumTypeACTIONS.POWER:
                        switch (Convert.ToInt32(paramA))
                        {
                        case (int)enumTypes.AMBASSADOR:
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.AMBASSADORSELECTINGCARDS;
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).TypeChallenge    = enumTypesChallenge.AMBASSADOR;

                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.AMBASSADORSELECTINGCARDS, room.OrderNumberOfActualPlayer.ToString(), null, null, null);

                            WaitForSomeoneChallenge(room.Id);
                            break;

                        case (int)enumTypes.CAPITAIN:
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.CAPITAINSTEALINGMONEY;
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).TypeChallenge    = enumTypesChallenge.CAPITAIN;

                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.CAPITAINSTEALINGMONEY, room.OrderNumberOfActualPlayer.ToString(), null, null, null);

                            // target player

                            string capitainIpTarget = roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[Convert.ToInt32(paramB)].Ip;

                            WaitForAnswer(room.Id, capitainIpTarget);
                            break;

                        case (int)enumTypes.DUCHESS:
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.DUCHESSTAKINGINBANK;
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).TypeChallenge    = enumTypesChallenge.DUCHESS;

                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.DUCHESSTAKINGINBANK, room.OrderNumberOfActualPlayer.ToString(), null, null, null);

                            WaitForSomeoneChallenge(room.Id);
                            break;

                        case (int)enumTypes.INQUISITOR:
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).TypeChallenge = enumTypesChallenge.INQUISITOR;
                            if (Convert.ToInt32(paramB) == 0)
                            {
                                roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.INQUISITORCONSULTING;

                                string inquisitorIpTarget = roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[Convert.ToInt32(paramC)].Ip;

                                SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.INQUISITORCONSULTING, room.OrderNumberOfActualPlayer.ToString(), null, null, null);
                                //target player

                                WaitForAnswer(room.Id, inquisitorIpTarget);
                            }
                            else
                            {
                                roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.INQUISITORSELECTINGCARD;

                                SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.INQUISITORSELECTINGCARD, room.OrderNumberOfActualPlayer.ToString(), null, null, null);

                                WaitForSomeoneChallenge(room.Id);
                            }
                            break;

                        case (int)enumTypes.KILLER:
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).ActionProcessing = EnumActionProcessing.KILLERKILLING;
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).TypeChallenge    = enumTypesChallenge.KILLER;

                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.KILLERKILLING, room.OrderNumberOfActualPlayer.ToString(), null, null, null);
                            //targer player

                            string killerIpTarget = roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[Convert.ToInt32(paramB)].Ip;

                            WaitForAnswer(room.Id, killerIpTarget);
                            break;
                        }
                        break;

                    case EnumTypeACTIONS.MURDER:
                        if (user.Money >= 7)
                        {
                            user.Money -= 7;
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players.FirstOrDefault(u => u.Ip == ipClient).Money = user.Money;
                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.MURDER, room.OrderNumberOfActualPlayer.ToString(), paramA, null, null);

                            MustKillOneCard(room.Id, Convert.ToInt32(paramA), room.Players[Convert.ToInt32(paramA)].Ip);
                        }
                        else
                        {
                            SendToOnePlayer(ipClient, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.MONEYERROR, null, null, null, null);
                            SendToOnePlayer(ipClient, EnumTypeMSG.SET, EnumTypeACTIONS.MONEY, room.NumberOrder(user.Ip).ToString(), user.Money.ToString(), null, null);
                        }
                        break;

                    case EnumTypeACTIONS.CHALLENGE:
                        StopTimer(room.Id);
                        SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.CHALLENGE, room.NumberOrder(ipClient).ToString(), paramB, null, null);
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).MustAnswerPlayer = (enumTypes)Convert.ToInt32(paramA);
                        WaitForSecondChallenge(room.Id, ipClient);
                        break;

                    case EnumTypeACTIONS.SECONDCHALLENGE:
                        StopTimer(room.Id);
                        int orderMustAnswer = room.NumberOrder(room.MustAnswer);

                        if (room.Players[orderMustAnswer].HasCard(room.MustAnswerPlayer))
                        {
                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.SECONDCHALLENGE, "FAIL", room.OrderNumberOfActualPlayer.ToString(), null, null);
                            MustKillOneCard(room.Id, room.OrderNumberOfActualPlayer, room.IpActualPlayer);
                        }
                        else
                        {
                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.SECONDCHALLENGE, "SUCCESS", room.OrderNumberOfActualPlayer.ToString(), null, null);
                            ActionSuccess(room.Id);
                            MustKillOneCard(room.Id, orderMustAnswer, room.MustAnswer);
                        }
                        break;
                    }
                }
                else if (room.ActionProcessing == EnumActionProcessing.WAITINGRETREIVINGCARDS && room.MustAnswer == ipClient)
                {
                    if (enumTypeACTIONS == EnumTypeACTIONS.RETRIEVINGCARDSAMBASSADOR)
                    {
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).deck.Cour.Add(new Card(Convert.ToInt32(paramA)));
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).deck.Cour.Add(new Card(Convert.ToInt32(paramB)));

                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).deck.Cour.Shuffle();

                        NextPlayer(room.Id);
                    }
                    else if (enumTypeACTIONS == EnumTypeACTIONS.RETRIEVINGCARDINQUISITOR)
                    {
                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).deck.Cour.Add(new Card(Convert.ToInt32(paramA)));

                        roomIcollection.FirstOrDefault(r => r.Id == room.Id).deck.Cour.Shuffle();

                        NextPlayer(room.Id);
                    }
                }
                else if (room.ActionProcessing == EnumActionProcessing.MUSTKILLONECARD && room.MustAnswer == ipClient)
                {
                    if (enumTypeACTIONS == EnumTypeACTIONS.KILLCARD)
                    {
                        if (roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[room.NumberOrder(ipClient)].Hand.Count - 1 > 0)
                        {
                            enumTypes cardType = (enumTypes)Convert.ToInt32(paramA);
                            if (roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[room.NumberOrder(ipClient)].HasCard(cardType))
                            {
                                Card card = roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[room.NumberOrder(ipClient)].KillOneCardAndGet(cardType);
                                roomIcollection.FirstOrDefault(r => r.Id == room.Id).deck.Cimetiere.Add(card);
                                SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.KILLONECARD, room.NumberOrder(ipClient).ToString(), null, null, null);
                                roomIcollection.FirstOrDefault(r => r.Id == room.Id).CheckCardsAlive();
                                SendCardsAlive(room.Id);

                                CheckGameEndAndNextPlayerIfOk(room.Id);
                            }
                            else
                            {
                                SendToOnePlayer(ipClient, EnumTypeMSG.ORDER, EnumTypeACTIONS.MUSTKILLONECARD, null, null, null, null);
                            }
                        }
                        else
                        {
                            roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players[room.NumberOrder(ipClient)].Kill();
                            SendToARoom(room.Id, EnumTypeMSG.ANNONCE, EnumTypeACTIONS.KILLED, room.NumberOrder(ipClient).ToString(), null, null, null);
                            CheckGameEndAndNextPlayerIfOk(room.Id);
                        }
                    }
                }
                else
                {
                    SendToOnePlayer(ipClient, EnumTypeMSG.ORDER, EnumTypeACTIONS.WAIT, null, null, null, null);
                }
            }
            else if (type == EnumTypeMSG.GET)
            {
                switch (enumTypeACTIONS)
                {
                case EnumTypeACTIONS.SRVVERS:
                    Console.WriteLine("Demande de la version du serveur : " + user.Ip);
                    SendToOnePlayer(ipClient, EnumTypeMSG.ANSWER, EnumTypeACTIONS.SRVVERS, CURRENTSERVERVERSION, null, null, null);
                    break;

                case EnumTypeACTIONS.MINCLTVERS:
                    SendToOnePlayer(ipClient, EnumTypeMSG.ANSWER, EnumTypeACTIONS.MINCLTVERS, MINCLIENTVERSION, null, null, null);
                    break;
                }
            }
            else if (type == EnumTypeMSG.SET)
            {
                switch (enumTypeACTIONS)
                {
                case EnumTypeACTIONS.NAME:
                    roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players.FirstOrDefault(p => p.Ip == user.Ip).SetName(paramB);
                    SendToARoom(room.Id, EnumTypeMSG.SET, EnumTypeACTIONS.NAMEOFAPLAYER, room.NumberOrder(user.Ip).ToString(), roomIcollection.FirstOrDefault(r => r.Id == room.Id).Players.FirstOrDefault(p => p.Ip == user.Ip).Name, null, null);
                    break;
                }
            }
        }
Beispiel #5
0
 public Card(enumTypes type)
 {
     this.type = type;
 }