public virtual IEnumerator TakeTurn(BoardCreator board) { if (!CanMove()) { ResetMove(); } else { if (nonNullAttackTarget != null) { AttackPattern pattern = GetComponent <AttackPattern>(); yield return(StartCoroutine(pattern.Attack(nonNullAttackTarget))); pattern.SetData(GetComponent <UnitStats>().unitInfo.WeaponMain); yield return(StartCoroutine(pattern.HitUnits(board, attackTarget, moveTarget))); attackTarget = null; nonNullAttackTarget = null; } else { SetNextMove(board); Movement m = GetComponent <Movement>(); yield return(StartCoroutine(m.Traverse(moveTarget))); } } }
public static void SetAttack(ItemData weapon, GameObject obj) { if (weapon == null) { return; } AttackPattern script = (AttackPattern)obj.AddComponent(Type.GetType(weapon.attackPattern.name)); script.SetData(weapon); }