void OnGUI(){
		switch(gameState){
		case GameState.Preview:
			if (GUI.Button (new Rect ((Screen.width - 200) / 2, 4, 200, 40), "Confirm")) {
				ShuffleCard ();
			}
			break;
		case GameState.Result:

			if (GUI.Button (new Rect (10, Screen.height - 50, 150, 50), "No Match")) {
				firstCard.isSelected = secondCard.isSelected = false;
				firstCard = null;
				secondCard = null;
				gameState = GameState.Input;
			}
			if (GUI.Button (new Rect (Screen.width-160, Screen.height - 50, 150, 50), "Match")) {
				if (firstCard.checkPair (secondCard)) {
					firstCard.isPaired = secondCard.isPaired = true;

					resumeGamefromNoMatch ();
				}else{
					firstCard.noMatchTimer = secondCard.noMatchTimer = 3;
					gameState = GameState.WaitConfirm;
					Invoke("resumeGamefromNoMatch",3);
				}



			}

			break;
		}
	}
	public void selectCard(CardBase card){
		if (firstCard == null) {
			firstCard = card;
			firstCard.isSelected = true;
			previewCard (card);
		}else{
			if (firstCard.GetInstanceID () != card.GetInstanceID ()) {

				secondCard = card;
				previewCard (card);
				gameState = GameState.Result;
				Debug.Log ("result");
				//if (firstCard.checkPair (card)) {
				//	firstCard.isPaired=card.isPaired=true;
				//	secondCard = card;
				//	previewCard (card);
				//	gameState = GameState.Result;
				//	isMatch = true;
				//} else {
				//	isMatch = false;
				//	previewCard (card);
				//	firstCard.isSelected = card.isSelected = false;
				//	firstCard = null;

				//}


			}
		}
	}
	public void previewCard(CardBase card){
		if (card.isPreviewed) {
			gameState = GameState.Input;
			card.isPreviewed = false;
		} else {
			foreach (CardBase c in activeCard) {
				c.isPreviewed = false;
			}
			card.isPreviewed = true;
			gameState = GameState.PreviewBig;
		}
	}
Exemple #4
0
 private void Rotate2Front(CardBase[] currentCards)
 {
     _halfway = false;
     for (int i = 0; i < _uiCards.Length; i++)
     {
         if (!_halfway && _uiCards[i].eulerAngles.y < 90)
         {
             _uiCards[i].Rotate(0, _rotateSpeed * Time.deltaTime, 0);
             if (_uiCards[i].localEulerAngles.y >= 90)
             {
                 _uiCards[i].localEulerAngles = new Vector3(0, 90, 0);
             }
         }
         else if (!_halfway && (int)_uiCards[i].localEulerAngles.y == 90)
         {
             _uiCards[i].FindChild("ForSide").gameObject.SetActive(true);
             _uiCards[i].FindChild("BackSide").gameObject.SetActive(false);
             _uiCards[i].localEulerAngles = new Vector3(0, 270, 0);
             if (i == _uiCards.Length - 1)
             {
                 for (int n = 0; n < _uiCards.Length; n++)
                 {
                     currentCards[n].DrawCardImage(_uiCards[n]);
                 }
                 _halfway = true;
             }
         }
         else if (_halfway && _uiCards[i].localEulerAngles.y < 360)
         {
             _uiCards[i].Rotate(0, _rotateSpeed * Time.deltaTime, 0);
             if (_uiCards[i].localEulerAngles.y >= 360 || (_uiCards[i].localEulerAngles.y >= 0 && _uiCards[i].localEulerAngles.y < 270))
             {
                 _uiCards[i].localEulerAngles = Vector3.zero;
             }
         }
     }
     _halfway = false;
     _animating = false;
 }
	public override bool checkPair (CardBase otherCard)
	{
		return id == otherCard.id;
	}
 private void OnCardDroppedInSlot(CardBase droppedCard, int numberOfCardsInHand)
 {
     _canvas.interactable = false;
     _isFadedIn           = false;
     FadeItAll.FadeCanvasGroup(_canvas, 3f, false);
 }
Exemple #7
0
 private void Awake()
 {
     _cardBase = (CardBase)target;
 }
