//减少一次等待时间 如果有完成等待的卡 放入战场 private IEnumerator UpdateWaitingField() { foreach (Transform obj in enemy.hand.owner) { RealCard rc = obj.gameObject.GetComponent <RealCard>(); if (rc.tm.waiting.CheckTurn()) //这张卡已经完成了冷却 { rc.HandToField(); logger.Log($"{rc.info.name}进场了"); enemy.hand.sendTo(obj.transform, enemy.field); yield return(new WaitForSeconds(gameSpeed)); } } foreach (Transform obj in our.hand.owner) { RealCard rc = obj.gameObject.GetComponent <RealCard>(); if (rc.tm.waiting.CheckTurn()) //这张卡已经完成了冷却 { rc.HandToField(); logger.Log($"{rc.info.name}进场了"); our.hand.sendTo(obj.transform, our.field); yield return(new WaitForSeconds(gameSpeed)); } } yield return(new WaitForSeconds(gameSpeed)); }
public IEnumerator Cast(Skill skill, CardGroup cg, int pos) { switch (skill.skill) { case MetaSkill.普通攻击: Debug.Assert(cg == gm.our.field || cg == gm.enemy.field); if (cg.side.enemy.field.owner.childCount > pos) { RealCard enemyCard = cg.side.enemy.field.owner.GetChild(pos).GetComponent <RealCard>(); // 获取对面的卡牌 enemyCard.hp -= rc.atk; // 扣血 gm.logger.Log($"{rc.info.name}攻击了{enemyCard.info.name}"); yield return(rc.gp.playGIFAnimation()); } else { // 直接攻击 cg.side.enemy.healthBar.Hp -= rc.info.atk; gm.logger.Log($"{rc.info.name}直接攻击了{((cg == gm.our.field) ? "敌":"我")}方玩家"); } break; case MetaSkill.冲阵: if (cg.side.hand.owner.childCount == 0) { gm.logger.Log($"{rc.info.name}试图发动冲阵{skill.var},但是手牌是空的"); } else { //随机选择一个目标 RealCard tar = cg.side.hand.owner.GetChild(UnityEngine.Random.Range(0, cg.side.hand.owner.childCount)).GetComponent <RealCard>(); gm.logger.Log($"{rc.info.name}为{tar.info.name}发动了冲阵{skill.var}"); if (tar.tm.waiting.CheckTurn(skill.var)) //如果因此进场的话 { yield return(new WaitForSeconds(GameManager.gameSpeed)); tar.HandToField(); gm.logger.Log($"{tar.info.name}进场了"); cg.sendTo(tar.transform, cg.side.field); } } break; } yield return(new WaitForSeconds(GameManager.gameSpeed)); }