예제 #1
0
        //Kártya húzás: Modellből adatok lekérése és továbbítása a megfelelő játékos oldalnak.
        private void DrawTheCard(int key, DrawTarget target, DrawType drawType, SkillState newState)
        {
            Card cardData = null;

            if (target == DrawTarget.Hand && !controller.GetBlindMatchState())
            {
                cardData = modules.GetDataModule().GetPlayerWithKey(key).DrawCardFromDeck();
            }

            else if (controller.GetBlindMatchState() || target == DrawTarget.Field)
            {
                cardData = modules.GetDataModule().GetPlayerWithKey(key).BlindDraw();
            }

            //Ha a felhúzás sikeres
            if (cardData != null)
            {
                modules.GetClientModule().DrawNewCard(cardData, key, modules.GetDataModule().GetPlayerWithKey(key).GetPlayerStatus(), drawType, target, newState);

                //Ha a játékosról van szó továbbítjuk megjelenítésre a deck új méretét
                if (modules.GetDataModule().GetPlayerWithKey(key).GetPlayerStatus())
                {
                    int remainingDeckSize = modules.GetDataModule().GetPlayerWithKey(key).GetDeckSize();
                    modules.GetClientModule().RefreshDeckSize(key, remainingDeckSize);
                }
            }
        }
        //Játékos kártyájának skill helyzetében történt válotoztatás kezelése
        public IEnumerator HandleSkillStatusChange(SkillState state, int cardPosition, bool needToWait)
        {
            int key = modules.GetGameModule().GetCurrentKey();

            switch (state)
            {
            case SkillState.Pass:
                modules.GetDataModule().GetCardFromPlayer(key, cardPosition, CardListTarget.Field).SetSkillState(state);
                modules.GetGameModule().Pass();
                break;

            case SkillState.Use:
                modules.GetGameModule().SetActiveCardID(cardPosition);
                modules.GetDataModule().GetCardFromPlayer(key, cardPosition, CardListTarget.Field).SetSkillState(state);
                modules.GetClientModule().SetSkillState(key, cardPosition, state);
                modules.GetGameModule().Use(cardPosition);
                if (needToWait)
                {
                    yield return(modules.GetGameModule().WaitForEndOfSkill());
                }
                break;

            case SkillState.Store:
                modules.GetDataModule().GetCardFromPlayer(key, cardPosition, CardListTarget.Field).SetSkillState(state);
                modules.GetGameModule().StartCoroutine(modules.GetGameModule().Store(cardPosition));
                break;

            default:
                modules.GetDataModule().GetCardFromPlayer(key, cardPosition, CardListTarget.Field).SetSkillState(SkillState.Pass);
                modules.GetGameModule().Pass();
                break;
            }

            CheckIfFinished();
        }