Exemple #8
0
    private void RefreshPreviewCard(bool refreshAffixPanel = true, UpgradeDegradeOperation operation = UpgradeDegradeOperation.None)
    {
        if (PreviewCard)
        {
            PreviewCard.ShowCardBloom(true);
            PreviewCard.PoolRecycle();
            PreviewCard = null;
        }

        if (PreviewCardDegrade)
        {
        }

        if (PreviewCard_Src.CardInfo.BaseInfo.LimitNum == 0 && operation != UpgradeDegradeOperation.None)
        {
            if (operation == UpgradeDegradeOperation.Degrade)
            {
                PreviewCard_Src = UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().AllCards[PreviewCard_Src.CardInfo.UpgradeInfo.DegradeCardID];
            }
            else if (operation == UpgradeDegradeOperation.Upgrade)
            {
                PreviewCard_Src = UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().AllCards[PreviewCard_Src.CardInfo.UpgradeInfo.UpgradeCardID];
            }
        }

        PreviewCard = CardBase.InstantiateCardByCardInfo(PreviewCard_Src.CardInfo, PreviewContent, CardBase.CardShowMode.CardUpgradePreview);

        if (UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().CurrentEditBuildButton)
        {
            PreviewCard.ChangeCardSelectLimit(UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().CurrentEditBuildButton.BuildInfo.M_BuildCards.CardSelectInfos[PreviewCard.CardInfo.CardID].CardSelectUpperLimit, true);
        }

        PreviewCard.SetBlockCountValue(UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().GetSelectedCardCount(PreviewCard.CardInfo.CardID), true);
        PreviewCard.transform.localScale    = Vector3.one * 18;
        PreviewCard.transform.localPosition = new Vector3(0, 50, 0);
        PreviewCard.ShowCardBloom(true);
        PreviewCard.ChangeCardBloomColor(ClientUtils.HTMLColorToColor("#FFDD8C"), 2);
        PreviewCard.BeBrightColor();
        PreviewCard.BoxCollider.enabled = false;
        PreviewCard.ShowAllSlotBlooms(true);

        bool hasUpgradeCard = false;
        bool hasDegradeCard = false;

        if (SelectBuildManager.Instance.CurrentGameMode == SelectBuildManager.GameMode.Single)
        {
            int u_id = PreviewCard_Src.CardInfo.UpgradeInfo.UpgradeCardID;
            int d_id = PreviewCard_Src.CardInfo.UpgradeInfo.DegradeCardID;
            hasUpgradeCard = u_id != -1 && StoryManager.Instance.GetStory().CardUnlockInfos[u_id];
            hasDegradeCard = d_id != -1 && StoryManager.Instance.GetStory().CardUnlockInfos[d_id];
        }
        else if (SelectBuildManager.Instance.CurrentGameMode == SelectBuildManager.GameMode.Online)
        {
            hasUpgradeCard = PreviewCard_Src.CardInfo.UpgradeInfo.UpgradeCardID != -1;
            hasDegradeCard = PreviewCard_Src.CardInfo.UpgradeInfo.DegradeCardID != -1;
        }

        if (hasUpgradeCard)
        {
            if (!PreviewCardUpgrade)
            {
                PreviewCardUpgrade = CardBase.InstantiateCardByCardInfo(AllCards.GetCard(PreviewCard_Src.CardInfo.UpgradeInfo.UpgradeCardID), PreviewContent, CardBase.CardShowMode.CardUpgradePreview);
            }
            else
            {
                PreviewCardUpgrade.Initiate(AllCards.GetCard(PreviewCard_Src.CardInfo.UpgradeInfo.UpgradeCardID), CardBase.CardShowMode.CardUpgradePreview);
            }

            PreviewCardUpgrade.ChangeCardSelectLimit(UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().CurrentEditBuildButton.BuildInfo.M_BuildCards.CardSelectInfos[PreviewCardUpgrade.CardInfo.CardID].CardSelectUpperLimit, true);
            PreviewCardUpgrade.SetBlockCountValue(UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().GetSelectedCardCount(PreviewCardUpgrade.CardInfo.CardID), true);
            PreviewCardUpgrade.transform.localScale = Vector3.one * 15;
            if (PreviewCardUpgrade.CardInfo.BaseInfo.CardType == CardTypes.Mech)
            {
                PreviewCardUpgrade.transform.localPosition = new Vector3(mechCardPreviewDistance, 50, 0);
                UpgradeArrow.transform.position            = UpgradeArrowPivot_mechCards.position;
            }
            else
            {
                PreviewCardUpgrade.transform.localPosition = new Vector3(normalCardPreviewDistance, 50, 0);
                UpgradeArrow.transform.position            = UpgradeArrowPivot_normal.position;
            }

            UpgradeArrow.enabled = true;

            PreviewCardUpgrade.ShowCardBloom(true);
            PreviewCardUpgrade.ChangeCardBloomColor(ClientUtils.HTMLColorToColor("#FD5400"), 2);
            PreviewCardUpgrade.BeBrightColor();
            PreviewCardUpgrade.BoxCollider.enabled = false;
            PreviewCardUpgrade.ShowAllSlotBlooms(true);
            PreviewCardUpgrade.RefreshCardTextLanguage();
        }
        else
        {
            if (PreviewCardUpgrade)
            {
                PreviewCardUpgrade.ShowCardBloom(true);
                PreviewCardUpgrade.PoolRecycle();
                PreviewCardUpgrade = null;
            }

            UpgradeArrow.enabled = false;
        }

        if (hasDegradeCard)
        {
            if (!PreviewCardDegrade)
            {
                PreviewCardDegrade = CardBase.InstantiateCardByCardInfo(AllCards.GetCard(PreviewCard_Src.CardInfo.UpgradeInfo.DegradeCardID), PreviewContent, CardBase.CardShowMode.CardUpgradePreview);
            }
            else
            {
                PreviewCardDegrade.Initiate(AllCards.GetCard(PreviewCard_Src.CardInfo.UpgradeInfo.DegradeCardID), CardBase.CardShowMode.CardUpgradePreview);
            }

            PreviewCardDegrade.ChangeCardSelectLimit(UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().CurrentEditBuildButton.BuildInfo.M_BuildCards.CardSelectInfos[PreviewCardDegrade.CardInfo.CardID].CardSelectUpperLimit, true);
            PreviewCardDegrade.SetBlockCountValue(UIManager.Instance.GetBaseUIForm <SelectBuildPanel>().GetSelectedCardCount(PreviewCardDegrade.CardInfo.CardID), true);
            PreviewCardDegrade.transform.localScale = Vector3.one * 15;
            if (PreviewCardDegrade.CardInfo.BaseInfo.CardType == CardTypes.Mech)
            {
                PreviewCardDegrade.transform.localPosition = new Vector3(-mechCardPreviewDistance, 50, 0);
                DegradeArrow.transform.position            = DegradeArrowPivot_mechCards.position;
            }
            else
            {
                PreviewCardDegrade.transform.localPosition = new Vector3(-normalCardPreviewDistance, 50, 0);
                DegradeArrow.transform.position            = DegradeArrowPivot_normal.position;
            }

            PreviewCardDegrade.ShowCardBloom(true);
            PreviewCardDegrade.ChangeCardBloomColor(ClientUtils.HTMLColorToColor("#0CE9FF"), 2);
            PreviewCardDegrade.BeBrightColor();
            PreviewCardDegrade.BoxCollider.enabled = false;
            PreviewCardDegrade.ShowAllSlotBlooms(true);
            PreviewCardDegrade.RefreshCoinPosition();

            DegradeArrow.enabled = true;
        }
        else
        {
            if (PreviewCardDegrade)
            {
                PreviewCardDegrade.ShowCardBloom(true);
                PreviewCardDegrade.PoolRecycle();
                PreviewCardDegrade = null;
            }

            DegradeArrow.enabled = false;
        }

        if (refreshAffixPanel)
        {
            List <CardInfo_Base> cardInfos = new List <CardInfo_Base>();
            cardInfos.Add(PreviewCard.CardInfo);
            if (PreviewCardDegrade)
            {
                cardInfos.Add(PreviewCardDegrade.CardInfo);
            }
            if (PreviewCardUpgrade)
            {
                cardInfos.Add(PreviewCardUpgrade.CardInfo);
            }
            UIManager.Instance.ShowUIForms <AffixPanel>().ShowAffixTips(cardInfos, null);
        }

        //如果显示Tips占据屏幕空间的话,右移预览卡牌窗口
        if (UIManager.Instance.GetBaseUIForm <AffixPanel>().IsShow&& PreviewCardDegrade != null)
        {
            AllContainer.position = PreviewCardPanelRightPivot.position;
        }
        else
        {
            AllContainer.position = PreviewCardPanelCenterPivot.position;
        }
    }
