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