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; } }
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); }
private void Awake() { _cardBase = (CardBase)target; }
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; } }
public void PutOnBottom(CardBase c) { Cards.Add(c); }
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); } }//함수의 끝.
public WarriorCards(IMovingCard moving, CardBase cardBase, ICombatCard combat) { (this.Moving, this.View, Combat) = (moving, cardBase, combat); Enemies = new List <WarriorCards>(); }
public void Set(CardBase placeCard) { curPlacedCardMonth = placeCard.cardData.cardMonth; // 이제 이 그리드는 이 카드의 월에 해당하는 것만 받아올 수 있음! placeCard.MoveCardToGrid(this); }
/// <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(); } }
public void SetCard(CardBase card, bool ownedCard = true) { this.card = card; GetComponent <Image>().sprite = card.GetImage(); SetCardOwned(ownedCard); }
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; }
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; }
public void Setup(CardBase pCardBase) { Base = pCardBase; }
}//함수의 끝. 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; }
public CombatRules(CardBase cardBase) { _cardBase = cardBase; _rules = new Characteristic <List <CombatRule> >(_cardBase.Value.CombatRules); }
private void Start() { cardBase = gameObject.GetComponent <CardBase>(); }
/// <summary> /// 选择条件 /// </summary> bool ChooseCardJudgeAction(CardBase launchCardBase, CardBase chooseCard) { return(chooseCard.CanLaunchEffect()); }
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(); }
/// <summary> /// 选择后回调 /// </summary> void ChooseCardCallback(CardBase launchCardBase, CardBase chooseCard) { LaunchEffectEffectProcess launchEffectEffectProcess = new LaunchEffectEffectProcess(chooseCard, chooseCard.GetOwner()); chooseCard.GetOwner().AddEffectProcess(launchEffectEffectProcess); }
public ConnectedStreets(CardBase card, int streetIndex) : base(card) { }
public static CardGrid GetSameMonthCardsGrid(List <CardGrid> grids, CardBase putCard) { return(grids.Find((x) => x.curPlacedCardMonth == putCard.cardData.cardMonth)); }
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); }
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); }
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); } }
public CardWrapper(CardBase card, int index = 0) { Card = card; Index = index; }
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; }
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; }