Exemple #9
0
 public void PutOnBottom(CardBase c)
 {
     Cards.Add(c);
 }
Exemple #10
0
    public void PutCard(CardBase card) // 내가 낸 그리드를 가지고 있으면 좋을듯?ai.scoreData
    {
        SetTargetUserData();

        targetGrid = CardFinder.GetSameMonthCardsGrid(cardGrids, card);
        List <CardBase> cardList = CardManager.Instance.GetSameMonthCards(card);

        if (targetGrid == null) // 같은 월이 깔린게 없으면 그냥 비어있는데에 내려놓습니다.
        {
            targetGrid       = GetNullGrid();
            OnShakedCallback = () => FollowCord(card);

            if (cardList.Count >= 3)
            {
                targetUserData.utilizeCards.Remove(card);
                UIManager.Instance.shakeUI.SetData(card, targetGrid);
                rule.Shake();
            }
            else
            {
                targetUserData.utilizeCards.Remove(card);
                targetGrid.Set(card);
                FollowCord(card);
            }
        }
        else // 이 경우 자연스럽게 뒷 패도 깜.
        {
            int count = targetGrid.placedCards.Count;
            switch (count)
            {
            case 1:                      // 하나 있으면 그 친구한테 우선 가기. -> 뻑 가능성
                if (cardList.Count == 3) // 폭탄
                {
                    foreach (var item in cardList)
                    {
                        targetUserData.utilizeCards.Remove(item);
                    }
                    rule.Bomb(2);                                    // 연출같은거 여기서?

                    OnScored(targetGrid.placedCards[0], targetGrid); // 바닥 패 먹고
                    while (cardList.Count > 0)
                    {
                        OnScored(cardList[0]);
                        cardList.RemoveAt(0);
                    }
                    TakeOtherPlayerCard();
                }
                else
                {
                    targetUserData.utilizeCards.Remove(card);
                    card.MoveCardToGrid(targetGrid);
                }

                break;

            case 2:     // 두개 있으면 거기로 우선 가기 -> 따닥 가능성
                if (cardList.Count == 2)
                {
                    foreach (var item in cardList)
                    {
                        targetUserData.utilizeCards.Remove(item);
                    }
                    rule.Bomb(1);

                    while (targetGrid.placedCards.Count > 0)
                    {
                        OnScored(targetGrid.placedCards[0], targetGrid);
                    }

                    while (cardList.Count > 0)
                    {
                        OnScored(cardList[0]);
                        cardList.RemoveAt(0);
                    }
                    TakeOtherPlayerCard();
                }
                else
                {
                    targetUserData.utilizeCards.Remove(card);

                    card.MoveCardToGrid(targetGrid);

                    choiceCallBackQueue.Enqueue(() =>
                                                ChoiceCard(targetGrid.placedCards[0], targetGrid.placedCards[1], targetGrid));

                    putCardQueue.Enqueue(card);
                }
                break;

            case 3:     // 3개 있으면 다 가져오고
                targetUserData.utilizeCards.Remove(card);
                while (targetGrid.placedCards.Count > 0)
                {
                    OnScored(targetGrid.placedCards[0], targetGrid);
                }

                OnScored(card);
                rule.Shake();
                targetGrid.Reset();

                TakeOtherPlayerCard();
                break;
            }

            FollowCord(card);
        }
    }//함수의 끝.
Exemple #11
0
 public WarriorCards(IMovingCard moving, CardBase cardBase, ICombatCard combat)
 {
     (this.Moving, this.View, Combat) = (moving, cardBase, combat);
     Enemies = new List <WarriorCards>();
 }
Exemple #12
0
 public void Set(CardBase placeCard)
 {
     curPlacedCardMonth = placeCard.cardData.cardMonth; // 이제 이 그리드는 이 카드의 월에 해당하는 것만 받아올 수 있음!
     placeCard.MoveCardToGrid(this);
 }
