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