Пример #1
0
    public static void DoDamage(APFCharacterController attacker, int damage_EffectId, APFCharacterController target_clickedChar)
    //public static IEnumerator DoDamage(APFCharacterController attacker, int damage_EffectId, APFCharacterController target_clickedChar)
    {
        PFTable.Damage addHP_Effect = PFTable.GetEffect_Damage(damage_EffectId);

        APFGameMode pfGameMode = APFGameMode.GetInstance();

        if (attacker == null || addHP_Effect == null || pfGameMode == null)
        {
            //yield return null;
        }

        int attackerDamage = attacker.GetDamage(addHP_Effect.Amount);

        List <APFCharacterController> targetList = pfGameMode.GetTargetList(attacker, addHP_Effect.TargetType, target_clickedChar);

        for (int times = 0; times < addHP_Effect.Times; ++times)
        {
            for (int i = 0; i < targetList.Count; ++i)
            {
                targetList[i].OnBeAttacked(attackerDamage);

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

            if (addHP_Effect.Times >= 2)
            {
                //yield return new WaitForSeconds(Damage_Times_Interval);
            }
        }
    }
Пример #2
0
    public override void Init(int charTableId, Vector3 vPos)
    {
        base.Init(charTableId, vPos);

        CardListUI_Remain = PFUtil.Instantiate <APFCardListUI>(PFPrefabPath.CardListUI, this.gameObject, Vector3.zero);
        CardListUI_Remain.gameObject.SetActive(false);
        CardListUI_Remain.Title_UILabel.text = PFConst.StrRemainCard;

        CardListUI_Used = PFUtil.Instantiate <APFCardListUI>(PFPrefabPath.CardListUI, this.gameObject, Vector3.zero);
        CardListUI_Used.gameObject.SetActive(false);
        CardListUI_Used.Title_UILabel.text = PFConst.StrUsedCard;

        CardListUI_Destroyed = PFUtil.Instantiate <APFCardListUI>(PFPrefabPath.CardListUI, this.gameObject, Vector3.zero);
        CardListUI_Destroyed.gameObject.SetActive(false);
        CardListUI_Destroyed.Title_UILabel.text = PFConst.StrDestroyedCard;

        PFPlayerCharacter = PFCharacter as APFPlayerCharacter;

        List <int> totalCardList = PFPlayerStuff.GetInitTotalCardList();

        CardPool[PFCardPool.RemainCard] = totalCardList;

        APFGameMode gameMode = APFGameMode.GetInstance();

        gameMode.OnClick_Character_Dele += OnClick_Character;
    }
    private void DoDamage_PendingList(PFTable.EActuationTiming actuationTiming)
    {
        for (int i = PendingEffect_DamageList.Count - 1; i >= 0; --i)
        {
            int effectId_damage = PendingEffect_DamageList[i];

            PFTable.Damage effect_Damage = PFTable.GetEffect_Damage(effectId_damage);

            if (effect_Damage != null &&
                effect_Damage.ActuationTiming == actuationTiming)
            {
                if (effect_Damage.TargetType == PFTable.ETargetCharacter.EnemyAll ||
                    effect_Damage.TargetType == PFTable.ETargetCharacter.Self)
                {
                    APFGameMode.DoDamage(this, effectId_damage, null);
                    PendingEffect_DamageList.RemoveAt(i);
                }
                else
                {
                    StringBuilder sbLog = new StringBuilder("");
                    sbLog.AppendFormat("효과Damage id {0} => {1}발동인데 TargetType이 EnemySingle임", effectId_damage, actuationTiming.ToString());
                    Debug.LogError(sbLog.ToString());
                }
            }
        }
    }
Пример #4
0
    IEnumerator TurnBegin()
    {
        yield return(new WaitForSeconds(PFConst.MonsterTurnTime));

        APFGameMode         gameMode      = APFGameMode.GetInstance();
        APFPlayerController plrController = gameMode.GetPlayer();

        UseCard(CardToUseForMyTurn, plrController.GetCharacter());
    }
Пример #5
0
    private void DeselectDeckCard(APFCardUI deselectCard)
    {
        List <APFCharacter> aliveCharList = APFGameMode.GetInstance().GetAliveCharList();

        PFCharacterStuff.Active_CharSelectIconUI(aliveCharList, false);

        if (deselectCard != null)
        {
            float fDefaultScale = 1.0f;
            deselectCard.gameObject.transform.localScale = new Vector3(fDefaultScale, fDefaultScale, fDefaultScale);
        }

        SelectedCard_OnDeck = null;
    }
Пример #6
0
    List <APFCharacterController> GetTargetList(APFCharacterController srcChar, PFTable.ETargetCharacter targetType, APFCharacterController target_clickedChar)
    {
        List <APFCharacterController> resultList = new List <APFCharacterController>();

        switch (targetType)
        {
        case PFTable.ETargetCharacter.Self:
        {
            if (srcChar != null)
            {
                resultList.Add(srcChar);
            }
        }
        break;

        case PFTable.ETargetCharacter.EnemySingle:
        {
            if (target_clickedChar != null)
            {
                resultList.Add(target_clickedChar);
            }
        }
        break;

        case PFTable.ETargetCharacter.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);
            }
        }
        break;

        default:
        {
            StringBuilder sbLog = new StringBuilder("");
            sbLog.AppendFormat("GetTargetList  =>  switch - case 구현되지 않은 타입이 있음");
            Debug.LogError(sbLog.ToString());
        }
        break;
        }

        return(resultList);
    }
Пример #7
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);
            }
        }
    }
Пример #8
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);
    }
Пример #9
0
    private void CreateGameMode()
    {
        APFGameMode gamemode_original = Resources.Load <APFGameMode>(PFPrefabPath.GameMode);

        PFGameMode = PFUtil.Instantiate(gamemode_original, PFUIRoot.gameObject);
    }
Пример #10
0
    protected virtual void OnClick_This()
    {
        APFGameMode gameMode = APFGameMode.GetInstance();

        gameMode.OnClick_Character(this);
    }