Exemple #13
0
        /// <summary>
        /// 电脑思考行动,暂时制作简单处理。
        /// </summary>
        public override void ThinkAction()
        {
            //不是自己回合不进行操作
            if (duelScene.GetCurrentPlayer() != this)
            {
                return;
            }
            //受效果处理时进行根据效果类型做特殊操作
            if (currentEffectProcess != null)
            {
                if (currentEffectProcess is DiscardHandCardEffectProcess)
                {
                    (currentEffectProcess as DiscardHandCardEffectProcess).DiscardOneHandCard(null, FindWorstCardInHand());
                }
                if (currentEffectProcess is ChooseCardEffectProcess)
                {
                    ChooseCardEffectProcess chooseCardEffectProcess = currentEffectProcess as ChooseCardEffectProcess;

                    chooseCardEffectProcess.ChooseCardCallBack(chooseCardEffectProcess.GetLaunchEffectCard(), FindCanBeChooseCardFromList(chooseCardEffectProcess.GetCanChooseCardList()));
                }
                return;
            }
            if (duelScene.GetCurrentPhaseType() == PhaseType.Draw)
            {
                duelScene.EnterPhaseType(PhaseType.Prepare);
                return;
            }
            else if (duelScene.GetCurrentPhaseType() == PhaseType.Prepare)
            {
                duelScene.EnterPhaseType(PhaseType.Main);
                return;
            }
            //在主要流程中
            else if (duelScene.GetCurrentPhaseType() == PhaseType.Main)
            {
                //先召唤怪兽
                if (GameManager.GetSingleInstance().GetUserData().opponentCanCallMonster&& CanCallMonster())
                {
                    foreach (var item in handCards)
                    {
                        DuelCardScript duelCardScript = item.GetDuelCardScript();
                        if (duelCardScript.CanCall())
                        {
                            int sacrificeMonsterNumer = item.NeedSacrificeMonsterNumer();
                            if (sacrificeMonsterNumer > 0)
                            {
                                List <CardBase> sacrificeCards = new List <CardBase>();//祭品列表

                                for (int i = 0; i < DuelRuleManager.GetMonsterAreaNumber(); i++)
                                {
                                    if (monsterCardArea[i] != null)
                                    {
                                        sacrificeCards.Add(monsterCardArea[i]);
                                        sacrificeMonsterNumer -= monsterCardArea[i].GetCanBeSacrificedNumber();
                                        if (sacrificeMonsterNumer <= 0)
                                        {
                                            break;
                                        }
                                    }
                                }
                                CardGameState nextCardGameState = ThinkCallMonsterCardGameState(item);

                                CallMonsterEffectProcess callMonsterEffectProcess = new CallMonsterEffectProcess(item, nextCardGameState, sacrificeCards, this);
                                AddEffectProcess(callMonsterEffectProcess);
                            }
                            else
                            {
                                CardGameState nextCardGameState = ThinkCallMonsterCardGameState(item);

                                CallMonsterEffectProcess callMonsterEffectProcess = new CallMonsterEffectProcess(item, nextCardGameState, this);
                                AddEffectProcess(callMonsterEffectProcess);
                            }
                            return;
                        }
                    }
                }
                //然后使用魔法卡
                else if (GameManager.GetSingleInstance().GetUserData().opponentCanLaunchEffect&& CanLanuchMagicCard())
                {
                    foreach (var item in magicTrapCardArea)
                    {
                        if (item != null && item.CanLaunchEffect())
                        {
                            LaunchEffect(item);
                            return;
                        }
                    }
                    foreach (var item in GetHandCards())
                    {
                        if (item.CanLaunchEffect())
                        {
                            LaunchEffect(item);
                            return;
                        }
                    }
                }
                //最后进入战斗流程
                else if (GameManager.GetSingleInstance().GetUserData().opponentCanAttack&& CanEnterBattlePhaseType())
                {
                    Battle();
                    return;
                }
            }
            else if (duelScene.GetCurrentPhaseType() == PhaseType.Battle)
            {
                //先判断是否存在可以进行攻击的怪兽,并选出攻击力最大的怪兽先进行攻击
                int canAttackMonsterIndex = -1;
                int maxAttackValue        = 0;
                for (int i = 0; i < DuelRuleManager.GetMonsterAreaNumber(); i++)
                {
                    if (monsterCardArea[i] != null && monsterCardArea[i].CanAttack() && monsterCardArea[i].GetAttackValue() > maxAttackValue)
                    {
                        canAttackMonsterIndex = i;
                        maxAttackValue        = monsterCardArea[i].GetAttackValue();
                    }
                }

                //没有的话进入第二主要回合或回合结束
                if (canAttackMonsterIndex == -1)
                {
                    duelScene.EnterPhaseType(PhaseType.Second);
                    return;
                }
                else
                {
                    CardBase canAttackMonster = monsterCardArea[canAttackMonsterIndex];
                    //如果对方没有可以受攻击的怪兽时,进行直接攻击
                    if (!GetOpponentPlayer().HaveBeAttackedMonster() &&
                        GetCanDirectAttack() &&
                        GetOpponentPlayer().CanBeDirectAttacked() &&
                        canAttackMonster.CanDirectAttack())
                    {
                        AttackEffectProcess attackEffectProcess = new AttackEffectProcess(canAttackMonster, null, this);
                        AddEffectProcess(attackEffectProcess);
                        return;
                    }

                    //如果当前怪兽攻击力,比对方场上表侧表示的怪兽最小的攻击力或守备力大的话进行攻击
                    //如果对方存在里侧表示的怪兽时进行攻击
                    //以上皆不满足的话退出战斗流程
                    foreach (var item in GetOpponentPlayer().GetMonsterCardArea())
                    {
                        bool attackThisMonster = false;
                        if (item != null && item.CanBeAttacked())
                        {
                            if (item.GetCardGameState() == CardGameState.FrontAttack)
                            {
                                if (maxAttackValue >= item.GetAttackValue())
                                {
                                    attackThisMonster = true;
                                }
                            }
                            else if (item.GetCardGameState() == CardGameState.FrontDefense)
                            {
                                if (maxAttackValue >= item.GetDefenseValue())
                                {
                                    attackThisMonster = true;
                                }
                            }
                            else if (item.GetCardGameState() == CardGameState.Back)
                            {
                                attackThisMonster = true;
                            }
                        }

                        if (attackThisMonster)
                        {
                            AttackEffectProcess attackEffectProcess = new AttackEffectProcess(canAttackMonster, item, this);
                            AddEffectProcess(attackEffectProcess);
                            return;
                        }
                    }
                    return;
                }
            }
            else if (duelScene.GetCurrentPhaseType() == PhaseType.End)
            {
            }
            if (duelScene.GetCurrentPhaseType() == PhaseType.Main ||
                duelScene.GetCurrentPhaseType() == PhaseType.Battle ||
                duelScene.GetCurrentPhaseType() == PhaseType.Second)
            {
                EndTurn();
            }
        }
