private IEnumerator OnTurnBegin(APFCharacterController turnBeginChar) { if (turnBeginChar != null) { if (turnBeginChar.IsEnemy(TurnCharacter)) { PFTable.CharacterType charType = PFCharacterTable.GetCharacterType(turnBeginChar.CharacterTableId); if (charType == PFTable.CharacterType.Player) { TurnInfoUI_Player.SetActive(true); yield return(new WaitForSeconds(PFConst.TurnInfoNotiTime)); TurnInfoUI_Player.SetActive(false); } else if (charType == PFTable.CharacterType.Monster) { TurnInfoUI_Monster.SetActive(true); yield return(new WaitForSeconds(PFConst.TurnInfoNotiTime)); TurnInfoUI_Monster.SetActive(false); } } TurnCharacter = turnBeginChar; TurnCharacter.OnTurnBegin(); } }
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 void OnUseCard_AfterApplyDmg(PFTable.Card useCard, APFCharacterController targetCtrl) { if (useCard != null) { if (useCard.statusKeepTurnCount > 0) { if (useCard.atkRate != 0) { CardEffect.PowerRate attackRate = Create_CardEffect_PowerRate(useCard.atkRate, useCard.statusKeepTurnCount); CardEffectList_AttackRate.Add(attackRate); } if (useCard.atkRateTarget != 0) { CardEffect.PowerRate attackRate = Create_CardEffect_PowerRate(useCard.atkRateTarget, useCard.statusKeepTurnCount); targetCtrl.CardEffectList_AttackRate.Add(attackRate); } if (useCard.defRate != 0) { CardEffect.PowerRate defenceRate = Create_CardEffect_PowerRate(useCard.defRate, useCard.statusKeepTurnCount); CardEffectList_DefenceRate.Add(defenceRate); } if (useCard.defRateTarget != 0) { CardEffect.PowerRate defenceRate = Create_CardEffect_PowerRate(useCard.defRateTarget, useCard.statusKeepTurnCount); targetCtrl.CardEffectList_DefenceRate.Add(defenceRate); } } } }
public bool IsEnemy(APFCharacterController target) { if (target != null) { bool bResult = GetCharacter().IsEnemy(target.GetCharacter()); return(bResult); } return(false); }
private void TurnEnd(APFCharacterController turnEndChar) { if (turnEndChar != null) { turnEndChar.OnTurnEnd(); APFCharacterController nextTurnChar = PFGameModeStuff.GetNextTurnCharacter(AliveCharCtrlList, TurnCharacter); TurnBegin(nextTurnChar); } }
public virtual void Init(APFCharacterController controller) { SetController(controller); MaxHP = PFCharacterStuff.CalcMaxHP(CharacterTableId); int maxpHp = GetMaxHP(); SetHP(maxpHp); SetShieldValue(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); }
private EGameResult OnCharacterDead(APFCharacterController targetCtrl) { targetCtrl.OnCharacterDead(); DeadCharCtrlList.Add(targetCtrl); AliveCharCtrlList.Remove(targetCtrl); APFPlayerController plrCtrl = PFPlayerStuff.GetPlayerController(AliveCharCtrlList); if (plrCtrl == null) { return(EGameResult.Defeat); } else if (plrCtrl != null && AliveCharCtrlList.Count == 1) { return(EGameResult.Victory); } return(EGameResult.InProgress); }
public override void Init(APFCharacterController controller) { base.Init(controller); UIEventTrigger uiEventTrigger = gameObject.AddComponent <UIEventTrigger>(); EventDelegate.Add(uiEventTrigger.onClick, OnClick_This); EventDelegate.Add(uiEventTrigger.onHoverOver, OnHoverOver_This); EventDelegate.Add(uiEventTrigger.onHoverOut, OnHoverOut_This); BoxCollider boxCollider = gameObject.GetComponent <BoxCollider>(); if (boxCollider == null) { string charPrefabPath = PFCharacterTable.GetCharacterPrefabPath(CharacterTableId); StringBuilder sbLog = new StringBuilder(""); sbLog.AppendFormat("{0}.prefab => BoxCollider 셋팅필요", charPrefabPath); Debug.LogError(sbLog.ToString()); } }
private void StartGamePlay() { TurnCharacter = null; TurnInfoUI_Player.SetActive(false); TurnInfoUI_Monster.SetActive(false); GameOverUI.gameObject.SetActive(false); for (int i = 0; i < AliveCharCtrlList.Count; ++i) { AliveCharCtrlList[i].StartGamePlay(); } APFPlayerController plrController = PFPlayerStuff.GetPlayerController(AliveCharCtrlList); if (plrController != null) { TurnBegin(plrController); } }
public static APFCharacterController GetNextTurnCharacter(List <APFCharacterController> targetList, APFCharacterController currTurnChar) { if (targetList != null && currTurnChar != null) { int findIdx = targetList.FindIndex(comp => { return(comp == currTurnChar); }); if (findIdx != -1) { int nextIdx = findIdx + 1; nextIdx = nextIdx % targetList.Count; APFCharacterController nextTurnChar = targetList[nextIdx]; return(nextTurnChar); } } return(null); }
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); }
public static int GetDamage(APFCharacterController attackerCharCtrl, int cardTableId) { if (attackerCharCtrl != null) { int characterTableId = attackerCharCtrl.CharacterTableId; PFTable.Character charTable = PFTable.GetCharacter(characterTableId); PFTable.Card cardTable = PFTable.GetCard(cardTableId); if (charTable != null && cardTable != null) { float atkRateSum = attackerCharCtrl.GetCardEffectSum(ECardEffect.AtkRate); float atkRatio = charTable.atkRatio + atkRateSum; float fDamage = atkRatio * cardTable.damage; int iDamage = (int)fDamage;//소수점이 발생하면 버린다. return(iDamage); } } return(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); } } }
private void TurnBegin(APFCharacterController turnBeginChar) { StartCoroutine(this.OnTurnBegin(turnBeginChar)); }
private void SetController(APFCharacterController controller) { CharacterController = controller; }