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()); } } } }
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 static PFTable.Card GetRandomCard() { int randCardId = UnityEngine.Random.Range(PFConst.MonsterCardIdBegin, PFConst.MonsterCardIdEnd); PFTable.Card cardTable = PFTable.GetCard(randCardId); return(cardTable); }
public static PFTable.ECardPoolType GetCardType(int cardId) { PFTable.Card cardTable = PFTable.GetCard(cardId); if (cardTable != null) { return(cardTable.cardPoolType); } return(PFTable.ECardPoolType.Invalid); }
public static PFTable.ECardApplyTarget GetApplyTarget(int cardId) { PFTable.Card cardTable = PFTable.GetCard(cardId); if (cardTable != null) { return(cardTable.applyTarget); } return(PFTable.ECardApplyTarget.Invalid); }
public static PFTable.CharacterType GetCharacterType(int characterTableId) { PFTable.Character charTable = PFTable.GetCharacter(characterTableId); if (charTable != null) { return(charTable.characterType); } return(PFTable.CharacterType.Invalid); }
public static PFTable.CardEffect.EType GetCardEffectType(int cardEffectId) { PFTable.CardEffect cardEffect = PFTable.GetCardEffect(cardEffectId); if (cardEffect != null) { return(cardEffect.CardEffectType); } return(PFTable.CardEffect.EType.Invalid); }
public static int GetCost(int cardTableId) { PFTable.Card cardTable = PFTable.GetCard(cardTableId); if (cardTable != null) { return(cardTable.cost); } return(PFNumber.InvalidCost); }
public static float GetMaxHPRand(int characterTableId) { PFTable.Character charTable = PFTable.GetCharacter(characterTableId); if (charTable != null) { float maxHpRand = charTable.maxHpRand; return(maxHpRand); } return(0.0f); }
public static int GetMaxHP(int characterTableId) { PFTable.Character charTable = PFTable.GetCharacter(characterTableId); if (charTable != null) { int maxHp = charTable.maxHp; return(maxHp); } return(0); }
public static string GetCharacterPrefabPath(int characterTableId) { PFTable.Character charTable = PFTable.GetCharacter(characterTableId); if (charTable != null) { string path = charTable.CharacterPrefabPath; return(path); } return(null); }
public static List <APFCardUI> Create_DeckCards(GameObject cardParent, List <int> deckCardIdList, int bgFrameWidth) { APFCardUI card_original = Resources.Load <APFCardUI>(PFPrefabPath.Card); if (card_original == null) { StringBuilder sbLog = new StringBuilder(""); sbLog.AppendFormat("{0} 경로에 카드프리팹이 없습니다.", PFPrefabPath.Card); Debug.LogError(sbLog.ToString()); return(null); } int cardWidth = card_original.GetCardWidth(); int cardCount = deckCardIdList.Count; int cardTotalWidth = cardWidth * cardCount; float createPosX = (bgFrameWidth - cardTotalWidth) / 2; createPosX += cardWidth / 2; List <APFCardUI> newInstanceList = new List <APFCardUI>(cardCount); for (int i = 0; i < cardCount; ++i) { int cardId = deckCardIdList[i]; PFTable.Card cardTable = PFTable.GetCard(cardId); if (cardTable != null) { Vector3 createPos = new Vector3(createPosX, 0.0f, 0.0f); APFCardUI newCardInstance = PFUtil.Instantiate(card_original, cardParent, createPos); newCardInstance.Init(cardTable); newInstanceList.Add(newCardInstance); createPosX += cardWidth; } else { StringBuilder sbLog = new StringBuilder(""); sbLog.AppendFormat("카드테이블 id: {0} 카드정보가 없습니다", cardId); Debug.LogError(sbLog.ToString()); return(null); } } return(newInstanceList); }
private float GetDefencePowerRatio() { float defPowerRatio = 0.0f; PFTable.Character charTable = PFTable.GetCharacter(CharacterTableId); if (charTable != null) { defPowerRatio += charTable.defBase; } float cardEffectSum = GetCardEffectSum(ECardEffect.DefRate); defPowerRatio += cardEffectSum; return(defPowerRatio); }
public void UpdateUI_CardList(List <int> cardList) { PFUtil.DestroyChild(CardListGrid.gameObject, false); if (cardList == null) { return; } for (int i = 0; i < cardList.Count; ++i) { APFCardUI pfCard = PFUtil.Instantiate <APFCardUI>(PFPrefabPath.Card, CardListGrid.gameObject, Vector3.zero); pfCard.Init(PFTable.GetCard(cardList[i])); } CardListGrid.repositionNow = true; }
public int GetDamage(int damageAmout) { PFTable.Character attackerCharTable = PFTable.GetCharacter(CharacterTableId); if (attackerCharTable != null) { float atkRateSum = GetCardEffectSum(ECardEffect.AtkRate); float atkRatio = attackerCharTable.atkRatio + atkRateSum; float fDamage = atkRatio * damageAmout; int iDamage = (int)fDamage;//소수점이 발생하면 버린다. return(iDamage); } return(0); }
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 Awake() { PFTable.LoadTables(); CreateGameMode(); }
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); } } }