Exemple #14
0
 public void SetCard(CardBase card, bool ownedCard = true)
 {
     this.card = card;
     GetComponent <Image>().sprite = card.GetImage();
     SetCardOwned(ownedCard);
 }
Exemple #15
0
    public IEnumerator TriggerCast()
    {
        yield return(new WaitForSeconds(1));

        AITargeting targeting = new AITargeting();

        if (player.Hand.Count > 0)
        {
            for (int i = 0; i < player.Hand.Count; i++)
            {
                CardBase cardInfo = player.Hand[i].GetComponent <CardBase>();
                if (gameActions.CostIsMet(cardInfo.owner, cardInfo.gameObject))
                {
                    if (cardInfo.cardType == CardBase.CardType.Spell)
                    {
                        if (cardInfo.needsTarget)
                        {
                            for (int j = 0; j < cardInfo.numberOfTargets; j++)
                            {
                                if (targeting.FindTarget(cardInfo))
                                {
                                    gameActions.StartCoroutine(gameActions.Cast(player, cardInfo.gameObject));
                                    yield return(new WaitForSeconds(.5f));
                                }
                                yield return(new WaitForSeconds(2));
                            }
                        }
                        else
                        {
                            gameActions.StartCoroutine(gameActions.Cast(player, cardInfo.gameObject));
                        }
                    }
                    else
                    {
                        //summon creature
                        if (cardInfo.effectType.Contains(Effects.EffectType.OnSummon))
                        {
                            if (cardInfo.needsTarget)
                            {
                                for (int j = 0; j < cardInfo.numberOfTargets; j++)
                                {
                                    if (targeting.FindTarget(cardInfo))
                                    {
                                        gameActions.StartCoroutine(gameActions.Cast(player, cardInfo.gameObject));
                                    }
                                    else if (!cardInfo.keyWord.Contains(CardBase.KeyWordEffects.MustResolveEffect))
                                    {
                                        gameActions.StartCoroutine(gameActions.Cast(player, cardInfo.gameObject));
                                    }
                                }
                            }
                            else
                            {
                                gameActions.StartCoroutine(gameActions.Cast(player, cardInfo.gameObject));
                            }
                        }
                        else
                        {
                            gameActions.StartCoroutine(gameActions.Cast(player, cardInfo.gameObject));
                        }
                    }
                    yield return(new WaitForSeconds(1f));
                }
                while (duelManager.duelState != DuelManager.DuelState.None)
                {
                    yield return(new WaitForEndOfFrame());
                }
            }
        }
        duelManager.turnPhase = DuelManager.TurnPhase.Battle;
        //the AI will finish on its own
        yield return(null);
    }
 public override void ActivateEffects(CardEffectActivationContextBase context, CardBase thisCard)
 {
     if (context is TContext t)
     {
         ActivateEffects(t, thisCard as TCard);
     }
     else
     {
         throw new Exception($"DerivedCardEffect expected a context of type {typeof(TContext).Name} but received type {context.GetType().Name}");
     }
 }
 /// <summary>
 /// 現在選択中カードの設定
 /// </summary>
 /// <param name="card"></param>
 public void SetChosenCard(CardBase card)
 {
     this.currentChosenCard = card;
 }
Exemple #18
0
 public void AddCardToDeck(CardBase card)
 {
     deck.Add(card);
     card.behavior.gameObject.transform.position = new UnityEngine.Vector3(6.5f, 0, -3);
 }
	void resumeGamefromNoMatch(){
		firstCard.isSelected = secondCard.isSelected = false;
		gameState = GameState.Input;
		firstCard = null;
		secondCard = null;
	}
Exemple #20
0
 public void Setup(CardBase pCardBase)
 {
     Base = pCardBase;
 }
