//Képesség tartalékolása
        public IEnumerator Store(int cardPosition)
        {
            //Először megnézzük, hogy tud-e áldozni
            if (modules.GetDataModule().GetPlayerWithKey(currentKey).GetWinAmount() > 0)
            {
                storeCount++;

                currentAction = SkillEffectAction.Store;

                //Ha ember döntött úgy, hogy store-olja a képességet
                if (modules.GetDataModule().GetPlayerWithKey(currentKey).GetPlayerStatus())
                {
                    string msg = "Válaszd ki, hogy melyik győztest áldozod fel!";
                    modules.GetClientModule().CardChoice(modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Winners), currentAction, currentKey, msg);

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

                currentAction = SkillEffectAction.None;
            }

            //Ha nem, akkor figyelmeztetjük és reseteljük a kártyát
            else
            {
                StartCoroutine(modules.GetClientModule().DisplayNotification(modules.GetDataModule().GetPlayerWithKey(currentKey).GetUsername() + ", ehhez nincs elég győztes lapod!"));
                yield return(WaitForEndOfText());

                modules.GetClientModule().ResetCardSkill(currentKey, cardPosition);
            }
        }
 public SkillProperty(
     SkillActivationTime time    = SkillActivationTime.Normal,
     SkillTriggerRequirement req = SkillTriggerRequirement.None,
     SkillEffectTarget target    = SkillEffectTarget.Self,
     SkillEffectAction action    = SkillEffectAction.None)
 {
     this.activationTime   = time;
     this.skillRequirement = req;
     this.skillTarget      = target;
     this.effectAction     = action;
 }
        private void Awake()
        {
            //Modulok beállítása
            this.modules = Module_Controller.CreateModuleController(this, factory, client);

            //Interakciók beállítása
            this.interactions = new Interactions(this, modules);

            //Játékfázisok beállítása
            this.orderChangeState     = new OrderChangeState(modules, this, interactions);
            this.preparationState     = new PreparationState(modules, this, interactions);
            this.starterDrawState     = new StarterDrawState(modules, this, interactions);
            this.settingRoleState     = new SettingRoleState(modules, this, interactions);
            this.selectFightTypeState = new SelectFightTypeState(modules, this, interactions);
            this.summonState          = new SummonState(modules, this, interactions);
            this.revealCardsState     = new RevealCardsState(modules, this, interactions);
            this.quickSkillState      = new QuickSkillState(modules, this, interactions);
            this.mainSkillState       = new MainSkillState(modules, this, interactions);
            this.compareState         = new CompareState(modules, this, interactions);
            this.lateSkillState       = new LateSkillState(modules, this, interactions);
            this.cardPutAwayState     = new CardPutAwayState(modules, this, interactions);
            this.blindMatchState      = new BlindMatchState(modules, this, interactions);
            this.resultState          = new ResultState(modules, this, interactions);

            //Játékfázisok és státuszok alapértékezése
            this.currentPhase           = MainGameStates.SetupGame;
            this.currentStat            = CardStatType.NotDecided;
            this.currentAction          = SkillEffectAction.None;
            this.currentSelectionType   = CardListTarget.None;
            this.currentKey             = -1;
            this.currentActiveCard      = -1;
            this.lastWinnerKey          = -1;
            this.phaseChange            = true;
            this.firstRound             = true;
            this.displayedMessageStatus = false;
            this.blindMatch             = false;
            this.actionFinished         = true;
            this.turnFinished           = true;
            this.skillFinished          = true;
            this.changedOrder           = false;
            this.lateSkillKeys          = new List <int>();
            this.instantWin             = false;
            this.negatedSkills          = false;

            rng = new System.Random();
        }
        public IEnumerator CardAmountCheck()
        {
            //Ha több mint 7 lap van a kezünkben, le kell dobni egy szabadon választottat.
            if (modules.GetDataModule().GetCardsFromPlayer(currentKey, CardListTarget.Hand).Count > 7)
            {
                currentAction        = SkillEffectAction.TossCard;
                currentSelectionType = CardListTarget.Hand;

                modules.GetSkillModule().MakePlayerChooseCard();
                yield return(new WaitForSeconds((GameSettings_Controller.drawTempo) / 2));

                ActionFinished();
            }

            else
            {
                yield return(new WaitForSeconds((GameSettings_Controller.drawTempo) / 2));

                ActionFinished();
            }
        }
        public void SetupList(Client client_in, List <Card> cardList, SkillEffectAction action, string msg)
        {
            this.client = client_in;
            this.instructionText.text = msg;

            foreach (Card card in cardList)
            {
                Button temp = Instantiate(cardPrefab, displayField.transform.position, Quaternion.identity, displayField.transform);
                temp.GetComponent <Image>().sprite = card.GetArt();

                //Listán belüli indexet ad vissza cseréhez, áldozáshoz.
                if (action == SkillEffectAction.Store ||
                    action == SkillEffectAction.Switch ||
                    action == SkillEffectAction.Revive ||
                    action == SkillEffectAction.TossCard ||
                    action == SkillEffectAction.SkillUse ||
                    action == SkillEffectAction.SwitchOpponentCard ||
                    action == SkillEffectAction.SacrificeFromHand ||
                    action == SkillEffectAction.SacrificeDoppelganger)
                {
                    temp.onClick.AddListener(delegate { client.ReportCardSelection(cardList.IndexOf(card)); });
                }
            }

            //Visszalépés akciók

            if (action == SkillEffectAction.Store ||
                action == SkillEffectAction.Switch ||
                action == SkillEffectAction.SkillUse ||
                action == SkillEffectAction.Revive)
            {
                backButton.onClick.AddListener(delegate { client.ReportSelectionCancel(); });
            }

            else if (action == SkillEffectAction.None)
            {
                backButton.onClick.AddListener(delegate { client.CloseCardList(); });
            }
        }
Ejemplo n.º 6
0
        public void DisplayListOfCards(List <Card> cards, SkillEffectAction action, int key, string msg)
        {
            keyOfTarget = key;

            //Ha sorrend változtatásról van szó
            if (action == SkillEffectAction.Reorganize)
            {
                cardList = Instantiate(cardOrganizePrefab, ingamePanelCanvas.transform.position, Quaternion.identity, ingamePanelCanvas.transform);
                cardList.GetComponent <CardOrganizeDisplay>().SetupScreen(this, msg);
                foreach (Card card in cards)
                {
                    cardList.GetComponent <CardOrganizeDisplay>().AddCard(card);
                }
            }

            //Ha egy lap kiválasztásáról van szó
            else
            {
                cardList = Instantiate(cardListPrefab, ingamePanelCanvas.transform.position, Quaternion.identity, ingamePanelCanvas.transform);
                cardList.GetComponent <CardListDisplay>().SetupList(this, cards, action, msg);
            }

            isCardListActive = true;
        }
        //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();
            }
        }
 //Megjeleníttet az UI felülettel egy listányi kártyát, amiből választani kell
 public void CardChoice(List <Card> cardData, SkillEffectAction action, int key, string msg)
 {
     client.DisplayListOfCards(cardData, action, key, msg);
 }
 public void SetSelectionAction(SkillEffectAction action)
 {
     currentAction = action;
 }
 public void SetCurrentAction(SkillEffectAction newAction)
 {
     this.currentAction = newAction;
 }