public void TestStart() { var task = new ManualTask((t) => {}); var listener = new TaskListener(); task.StartTask(listener); Assert.IsFalse(listener.IsFinished); Assert.AreEqual(0f, listener.Progress, Delta); Assert.IsTrue(task.DidRun); Assert.IsFalse(task.IsRevoked.Value); Assert.IsFalse(task.IsFinished); Assert.AreEqual(listener, task.Listener); task.SetProgress(0.25f); Assert.IsFalse(listener.IsFinished); Assert.AreEqual(0.25f, listener.Progress, Delta); Assert.IsTrue(task.DidRun); Assert.IsFalse(task.IsRevoked.Value); Assert.IsFalse(task.IsFinished); Assert.AreEqual(listener, task.Listener); task.SetFinished(); Assert.IsTrue(listener.IsFinished); Assert.AreEqual(1f, listener.Progress, Delta); Assert.IsTrue(task.DidRun); Assert.IsFalse(task.IsRevoked.Value); Assert.IsTrue(task.IsFinished); Assert.AreEqual(listener, task.Listener); }
/// <summary> /// Starts loading hit object to resolve for specified future. /// </summary> private IEnumerator LoadHitObjects(ManualTask task) { int createCount = 0; int lastLoads = 0; foreach (var obj in GameSession.CurrentMap.HitObjects) { // If create count reached 0, determine new creation count. if (createCount <= 0) { createCount = Mathf.Max((int)((1f / Time.deltaTime) + lastLoads) / 4, 1); lastLoads = createCount; yield return(null); } createCount--; HitObjectView hitObjView = null; if (obj is HitCircle hitCircle) { var hitCircleView = hitCircleRecycler.GetNext(); hitCircleView.Depth = hitObjectViews.Count; hitCircleView.ObjectIndex = hitObjectViews.Count; hitCircleView.SetHitObject(hitCircle); hitObjectViews.Add(hitCircleView); hitObjView = hitCircleView; } else if (obj is Dragger dragger) { var draggerView = draggerRecycler.GetNext(); draggerView.Depth = hitObjectViews.Count; draggerView.ObjectIndex = hitObjectViews.Count; draggerView.SetHitObject(dragger); hitObjectViews.Add(draggerView); hitObjView = draggerView; } if (hitObjView != null) { // Apply combo color var combo = obj as IHasCombo; if (combo != null) { hitObjView.Tint = GetComboColor(combo); } } } task.SetFinished(); }
private void RunDummyTask(ManualTask <DummyCacherData> task, string key) { var timer = new SynchronizedTimer() { Limit = 1f }; timer.OnFinished += () => { task.SetFinished(new DummyCacherData() { Key = key, IsDestroyed = false }); }; timer.OnProgress += task.SetProgress; timer.Start(); }
public void TestWithComplexTasks() { var manualTask = new ManualTask((t) => { }); var multiTask = new MultiTask(new List <ITask>() { new ManualTask((t) => {}), new ManualTask((t) => {}) }); var tasks = new List <ITask>() { manualTask, multiTask }; var task = new MultiTask(tasks); var listener = new TaskListener(); task.StartTask(listener); Assert.AreEqual(listener, task.Listener); Assert.AreEqual(2, task.Tasks.Count); Assert.IsFalse(task.IsFinished); Assert.IsTrue(task.DidRun); Assert.AreEqual(0f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); (multiTask.Tasks[0] as ManualTask).SetFinished(); Assert.IsFalse(task.IsFinished); Assert.AreEqual(0.25f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); manualTask.SetFinished(); Assert.IsFalse(task.IsFinished); Assert.AreEqual(0.75f, listener.TotalProgress, Delta); Assert.IsFalse(listener.IsFinished); (multiTask.Tasks[1] as ManualTask).SetFinished(); Assert.IsTrue(task.IsFinished); Assert.AreEqual(1f, listener.TotalProgress, Delta); Assert.IsTrue(listener.IsFinished); }