Exemple #21
0
    }//함수의 끝.

    public void FollowCord(CardBase putCard)
    {
        CardBase followCard = followUpCardQueue.Dequeue();

        followCard.gameObject.SetActive(true);

        CardGrid followCardTargetGrid = CardFinder.GetSameMonthCardsGrid(cardGrids, followCard);

        if (followCardTargetGrid == null) // 같은 월이 깔린게 없으면 그냥 비어있는데에 내려놓습니다.
        {
            followCardTargetGrid = GetNullGrid();
            followCardTargetGrid.Set(followCard);
        }
        else
        {
            int count = followCardTargetGrid.placedCards.Count;
            switch (count)
            {
            case 1:     // 뒷패를 깠는데 하나만 있다는 거면, 무조건 가져오면 됨.
                if (putCard.cardData.cardMonth == followCard.cardData.cardMonth)
                {
                    rule.Kiss();
                }

                OnScored(followCard);
                OnScored(followCardTargetGrid.placedCards[0], followCardTargetGrid);
                followCardTargetGrid.Reset();
                break;

            case 2:     // 두 개가 있다는 거면 둘 중 하나를 선택하게 하면 됨.
                followCard.MoveCardToGrid(followCardTargetGrid);

                if (putCard.cardData.cardMonth == followCard.cardData.cardMonth)     //뻑임
                {
                    rule.Paulk();
                }
                else
                {
                    choiceCallBackQueue.Enqueue(() =>
                                                ChoiceCard(followCardTargetGrid.placedCards[0], followCardTargetGrid.placedCards[1], followCardTargetGrid));
                    putCardQueue.Enqueue(followCard);
                }
                break;

            case 3:     // 3개 있으면 다 가져오고
                if (putCard.cardData.cardMonth == followCard.cardData.cardMonth)
                {
                    //따닥
                }


                while (followCardTargetGrid.placedCards.Count > 0)
                {
                    OnScored(followCardTargetGrid.placedCards[0], followCardTargetGrid);
                }

                OnScored(followCard);     // 내가 낸 것도 가져오기.
                choiceCallBackQueue.Clear();
                followCardTargetGrid.Reset();
                TakeOtherPlayerCard();
                break;
            }
        }
        CardManager.Instance.TakePairCard(targetGrid);
        TryExecuteChoiceCallback();


        targetGrid = null;
    }
Exemple #22
0
 public CombatRules(CardBase cardBase)
 {
     _cardBase = cardBase;
     _rules    = new Characteristic <List <CombatRule> >(_cardBase.Value.CombatRules);
 }
Exemple #23
0
 private void Start()
 {
     cardBase = gameObject.GetComponent <CardBase>();
 }
Exemple #24
0
 /// <summary>
 /// 选择条件
 /// </summary>
 bool ChooseCardJudgeAction(CardBase launchCardBase, CardBase chooseCard)
 {
     return(chooseCard.CanLaunchEffect());
 }
Exemple #25
0
    IEnumerator Co_UseCard(int handCardInstanceId, CardInfo_Base cardInfo)
    {
        CardBase cardBase = GetCardByCardInstanceId(handCardInstanceId);

        if (ClientPlayer == RoundManager.Instance.EnemyClientPlayer)
        {
            if (cardBase)
            {
                cardBase.OnPlayOut();
                cards.Remove(cardBase);

                cardBase.transform.DOPause();

                if (currentShowCard)
                {
                    lastShowCard = currentShowCard;
                    lastShowCard.transform.DOPause();

                    lastShowCard.transform.DOMove(USE_CARD_SHOW_POSITION, USE_CARD_SHOW_FLY_DURATION).SetEase(Ease.Linear);
                    lastShowCard.transform.DORotate(new Vector3(0, 180, 0), USE_CARD_SHOW_FLY_DURATION).SetEase(Ease.Linear);
                    lastShowCard.transform.DOScale(Vector3.one * USE_CARD_SHOW_SIZE, USE_CARD_SHOW_FLY_DURATION).SetEase(Ease.Linear);
                }

                if (cardInfo.CardID == 4)
                {
                    int a = 0;
                }
                currentShowCard = CardBase.InstantiateCardByCardInfo(cardInfo, transform, CardBase.CardShowMode.ShowCard, ClientPlayer);
                currentShowCard.transform.position   = cardBase.transform.position;
                currentShowCard.transform.rotation   = cardBase.transform.rotation;
                currentShowCard.transform.localScale = cardBase.transform.localScale;

                cardBase.PoolRecycle();

                currentShowCard.DragComponent.enabled = false;
                currentShowCard.Usable = false;
                currentShowCard.ChangeCardBloomColor(ClientUtils.HTMLColorToColor("#FFFFFF"), 1);
                currentShowCard.ShowCardBloom(true);
                currentShowCard.BeBrightColor();
                currentShowCard.CardOrder = 200;

                currentShowCard.transform.DOMove(USE_CARD_SHOW_POSITION_OVERLAY, USE_CARD_SHOW_FLY_DURATION).SetEase(Ease.Linear);
                currentShowCard.transform.DORotate(new Vector3(-90, 180, 0), USE_CARD_SHOW_FLY_DURATION).SetEase(Ease.Linear);
                currentShowCard.transform.DOScale(Vector3.one * USE_CARD_SHOW_SIZE, USE_CARD_SHOW_FLY_DURATION).SetEase(Ease.Linear);

                AudioManager.Instance.SoundPlay("sfx/OnShowUseCard", 0.5f);

                RefreshCardsPlace();
                yield return(new WaitForSeconds(USE_CARD_SHOW_FLY_DURATION));

                if (lastShowCard)
                {
                    lastShowCard.PoolRecycle();
                    lastShowCard = null;
                }

                yield return(new WaitForSeconds(USE_CARD_SHOW_DURATION * BattleEffectsManager.AnimationSpeed - USE_CARD_SHOW_FLY_DURATION));

                currentShowCard.PoolRecycle();
                currentShowCard = null;
            }
        }

        yield return(null);

        BattleEffectsManager.Instance.Effect_Main.EffectEnd();
    }
Exemple #26
0
        /// <summary>
        /// 选择后回调
        /// </summary>
        void ChooseCardCallback(CardBase launchCardBase, CardBase chooseCard)
        {
            LaunchEffectEffectProcess launchEffectEffectProcess = new LaunchEffectEffectProcess(chooseCard, chooseCard.GetOwner());

            chooseCard.GetOwner().AddEffectProcess(launchEffectEffectProcess);
        }
Exemple #27
0
 public ConnectedStreets(CardBase card, int streetIndex) : base(card)
 {
 }