예제 #3
0
        private IEnumerator FirstCut_QuickEffect()
        {
            //Várunk, hogy a főszál beérjen a lockhoz
            while (modules.GetGameModule().GetSkillWaitStatus())
            {
                yield return(null);
            }

            Debug.Log("First Cut");

            int ownKey = modules.GetGameModule().GetCurrentKey();

            foreach (int key in modules.GetDataModule().GetKeyList())
            {
                int position = 0;
                foreach (Card card in modules.GetDataModule().GetCardsFromPlayer(key, CardListTarget.Field))
                {
                    modules.GetClientModule().SetSkillState(key, position, SkillState.Pass);
                    position++;
                }
                modules.GetDataModule().GetPlayerWithKey(key).SetStatus(PlayerTurnStatus.Finished);
            }

            modules.GetGameModule().StartCoroutine(modules.GetClientModule().DisplayNotification(modules.GetDataModule().GetPlayerName(ownKey) + " hatástalanította a többiek képességét!"));
            yield return(modules.GetGameModule().WaitForEndOfText());

            modules.GetGameModule().SetNegationStatus(true);

            modules.GetGameModule().SkillFinished();
        }
        //Bizonyos kártya listát jelenít meg az aktív játékos számára, amiből választhat ezután
        public IEnumerator DisplayCardList(int currentKey, CardListFilter filter = CardListFilter.None, int limit = 0)
        {
            List <Card> cardList = new List <Card>();

            switch (modules.GetGameModule().GetCurrentListType())
            {
            case CardListTarget.Hand: cardList = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Hand, filter, limit); break;

            case CardListTarget.Winners: cardList = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Winners, filter, limit); break;

            case CardListTarget.Losers: cardList = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Losers, filter, limit); break;

            case CardListTarget.Deck: cardList = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Deck, filter, limit); break;

            case CardListTarget.Field: cardList = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Field, filter, limit); break;

            default: break;
            }
            SkillEffectAction currentAction = modules.GetGameModule().GetCurrentAction();

            string msg = "";

            switch (currentAction)
            {
            case SkillEffectAction.Switch:
                msg = "Válaszd ki, hogy melyik lappal cserélsz!";
                break;

            case SkillEffectAction.Revive:
                msg = "Válaszd ki, hogy melyik lapot éleszted fel!";
                break;

            case SkillEffectAction.SwitchOpponentCard:
                msg = "Válaszd ki, hogy melyik ellenséges lapot cseréled ki!";
                break;

            case SkillEffectAction.SacrificeFromHand:
                msg = "Válaszd ki, hogy melyik lapot áldozod fel az Erőért!";
                break;

            case SkillEffectAction.Reorganize:
                msg = "Változtasd meg a sorrendjét a kártyáidnak!";
                break;

            case SkillEffectAction.TossCard:
                msg = "Válaszd ki, hogy melyik lapot dobod el!";
                break;

            default:
                break;
            }

            //Ha van miből választani, akkor megjelenítjük a listát
            if (cardList.Count > 0)
            {
                CardChoice(cardList, currentAction, currentKey, msg);

                //Várunk a visszajelzésére
                yield return(modules.GetGameModule().WaitForEndOfAction());
            }

            else
            {
                if (currentAction == SkillEffectAction.SacrificeDoppelganger)
                {
                    modules.GetGameModule().StartCoroutine(DisplayNotification("Nincs megfelelő lap a kezedben!"));
                }

                modules.GetGameModule().SetSelectionAction(SkillEffectAction.None);
                modules.GetGameModule().SetSwitchType(CardListTarget.None);
                modules.GetGameModule().SkillFinished();
            }
        }
 //Képesség passzolása
 public void Pass()
 {
     StartCoroutine(modules.GetClientModule().DisplayNotification(modules.GetDataModule().GetPlayerWithKey(currentKey).GetUsername() + " passzolta a képességet!"));
     StartCoroutine(WaitForText());
     SkillFinished();
     //modules.GetDataModule().GetPlayerWithKey(currentKey).SetStatus(PlayerTurnStatus.Finished);
 }
        //Kártyacsere vagy választás
        public IEnumerator CardSelectionEffect(int key, CardListFilter filter, int limit = 0, int otherPlayer = -1)
        {
            GetCurrentContext(key);

            //Ha cseréről van szó
            if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Switch)
            {
                int handID = -1;

                //Ha kézből cserélünk
                if (modules.GetGameModule().GetCurrentListType() == CardListTarget.Hand)
                {
                    handID = Bot_Behaviour.HandSwitch(
                        modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Hand),
                        modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Field),
                        modules.GetDataModule().GetOpponentsCard(currentKey),
                        currentStat);

                    modules.GetSkillModule().SwitchCard(currentKey, modules.GetGameModule().GetActiveCardID(), handID);
                }
            }

            //Ha skill lopásról van szó
            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SkillUse)
            {
                //Adatgyűjtés
                Card ownCard = modules.GetDataModule().GetCardFromPlayer(currentKey, modules.GetGameModule().GetActiveCardID(), CardListTarget.Field);
                List <PlayerCardPairs> cards = modules.GetDataModule().GetOtherLosers(currentKey);
                int index = Bot_Behaviour.WhichSkillToUse(cards);

                modules.GetInputModule().HandleCardSelection(cards[index].cardPosition, cards[index].playerKey);
                yield break;
            }

            //Ha felélesztésről van szó
            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Revive)
            {
                List <Card> cards  = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Losers);
                int         cardID = Bot_Behaviour.WhomToRevive(cards);
                modules.GetInputModule().HandleCardSelection(cardID, currentKey);
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Execute)
            {
                List <int> temp       = modules.GetDataModule().GetOtherKeyList(currentKey);
                int        choosenKey = Bot_Behaviour.WhichPlayerToExecute(temp);

                modules.GetInputModule().ReportNameBoxTapping(choosenKey);
                yield return(modules.GetGameModule().WaitForEndOfAction());
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SwitchOpponentCard)
            {
                List <int> temp       = modules.GetDataModule().GetOtherKeyList(currentKey);
                int        choosenKey = Bot_Behaviour.WhichPlayerToExecute(temp);

                modules.GetInputModule().ReportNameBoxTapping(choosenKey);
                yield return(modules.GetGameModule().WaitForEndOfAction());
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.PickCardForSwitch)
            {
                List <Card> cardsOnField  = modules.GetDataModule().GetCardsFromPlayer(otherPlayer, CardListTarget.Field);
                int         choosenCardID = Bot_Behaviour.WhichCardToSwitch(cardsOnField);
                int         deckCount     = (modules.GetDataModule().GetDeckAmount(otherPlayer)) - 1;
                modules.GetGameModule().SetSwitchType(CardListTarget.Deck);
                modules.GetSkillModule().SwitchCard(otherPlayer, choosenCardID, deckCount);
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.CheckWinnerAmount)
            {
                List <int> keyList    = modules.GetDataModule().GetOtherKeyList(currentKey);
                List <int> winAmounts = modules.GetDataModule().GetOthersWinAmount(currentKey);

                int playerID = Bot_Behaviour.WhichPlayerToChoose(winAmounts);

                modules.GetInputModule().ReportNameBoxTapping(keyList[playerID]);
            }

            //Ha kézből eldobásról van szó
            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.TossCard)
            {
                //Csak akkor dobunk el lapot, ha van a kezünkben
                if (cardsInHand.Count > 1)
                {
                    int cardID = Bot_Behaviour.WhomToToss(cardsInHand);
                    modules.GetInputModule().HandleCardSelection(cardID, currentKey);
                }

                else
                {
                    Debug.Log("Nincs mit eldobni");
                    modules.GetGameModule().ActionFinished();
                }
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SacrificeFromHand)
            {
                int cardID = Bot_Behaviour.WhomToToss(cardsInHand);
                modules.GetInputModule().HandleCardSelection(cardID, currentKey);
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SacrificeDoppelganger)
            {
                List <Card> cardList = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Hand, filter);
                if (cardList.Count > 0)
                {
                    int cardID = Bot_Behaviour.WhomToToss(cardList);
                    modules.GetInputModule().HandleCardSelection(cardID, currentKey);
                }

                else
                {
                    Debug.Log("Nincs megfelelő lap a kézben");
                    modules.GetGameModule().ActionFinished();
                }
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Reorganize)
            {
                List <Card> cardsInDeck = modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Deck, CardListFilter.None, limit);
                cardsInDeck = Bot_Behaviour.OrganiseCardsInDeck(cardsInDeck, modules.GetDataModule().GetRNG());
                modules.GetInputModule().HandleChangeOfCardOrder(cardsInDeck, currentKey);
            }
        }