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); } } }
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()); } } } }
IEnumerator TurnBegin() { yield return(new WaitForSeconds(PFConst.MonsterTurnTime)); APFGameMode gameMode = APFGameMode.GetInstance(); APFPlayerController plrController = gameMode.GetPlayer(); UseCard(CardToUseForMyTurn, plrController.GetCharacter()); }
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; }
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); }
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 CreateGameMode() { APFGameMode gamemode_original = Resources.Load <APFGameMode>(PFPrefabPath.GameMode); PFGameMode = PFUtil.Instantiate(gamemode_original, PFUIRoot.gameObject); }
protected virtual void OnClick_This() { APFGameMode gameMode = APFGameMode.GetInstance(); gameMode.OnClick_Character(this); }