public IEnumerator Begin() { var applied = false; var target = new MockSheet(); var skill = new GameObject("item").AddComponent <MockSkillMB>(); var targeting = ScriptableObject.CreateInstance <MockTargetingSO>(); skill.Sheet = new MockSheet(); skill.targeting = targeting; targeting.select = (_, targets, __) => targets.Add(target); IEnumerator <WaitForFixedUpdate> applyCast(MockSheet _) { applied = true; yield break; } skill.cast.apply = applyCast; yield return(new WaitForEndOfFrame()); skill.Begin(); Assert.True(applied); }
public IEnumerator GetSheet() { var sheet = new MockSheet(); var item = new GameObject("item").AddComponent <MockItem>(); yield return(new WaitForFixedUpdate()); item.Sheet = sheet; Assert.AreSame(sheet, item.Sheet); }
public void ProjectileSpawnPosition() { var spawn = new GameObject("spawn"); var target = new MockSheet(); var cast = new MockCastProjectile { projectileSpawn = spawn.transform }; spawn.transform.position = Vector3.back; cast.Apply(target).MoveNext(); Assert.AreEqual(Vector3.back, cast.magazine.Projectile.transform.position); }
public void RunDoSelect() { var called = (default(MockSheet), default(List <MockSheet>), 0); var source = new MockSheet(); var list = new List <MockSheet>(); var targeting = ScriptableObject.CreateInstance <MockTargetingSO>(); targeting.doSelect = (s, t, c) => { called = (s, t, c); return(Enumerable.Empty <WaitForEndOfFrame>().GetEnumerator()); }; targeting.Select(source, list, 42).MoveNext(); Assert.AreEqual((source, list, 42), called); }
public void DisposeProjectileWhenRoutineDone() { var disposed = null as GameObject; var spawn = new GameObject("spawn"); var target = new MockSheet(); var cast = new MockCastProjectile { projectileSpawn = spawn.transform }; cast.magazine.onDispose = o => disposed = o; cast.Apply(target).MoveNext(); Assert.AreSame(cast.magazine.Projectile, disposed); }
public IEnumerator SetSkillSheet() { var sheet = new MockSheet(); var item = new GameObject("item").AddComponent <MockItem>(); var skills = new MockSkillMB[] { item.gameObject.AddComponent <MockSkillMB>(), item.gameObject.AddComponent <MockSkillMB>(), item.gameObject.AddComponent <MockSkillMB>(), }; yield return(new WaitForEndOfFrame()); item.Sheet = sheet; CollectionAssert.AreEqual( new MockSheet[] { sheet, sheet, sheet }, skills.Select(s => s.Sheet) ); }
public IEnumerator ApplyEffect() { var got = (default(MockSheet), default(MockSheet)); var target = new MockSheet(); var skill = new GameObject("item").AddComponent <MockSkillMB>(); var targeting = ScriptableObject.CreateInstance <MockTargetingSO>(); skill.Sheet = new MockSheet(); skill.targeting = targeting; targeting.select = (_, targets, __) => targets.Add(target); skill.effectCollection.apply = (s, t) => got = (s, t); yield return(new WaitForEndOfFrame()); skill.Begin(); Assert.AreEqual((skill.Sheet, target), got); }
public IEnumerator TargetingFromSource() { var source = default(object); var target = new MockSheet(); var skill = new GameObject("item").AddComponent <MockSkillMB>(); var targeting = ScriptableObject.CreateInstance <MockTargetingSO>(); skill.Sheet = new MockSheet(); skill.targeting = targeting; targeting.select = (s, targets, __) => { source = s; targets.Add(target); }; yield return(new WaitForEndOfFrame()); skill.Begin(); Assert.AreSame(skill.Sheet, source); }
public IEnumerator TargetingWithMaxCount() { var called = 0; var target = new MockSheet(); var skill = new GameObject("item").AddComponent <MockSkillMB>(); var targeting = ScriptableObject.CreateInstance <MockTargetingSO>(); skill.Sheet = new MockSheet(); skill.maxTargetCount = 42; skill.targeting = targeting; targeting.select = (_, targets, mC) => { called = mC; targets.Add(target); }; yield return(new WaitForEndOfFrame()); skill.Begin(); Assert.AreEqual(42, called); }
public void DontDisposeProjectileWhenRoutineNotDone() { var disposed = false; var spawn = new GameObject("spawn"); var target = new MockSheet(); var cast = new MockCastProjectile { projectileSpawn = spawn.transform }; cast.magazine.onDispose = _ => disposed = true; IEnumerator <WaitForFixedUpdate> approach(Transform _, MockSheet __, float ___) { yield return(new WaitForFixedUpdate()); } cast.approach.apply = approach; cast.Apply(target).MoveNext(); Assert.False(disposed); }
public void ApproachArgs() { var called = default((Transform, MockSheet, float)); var spawn = new GameObject("spawn"); var target = new MockSheet(); var cast = new MockCastProjectile { projectileSpawn = spawn.transform }; cast.projectileSpeed = 1; IEnumerator <WaitForFixedUpdate> approach(Transform projectile, MockSheet target, float speed) { called = (projectile, target, speed); yield break; } cast.approach.apply = approach; cast.Apply(target).MoveNext(); Assert.AreEqual((cast.magazine.Projectile.transform, target, 1f), called); }
public IEnumerator ApplyEffectPerTarget() { var got = new List <(MockSheet, MockSheet)>(); var targetA = new MockSheet(); var targetB = new MockSheet(); var skill = new GameObject("item").AddComponent <MockSkillMB>(); var targeting = ScriptableObject.CreateInstance <MockTargetingSO>(); skill.Sheet = new MockSheet(); skill.targeting = targeting; targeting.select = (_, targets, __) => { targets.Add(targetA); targets.Add(targetB); }; skill.effectCollection.apply = (s, t) => got.Add((s, t)); yield return(new WaitForEndOfFrame()); skill.Begin(); CollectionAssert.AreEqual( new (MockSheet, MockSheet)[] {