Exemplo n.º 1
0
    public override void OnTurnEnd()
    {
        base.OnTurnEnd();

        TurnEndBtn.SetActive(false);

        Enable_DeckCard_OnClickEvent(false);

        RemoveAllCard_InDeckUI();

        //'사용한 카드'로 옮겨짐
        List <int> deckCardList = CardPool[PFCardPool.DeckCard];

        for (int i = deckCardList.Count - 1; i >= 0; --i)
        {
            PFTable.ECardPoolType cardType = PFCardTable.GetCardType(deckCardList[i]);

            if (cardType == PFTable.ECardPoolType.ToUsedPool_AfterAction)
            {
                AddComponent_ToCardPool(PFCardPool.UsedCard, deckCardList[i]);
            }
            else if (cardType == PFTable.ECardPoolType.ToDestroyedPool_AfterAction)
            {
                AddComponent_ToCardPool(PFCardPool.DestroyedCard, deckCardList[i]);
            }

            deckCardList.RemoveAt(i);
        }
    }
Exemplo n.º 2
0
    private APFStatusIconUI AddStatusIcon(PFTable.Card.StatusIcon statusIconType, int statusKeepTurnCount)
    {
        APFStatusIconUI newStatusIcon = PFUtil.Instantiate <APFStatusIconUI>(PFPrefabPath.StatusIcon, StatusIcon_UIGrid.gameObject, Vector3.zero);

        StatusIcon_UIGrid.repositionNow = true; //grid에 새 요소를 추가한후, 위치를 재정비한다.

        string statusIconPath = PFCardTable.GetStatusIconPath(statusIconType);

        UnityEngine.Sprite sprite = Resources.Load <UnityEngine.Sprite>(statusIconPath);

        newStatusIcon.StatusIconType = statusIconType;
        newStatusIcon.SetStatusKeepTurnCount(statusKeepTurnCount);
        newStatusIcon.StatusIconImage.sprite2D = sprite;

        StatusIconList.Add(newStatusIcon);

        return(newStatusIcon);
    }
Exemplo n.º 3
0
    private void SelectDeckCard(APFCardUI selectCard)
    {
        DeselectDeckCard(SelectedCard_OnDeck);

        if (selectCard != null)
        {
            SelectedCard_OnDeck = selectCard;

            SelectedCard_OnDeck.gameObject.transform.localScale = new Vector3(PFConst.Scale_ClickedCardOnDeck, PFConst.Scale_ClickedCardOnDeck, 1.0f);

            PFTable.ECardApplyTarget applyTarget = PFCardTable.GetApplyTarget(SelectedCard_OnDeck.CardTableId);

            if (applyTarget == PFTable.ECardApplyTarget.EnemyAll)
            {
                List <APFCharacter> aliveMonsterList = APFGameMode.GetInstance().GetAliveCharList(PFTable.CharacterType.Monster);
                PFCharacterStuff.Active_CharSelectIconUI(aliveMonsterList, true);
            }
        }
    }
Exemplo n.º 4
0
    private List <APFCharacterController> GetTargetList(PFTable.Card srcCard, APFCharacterController specifiedTarget)
    {
        List <APFCharacterController> resultList = new List <APFCharacterController>();

        PFTable.ECardApplyTarget applyTarget = PFCardTable.GetApplyTarget(srcCard.uid);
        if (applyTarget == PFTable.ECardApplyTarget.EnemyAll)
        {
            List <APFCharacter> aliveMonsterList = APFGameMode.GetInstance().GetAliveCharList(PFTable.CharacterType.Monster);

            for (int i = 0; i < aliveMonsterList.Count; ++i)
            {
                APFCharacterController monCtrl = aliveMonsterList[i].GetCharacterController();
                resultList.Add(monCtrl);
            }
        }
        else
        {
            resultList.Add(specifiedTarget);
        }

        return(resultList);
    }
Exemplo n.º 5
0
    private void OnUseCard(APFCharacterController srcCharCtrl, PFTable.Card srcCard, APFCharacterController target_clickedChar)
    {
        if (srcCharCtrl != null && srcCard != null)
        {
            EGameResult gameResult = EGameResult.InProgress;

            PFTable.ECardActiveType cardActiveType = PFCardTable.GetCardActiveType(srcCard.uid);
            //if (cardActiveType == PFTable.ECardActiveType.Instant)
            {
                List <APFCharacterController> targetList = GetTargetList(srcCard, target_clickedChar);

                int damage = PFSkill.GetDamage(srcCharCtrl, srcCard.uid);

                for (int i = 0; i < targetList.Count; ++i)
                {
                    targetList[i].OnBeAttacked(damage);

                    srcCharCtrl.OnUseCard_AfterApplyDmg(srcCard, targetList[i]);

                    if (targetList[i].GetHP() <= PFConst.HP_Min)
                    {
                        gameResult = OnCharacterDead(targetList[i]);
                    }
                }
            }



            int[] cardEffectIdList = srcCard.CardEffectIdList;
            if (cardEffectIdList != null)
            {
                for (int i = 0; i < cardEffectIdList.Length; ++i)
                {
                    //PFTable.CardEffect.EType cardEffectType = PFCardEffectTable.GetCardEffectType(cardEffectIdList[i]);
                    //if (cardEffectType == PFTable.CardEffect.EType.DecreaseHP)
                    //{

                    //}

                    int effectId = cardEffectIdList[i];



                    PFTable.Damage effect_Damage = PFTable.GetEffect_Damage(effectId);
                    if (effect_Damage != null)
                    {
                        if (effect_Damage.ActuationTiming == PFTable.EActuationTiming.Instant)
                        {
                            DoDamage(srcCharCtrl, effectId, target_clickedChar);
                            //StartCoroutine(DoDamage(srcCharCtrl, effectId, target_clickedChar));

                            /*
                             * if (targetList[j].GetHP() <= PFConst.HP_Min)
                             * {
                             *  gameResult = OnCharacterDead(targetList[j]);
                             * }
                             */
                        }
                        else
                        {
                            srcCharCtrl.PendingEffect_DamageList.Add(effectId);
                        }
                    }

                    PFTable.AddAtkRate addAtkRate = PFTable.GetAddAtkRate(effectId);
                    if (addAtkRate != null)
                    {
                        //addAtkRate.Amount
                        //addAtkRate.TargetType
                        if (addAtkRate.ActuationTiming == PFTable.EActuationTiming.Instant)
                        {
                        }
                    }



                    PFTable.CardEffect cardEffect = PFTable.GetCardEffect(effectId);
                    if (cardEffect != null)
                    {
                        if (cardEffect.CardEffectType == PFTable.CardEffect.EType.DecreaseHP)
                        {
                            //cardEffect.Amount
                        }
                    }
                }
            }



            if (gameResult == EGameResult.InProgress)
            {
                PFTable.CharacterType srcCharType = PFCharacterTable.GetCharacterType(srcCharCtrl.CharacterTableId);
                if (srcCharType == PFTable.CharacterType.Monster)
                {
                    int remainCost = srcCharCtrl.GetCost();
                    if (remainCost <= 0)
                    {
                        TurnEnd(srcCharCtrl);
                    }
                }
            }
            else if (gameResult == EGameResult.Victory)
            {
                GameOverUI.Title_UILabel.text = PFConst.StrGameResultVictory;
                GameOverUI.gameObject.SetActive(true);
            }
            else if (gameResult == EGameResult.Defeat)
            {
                GameOverUI.Title_UILabel.text = PFConst.StrGameResultDefeat;
                GameOverUI.gameObject.SetActive(true);
            }
        }
    }