Exemple #28
0
 public static CardGrid GetSameMonthCardsGrid(List <CardGrid> grids, CardBase putCard)
 {
     return(grids.Find((x) => x.curPlacedCardMonth == putCard.cardData.cardMonth));
 }
Exemple #29
0
    void Update_Cards()
    {
        if (!IsInit)
        {
            return;
        }
        CardPreviewPanel previewPanel     = UIManager.Instance.GetBaseUIForm <CardPreviewPanel>();
        ConfirmPanel     confirmPanel     = UIManager.Instance.GetBaseUIForm <ConfirmPanel>();
        BuildRenamePanel buildRenamePanel = UIManager.Instance.GetBaseUIForm <BuildRenamePanel>();

        if (previewPanel != null && previewPanel.gameObject.activeInHierarchy)
        {
            return;
        }
        if (confirmPanel != null && confirmPanel.gameObject.activeInHierarchy)
        {
            return;
        }
        if (buildRenamePanel != null && buildRenamePanel.gameObject.activeInHierarchy)
        {
            return;
        }

        if (Input.GetMouseButtonDown(0))
        {
            Ray        ray = UIManager.Instance.UICamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit raycast;
            Physics.Raycast(ray, out raycast, 500f, GameManager.Instance.Layer_Cards);
            if (raycast.collider)
            {
                CardBase card = raycast.collider.gameObject.GetComponent <CardBase>();
                if (card)
                {
                    mouseDownPosition = Input.mousePosition;
                    mouseLeftDownCard = card;
                }
            }
            else
            {
                mouseRightDownCard = null;
                mouseLeftDownCard  = null;
            }
        }

        if (Input.GetMouseButtonDown(1))
        {
            Ray        ray = UIManager.Instance.UICamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit raycast;
            Physics.Raycast(ray, out raycast, 500f, GameManager.Instance.Layer_Cards);
            if (raycast.collider != null)
            {
                CardBase card = raycast.collider.gameObject.GetComponent <CardBase>();
                if (card)
                {
                    mouseDownPosition  = Input.mousePosition;
                    mouseRightDownCard = card;
                }
            }
            else
            {
                mouseRightDownCard = null;
                mouseLeftDownCard  = null;
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            Ray        ray = UIManager.Instance.UICamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit raycast;
            Physics.Raycast(ray, out raycast, 500f, GameManager.Instance.Layer_Cards);
            if (raycast.collider != null)
            {
                CardBase card = raycast.collider.gameObject.GetComponent <CardBase>();
                if (card)
                {
                    if ((Input.mousePosition - mouseDownPosition).magnitude < 50)
                    {
                        if (mouseLeftDownCard == card)
                        {
                            SelectCard(card, SelectCardMethods.CardClick);
                        }
                    }
                }
            }

            mouseLeftDownCard  = null;
            mouseRightDownCard = null;
        }

        if (Input.GetMouseButtonUp(1))
        {
            Ray        ray = UIManager.Instance.UICamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit raycast;
            Physics.Raycast(ray, out raycast, 500f, GameManager.Instance.Layer_Cards);
            if (raycast.collider != null)
            {
                CardBase card = raycast.collider.gameObject.GetComponent <CardBase>();
                if (Input.GetMouseButtonUp(1))
                {
                    if (card && mouseRightDownCard == card)
                    {
                        if (CurrentEditBuildButton == null)
                        {
                            OnCreateNewBuildButtonClick();
                            NoticeManager.Instance.ShowInfoPanelCenter(LanguageManager.Instance.GetText("Notice_SelectBuildManagerSelect_DeckCreatedPleaseSelectCards"), 0f, 1f);
                        }

                        UIManager.Instance.ShowUIForms <CardPreviewPanel>().ShowPreviewCardPanel(card, IsReadOnly);
                    }
                }
            }

            mouseLeftDownCard  = null;
            mouseRightDownCard = null;
        }
    }
 private void ShowCard(CardBase cardBase)
 {
     cardBase.transform.SetParent(_cardDisplayArea, false);
     CardsShown.Add(cardBase);
 }
Exemple #31
0
 public static void EXPERT(Dictionary <string, CardBase> Dict)
 {
     //Blizzard
     foo = new CardBase();
     Dict.Add("CS2_028", foo);
     //Ethereal Arcanist
     foo          = new CardBase();
     foo.PlayFunc = Play.Minion;
     Dict.Add("EX1_274", foo);
     //Cone of Cold
     foo            = new CardBase();
     foo.TargetFunc = Target.SpellTargetMinionAll;
     foo.PlayFunc   = Play.SpellTargetMinionAll;
     Dict.Add("EX1_275", foo);
     //Pyroblast
     foo            = new CardBase();
     foo.TargetFunc = Target.SpellTargetAll;
     foo.PlayFunc   = Play.SpellTargetAll;
     Dict.Add("EX1_279", foo);
     //Counterspell
     foo          = new CardBase();
     foo.PlayFunc = () => Play.SpellSecret("EX1_287");
     Dict.Add("EX1_287", foo);
     //Ice Barrier
     foo          = new CardBase();
     foo.PlayFunc = () => Play.SpellSecret("EX1_289");
     Dict.Add("EX1_289", foo);
     //Mirror Entity
     foo          = new CardBase();
     foo.PlayFunc = () => Play.SpellSecret("EX1_294");
     Dict.Add("EX1_294", foo);
     //Ice Block
     foo          = new CardBase();
     foo.PlayFunc = () => Play.SpellSecret("EX1_295");
     Dict.Add("EX1_295", foo);
     //Archmage Antonidas
     foo          = new CardBase();
     foo.PlayFunc = Play.Minion;
     Dict.Add("EX1_559", foo);
     //Vaporize
     foo          = new CardBase();
     foo.PlayFunc = () => Play.SpellSecret("EX1_594");
     Dict.Add("EX1_594", foo);
     //Sorcerer's Apprentice
     foo          = new CardBase();
     foo.PlayFunc = Play.Minion;
     Dict.Add("EX1_608", foo);
     //Kirin Tor Mage
     foo          = new CardBase();
     foo.PlayFunc = Play.Minion;
     Dict.Add("EX1_612", foo);
     //Mana Wrym
     foo          = new CardBase();
     foo.PlayFunc = Play.Minion;
     Dict.Add("NEW1_012", foo);
     //Spellbender
     foo          = new CardBase();
     foo.PlayFunc = () => Play.SpellSecret("tt_010");
     Dict.Add("tt_010", foo);
     //Spellbender (Minion)
     foo          = new CardBase();
     foo.PlayFunc = Play.Minion;
     Dict.Add("tt_010a", foo);
 }
Exemple #32
0
 public override void ActivateEffects(CardEffectActivationContextBase context, CardBase thisCard)
 {
     context.wasActionCancelled = true;
 }
 /// <summary>
 /// 显示卡牌列表面板
 /// </summary>
 public void ShowCardListPanel(List <CardBase> cardList, string title, bool canHideByPlayerForCardListPanel, CardBase launchEffectCard, Action <CardBase, CardBase> clickCallback)
 {
     this.canHideByPlayerForCardListPanel = canHideByPlayerForCardListPanel;
     cardListPanel.SetActive(true);
     cardListPanel.transform.GetChild(1).GetComponent <Text>().text = title;
     foreach (var item in cardList)
     {
         item.GetDuelCardScript().SetParent(cardListContentTransform);
         item.GetDuelCardScript().SetClickCallback(launchEffectCard, clickCallback);
     }
 }
Exemple #34
0
 public CardWrapper(CardBase card, int index = 0)
 {
     Card  = card;
     Index = index;
 }
Exemple #35
0
		private static void Initialize()
		{
			using (var client = new ImapClient())
			{
				client.Connect("imap.gmail.com", 993, true);

				client.AuthenticationMechanisms.Remove("XOAUTH");

				client.Authenticate("breshch", "Mp~7200~aA");

				var query = SearchQuery.DeliveredAfter(DateTime.Now.AddDays(-1)).And(SearchQuery.All);

				var cardsFolder = client.GetFolder("Cards");
				cardsFolder.Open(FolderAccess.ReadOnly);


				foreach (var uid in cardsFolder.Search(query))
				{
					var message = cardsFolder.GetMessage(uid);
					var textPart = message.BodyParts.First() as TextPart;

					var date = message.Date.LocalDateTime;
					var body = textPart.GetText(Encoding.UTF8);

					using (var bc = new BusinessContext())
					{
						if (!bc.IsNewMessage(date, body))
						{
							continue;
						}
					}

					var subject = message.Subject;

					string bankName = subject.Substring(subject.LastIndexOf(" ")).Trim();
					
					CardBase card = null;

					switch (bankName)
					{
						case "VTB24":
							card = new CardVTB24(body);
							break;
						case "PSB":
							card = new CardPSB(body);
							break;
					}

					double? sum = card.GetSum();

					if (sum != null)
					{
						using (var bc = new BusinessContext())
						{
							bc.AddInfoSafeCard(date, sum.Value, Currency.RUR, body, bankName);
						}
					}

					using (var sw = new StreamWriter("mails.txt", true))
					{
						sw.WriteLine(DateTime.Now + "\t" + date + "\t" + sum + "\t" + body);
					}
				}

				client.Disconnect(true);
			}
		}
	public virtual bool checkPair(CardBase otherCard){
		
		return false;
	}
Exemple #37
0
        private CardBase Convert(Card cardDto)
        {
            CardBase card = null;

            if (cardDto != null && cardDto.Type != null && cardDto.Class != null && cardDto.DbfId != null &&
                !string.IsNullOrWhiteSpace(cardDto.Name) &&
                classMapping.ContainsKey(cardDto.Class.Value) &&
                rarityMapping.ContainsKey(cardDto.Rarity.Value))
            {
                switch (cardDto.Type)
                {
                case CardType.SPELL:
                    card = new CardSpell();
                    break;

                case CardType.MINION:
                    if (cardDto.Attack != null && cardDto.Health != null)
                    {
                        card = new CardMinion()
                        {
                            Attack = cardDto.Attack.Value,
                            Health = cardDto.Health.Value
                        };
                    }

                    break;

                case CardType.WEAPON:
                    if (cardDto.Attack != null && cardDto.Durability != null)
                    {
                        card = new CardWeapon()
                        {
                            Attack     = cardDto.Attack.Value,
                            Durability = cardDto.Durability.Value
                        };
                    }

                    break;

                case CardType.HERO:
                    if (cardDto.Armor != null)
                    {
                        card = new CardHero()
                        {
                            Armor = cardDto.Armor.Value
                        };
                    }

                    break;
                }

                if (card != null)
                {
                    card.Class  = classMapping[cardDto.Class.Value];
                    card.Cost   = cardDto.Cost;
                    card.Name   = cardDto.Name;
                    card.DbfId  = cardDto.DbfId.Value;
                    card.Rarity = rarityMapping[cardDto.Rarity.Value];
                }
            }

            return(card);
        }
 public ThrowDiceEffectProcess(CardBase launchEffectCard, ActionIndex throwDiceCallBack, Player ownerPlayer) : base(ownerPlayer, "掷骰子")
 {
     this.launchEffectCard  = launchEffectCard;
     this.throwDiceCallBack = throwDiceCallBack;
 }