void NewComplexTask() { Debug.Log("Add new complex task"); //Create new ComplexTask. ct = new ComplexTask() { Priority = -10, TaskID = 003, AssignementLevel = 0 }; //Create new MoveTask. mt = new WaitTask() { Priority = 1, TaskID = 004, AssignementLevel = 0, WaitTimeSeconds = 1 }; //Add it to the complex task. ct.ComplexTaskList.Add(mt); //Make another. mt = new WaitTask() { Priority = 2, TaskID = 005, AssignementLevel = 0, WaitTimeSeconds = 3 }; //Add that one aswell. ct.ComplexTaskList.Add(mt); //Finally add the complex task we have just built to the tasklist. taskManager.TaskList.Add(ct); }
private static Task DefineDialogueSequence() { Task enterDialogue = new DelegateTask(() => { Logger.Warning("DefineDialogueSequence start"); }, () => { return(Services.PlayerMovement.inPlaceForSequence); }); ActionTask triggerCameraAndUI = new ActionTask(() => { Logger.Warning("DefineDialogueSequence triggering camera to enter dialogue"); Services.CameraManager.EnterDialogue(); Services.UIManager.EnterDialogue(); }); Task fadeIn = new WaitTask(.5f); Task startConvo = new ActionTask(() => { Logger.Warning("DefineDialogueSequence entering dialogue"); Services.DialogueController.EnterDialogue(); _enterDialogueFailsafe.Abort(); }); enterDialogue.Then(triggerCameraAndUI).Then(fadeIn).Then(startConvo); return(enterDialogue); }
public void AssingTasks(PlayerScript player) { for (int i = 0; i < 2; i++) { WaitTask wait = null; bool isGenerated = false; while (isGenerated == false) { wait = waitTasks[Random.Range(0, waitTasks.Length)]; if (!player.playerTasks.Contains(wait)) { isGenerated = true; } } player.playerTasks.Add(wait); } for (int i = 0; i < 3; i++) { PasswordTask pass = null; bool generated = false; while (generated == false) { pass = passTasks[Random.Range(0, passTasks.Length)]; if (!player.playerTasks.Contains(pass)) { generated = true; } } player.playerTasks.Add(pass); } }
public WaitTask Wait(double duration) { var task = new WaitTask(duration); AddTask(task); return(task); }
public static void Save() { Task save = new ActionTask(() => { Services.SaveManager.SaveData(); }); Task wait = new WaitTask(.5f); Task finish = new ActionTask(() => { UnityEngine.SceneManagement.SceneManager.LoadScene(1); }); save.Then(wait).Then(finish); _taskManager.Do(save); }
public override void copyto(BehaviorTask target) { base.copyto(target); Debug.Check(target is WaitTask); WaitTask ttask = (WaitTask)target; ttask.m_start = this.m_start; ttask.m_time = this.m_time; }
public void SetQuestlogText(string questTag, string newText) { Logger.Debug($"tag = {questTag} text = {newText}"); if (_questTagToLog.ContainsKey(questTag) && _questTagToLog[questTag] == null) { return; } if (newText.Equals("") || newText.Equals("Find out what happened to the forest")) { _questTagToLog[questTag].text = newText; return; } Task displayHolder = new ActionTask(() => { DisplayQuestLogUI(); }); Task wait1 = new WaitTask(.5f); Task triggerTextAnim = new ActionTask(() => { HideUI(_questTagToLog[questTag]); }); Task wait2 = new WaitTask(.5f); Task setText = new ActionTask(() => { _questTagToLog[questTag].text = newText; DisplayUI(_questTagToLog[questTag]); }); Task wait3 = new WaitTask(5.5f); Task hideHolder = new ActionTask(() => { HideQuestLogUI(); _updatingQuestLog = false; }); if (_updatingQuestLog) { wait1.Then(triggerTextAnim).Then(wait2).Then(setText); _taskManager.Do(wait1); } else { _updatingQuestLog = true; displayHolder.Then(wait1).Then(triggerTextAnim).Then(wait2).Then(setText).Then(wait3).Then(hideHolder); _taskManager.Do(displayHolder); } }
/// <summary> /// For organizing statements when both parties are "talking" at once. /// </summary> /// <param name="opponentStmt">Opponent statement.</param> /// <param name="playerStmt">Player statement.</param> public void SimultaneousStatements(string opponentStmt, string playerStmt) { MakeStatementTask opponentTask = new MakeStatementTask(opponentStmt, MoveBalloonTask.GrowOrShrink.Grow); MakeStatementTask playerTask = new MakeStatementTask(playerStmt, MoveBalloonTask.GrowOrShrink.Shrink); WaitTask waitTask = new WaitTask(); opponentTask.Then(waitTask); waitTask.Then(playerTask); Services.Tasks.AddTask(opponentTask); }
/// <summary> /// For generic statements of unpredictable formatting--how many attacks the Ranger has left, etc. /// </summary> public void MakeStatement(string statement, BalloonTypes type) { TextMeshProUGUI balloon = AddBalloon(statement, type); balloon.text = statement; ManageChatLength(); WaitTask waitTask = new WaitTask(); WaitTask waitTask2 = new WaitTask(); //an ugly, irksome bodge! the scrollbar needs to be fully resized before the scrolling starts waitTask.Then(waitTask2); waitTask2.Then(new ScrollChatTask()); Services.Tasks.AddTask(waitTask); }
public IEnumerator wait_task() { Human human = CreateHuman(); CommandProcessor cp = human.CommandProcessor; Task task = new WaitTask(0.1f); yield return(AddTaskAndWaitUntilFinished(task, cp)); if (cp.HasTask == true) { Assert.Fail(); } human.Die(); Assert.Pass(); }
private static Task DefineDialogueFailsafeSequence() { WaitTask failsafeWait = new WaitTask(9.1f); ActionTask failsafeAction = new ActionTask(() => { if (!Services.PlayerMovement.inPlaceForSequence) { Services.CameraManager.EnterDialogue(); Services.UIManager.EnterDialogue(); Logger.Warning("Dialogue Failsafe Triggered in SequenceManager"); } }); failsafeWait.Then(failsafeAction); return(failsafeWait); }
private Task DefineSequence() { Task start = new ActionTask(() => { Context.ResetInputs(); }); Task wait2Secs = new WaitTask(2f); Task forceFinalTransform = new ActionTask(() => { Context.ForceTransform(Services.QuestItemRepository.TargetStep3PlayerPosition.position, Services.QuestItemRepository.TargetStep3PlayerPosition.rotation); Context.ForceTransform(Vector3.zero, Services.QuestItemRepository.TargetStep3PlayerPosition.rotation); }); start.Then(wait2Secs).Then(forceFinalTransform); return(start); }
public Task <bool> WaitAsync(TimeSpan timeout) { lock (this.waiters) { if (this.signaled) { this.signaled = false; return(CompletedTrueTask); } else { var waiter = new WaitTask(this, timeout); this.waiters.Add(waiter); return(waiter.Task); } } }
private void DefineSequence() { //Context.cutsceneCamera.LookAt = Services.QuestItemRepository.CurrentQuestItem().transform; // figure out what it's looking at Task wait2Secs = new WaitTask(2f); DelegateTask cameraDolly5 = new DelegateTask( () => { Context.anim.Play(Str.CutsceneDolly5); // Play end cutscene animation elapsedTime = 0f; }, () => { elapsedTime += Time.deltaTime; return(elapsedTime > 15f); }); wait2Secs.Then(cameraDolly5); Context._taskManager.Do(wait2Secs); }
// Defines tasks for turtle movement. private Task DefineTasks() { NPCCollider npcCollider = _turtleTrans.GetComponentInChildren <NPCCollider>(); Vector3 initScale = npcCollider.transform.localScale; npcCollider.transform.localScale = Vector3.zero; Task wait = new WaitTask(1f); Task start = new ActionTask(() => { _turtleAnim.SetBool(Str.Running, true); // sound? }); Task prev = start; for (int i = 0; i < ((TurtleQuest)Context)._turtleRoute.Length; i++) { Task next = TurtleMove(((TurtleQuest)Context)._turtleRoute[i]); prev = prev.Then(next); } Task finish = new ActionTask ( () => { _turtleAnim.SetBool(Str.Running, false); npcCollider.transform.localScale = initScale; // causes problems npcCollider.Appear(); // causes problems if (Context.QuestStage < 4) { QuestManager.AdvanceQuest(Context.QuestTag); } } ); wait.Then(start); prev.Then(finish); return(wait); }
//Just for testing, constructs a new task after half a second and adds it to the list. void NewTask() { Debug.Log("Add new task"); mt = new WaitTask() { Priority = 1, TaskID = 001, AssignementLevel = 0, WaitTimeSeconds = 2 }; taskManager.TaskList.Add(mt); mt = new WaitTask() { Priority = -10, TaskID = 002, AssignementLevel = 1, WaitTimeSeconds = 5 }; taskManager.TaskList.Add(mt); }
protected override void Init() { // Debug.Log ("go feedback"); loadAndPlay(); //if this task previously had a next task assigned, we're going to delay it until the audio finishes playing. if (NextTask != null) { if (GameManager.instance.aSource.clip != null) { Task realNext = NextTask; WaitTask w = new WaitTask(GameManager.instance.aSource.clip.length * 1000); w.Then(realNext); this.Then(w); } else { Debug.Log("COULDN'T FIND " + _filePath); } } finishPlaying(); }
public Task <T> WaitFor <T>(Func <T, IDictionary <string, object>, bool> filter, CancellationToken cancellationToken = default) where T : IEvent { RemoveExpiredEvents(); lock (_lockObj) { var matchingRecordedEvent = _events .Where(x => x.Event is T) .FirstOrDefault(recordedEvent => filter((T)recordedEvent.Event, recordedEvent.Arguments)); if (matchingRecordedEvent != null) { _log.Debug("Matching event for {eventType} returned from event store with age of {eventAge} ms", typeof(T).FullName, (_clock.UtcNow - matchingRecordedEvent.TimeStamp).TotalMilliseconds); return(Task.FromResult((T)matchingRecordedEvent.Event)); } } var task = new WaitTask((evnt, args) => filter((T)evnt, args), typeof(T)); cancellationToken.Register(() => { _log.Debug("Awaiting event on task {awaiterTaskId} cancelled for event {eventType}", task.GetHashCode(), typeof(T).FullName); task.WaitHandle.Set(); }); _log.Debug("Creating event awaiter task {awaiterTaskId} for event {eventType}", task.GetHashCode(), typeof(T).FullName); lock (_lockObj) { _tasks.Add(task); } return(new TaskFactory <T>().StartNew(() => { task.WaitHandle.WaitOne(); _log.Verbose("Removing awaiting event task {awaiterTaskId} for event {eventType}", task.GetHashCode(), typeof(T).FullName); lock (_lockObj) { _tasks.Remove(task); } return (T)task.Event; }, cancellationToken)); }
public void Set() { WaitTask toRelease = null; lock (this.waiters) { if (this.waiters.Count > 0) { toRelease = this.waiters[0]; this.waiters.RemoveAt(0); } else if (!this.signaled) { this.signaled = true; } } if (toRelease != null) { toRelease.Set(); } }
private Task DefineSequence() { Task start = new ActionTask(() => { Context.ResetInputs(); Context.inPlaceForSequence = false; }); Task moveToInitPos = Context.PlayerMoveToTransform( Services.QuestItemRepository.TargetStep1PlayerPosition, // Position target for player Services.QuestItemRepository.TargetItemPosition, // direction target for player Services.QuestItemRepository.TargetItemPosition); // Not totally sure. start.Then(moveToInitPos); Task phase2Start = Context.LastTask(moveToInitPos); Task reset1 = new ActionTask(() => { Context.inPlaceForSequence = false; }); Task moveToMidPos = Context.PlayerMoveToTransform( Services.QuestItemRepository.TargetStep2PlayerPosition, Services.QuestItemRepository.TargetItemPosition, Services.QuestItemRepository.TargetItemPosition); phase2Start.Then(reset1).Then(moveToMidPos); Task phase3Start = Context.LastTask(moveToMidPos); Task reset2 = new ActionTask(() => { Context.inPlaceForSequence = false; }); Task wait4Secs = new WaitTask(4f); Task forceFinalTransform = new ActionTask(() => { Context.ForceTransform(Services.QuestItemRepository.TargetStep4PlayerPosition.position, Services.QuestItemRepository.TargetStep4PlayerPosition.rotation); Services.UIManager.HideItemPickupPrompt(); }); phase3Start.Then(reset2).Then(wait4Secs).Then(forceFinalTransform); return(start); }
/// <summary> /// Changes the current language. /// </summary> /// <param name="language">The language.</param> public void ChangeCurrentLanguage(LanguageInfo language) { language.Culture.DateTimeFormat = _systemFormat; var localizationChangingArgs = new LocalizationChangingEventArgs(language); _localizationChangingEvent.Publish(localizationChangingArgs); if (localizationChangingArgs.WaitingFor.IsEmpty()) { SetCurrentLanguage(language); } else { var waitTask = new WaitTask(Logger) { Handlers = localizationChangingArgs.WaitingFor.ToArray(), OnResult = result => { SetCurrentLanguage(language); } }; _taskQueue.Enqueue(waitTask); } }
private static Task DefineEndSequence() { ActionTask firstSequence = new ActionTask(() => { Services.UIManager.CutsceneFadeIn(); inCutscene = true; }); Task waitForTime1 = new WaitTask(2f); ActionTask secondSequence = new ActionTask(() => { Services.UIManager.CutsceneFadeOut(); Services.UIManager.HideAllUI(); PlayerAnimation.Sitting(true); FModMusicManager.EndCutscene(); cutsceneObjectsManager.EndNPCs(); }); Task waitForTime2 = new WaitTask(14f); ActionTask thirdSequence = new ActionTask(() => { Services.UIManager.CutsceneFadeIn(); }); Task waitForTime3 = new WaitTask(4f); Task endGame = new ActionTask(() => { inCutscene = false; FModMusicManager.EndMusicLayers(); UnityEngine.SceneManagement.SceneManager.LoadScene(2); }); firstSequence.Then(waitForTime1).Then(secondSequence).Then(waitForTime2).Then(thirdSequence).Then(waitForTime3).Then(endGame); return(firstSequence); }
// Use this for initialization protected override void Start() { base.Start(); scale = 0; totalHp = hp; currentPhase = Phase.Default; gameObject.transform.localScale = new Vector3(scale, scale, scale); taskManager = new TaskManager(); scaleUpTask = new ProgressionTask(ScaleUp, 0); enterAppearPhaseTask = new ActionTask(EnterAppearPhase); enterSpawnPhaseTask = new ActionTask(EnterSpawnPhase); enterFirePhaseTask = new ActionTask(EnterFirePhase); enterChasePhaseTask = new ActionTask(EnterChasePhase); enterDeadPhaseTask = new ActionTask(Die); spawnTask = new ProgressionTask(Spawn, 0); idleTask = new WaitTask(3f); moveTask = new ProgressionTask(Move, 0); attackTask = new ProgressionTask(Attack, 0); Services.EnemyManager.AddBoss(gameObject); }
protected override BehaviorTask createTask() { WaitTask pTask = new WaitTask(); return pTask; }
protected override BehaviorTask createTask() { WaitTask pTask = new WaitTask(); return(pTask); }
/* * 1. Move player to position. Move camera behind player. ~2s * 2. Move Camera to cutsceneCamera, have camera slowly focus on item. Make player walk to tree. ~2s * 3. Trigger Quest item repository to take item, trigger sounds and particle effects, smoothly animate it into position and have large particle effect. 2s * 4. Fade to white? black? 2s * 5. stay there for a sec as music fades. Place player into new position. 3s * 6. Fade back in and have player turned around as environment changes are triggered. 2s * 7. 1 sec later have player get up and return to normal controls. 1s // turns around! */ private static Task DefineMidSequence() { // 1. Move player to position. Move camera behind player. ~2s Task enterSequence = new DelegateTask(() => { inCutscene = true; }, () => { Services.UIManager.HideItemPickupPrompt(); return(Services.PlayerMovement.inPlaceForSequence); }); Task waitForTime1 = new WaitTask(1f); // 2. Move Camera to cutsceneCamera, have camera slowly focus on item. Make player walk to tree. ~2s Task secondSequence = new DelegateTask(() => { // Trigger particles? // Trigger music? }, () => { Services.UIManager.HideItemPickupPrompt(); return(Services.PlayerMovement.inPlaceForSequence); }); Task dropItem = new ActionTask(() => { Services.PlayerItemHolder.DropItem(); }); Task waitForTime2 = new WaitTask(.66f); // 3.Trigger Quest item repository to take item, trigger sounds and particle effects, smoothly animate it into position and have large particle effect. 2s ActionTask thirdSequence = new ActionTask(() => { Services.QuestItemRepository.StartSequence(); FModMusicManager.ReturnedItem(); // Quest item Repository takes Item. // trigger other stuff. }); // Add in phase here to show plants growing????????????????????????????????????? Task waitForTime3 = new WaitTask(1.5f); // 4. Fade to white? black? 2s ActionTask fourthSequence = new ActionTask(() => { // Fade out? Services.UIManager.CutsceneFadeIn(); }); // 5. stay there for a sec as music fades. Place player into new position. 3s Task waitForTime4 = new WaitTask(4.5f); // 6. Fade back in and have player turned around as environment changes are triggered. 2s ActionTask fifthSequence = new ActionTask(() => { Services.PostProcessingManager.AdvanceStage(); PlayerAnimation.Sitting(true); // Fade in? Services.UIManager.CutsceneFadeOut(); Services.UIManager.HideDialogueEnterPrompt(); }); Task waitForTime5 = new WaitTask(1f); ActionTask triggerPlantAnims = new ActionTask(() => { cutsceneObjectsManager.Transition(); }); Task waitForTime6 = new WaitTask(10.5f); // 7. 1 sec later have player get up and return to normal controls. 1s ActionTask sixthSequence = new ActionTask(() => { PlayerAnimation.Sitting(false); NPCInteractionManager.FindClosestNPC(); Services.GameManager.EnterDialogue(); inCutscene = false; }); enterSequence.Then(waitForTime1).Then(secondSequence).Then(dropItem).Then(waitForTime2).Then(thirdSequence).Then(waitForTime3).Then(fourthSequence).Then(waitForTime4).Then(fifthSequence).Then(waitForTime5).Then(triggerPlantAnims).Then(waitForTime6).Then(sixthSequence); return(enterSequence); }
public void TestWaitingWorkItemsProperty() { int eventCount = AffineThreadPool.Processors; WaitTask[] tasks = new WaitTask[eventCount]; int createdTasks = 0; try { // CHECK: Is there danger that the thread pool still has not finished // queued items for other unit tests, thereby failing to meet // our expected task counts? // Create the tasks, counting up the created task counter. If an exception // occurs, we will roll back from there. for(createdTasks = 0; createdTasks < eventCount; ++createdTasks) { tasks[createdTasks] = new WaitTask(); } // Schedule the blocking tasks in the thread pool so it will not be able // to process the next task we add to the queue for(int index = 0; index < eventCount; ++index) { AffineThreadPool.QueueUserWorkItem(tasks[index].Callback); } // Wait for the tasks to start so they aren't preempted by the tasks we're // going to add (which would finish immediately). The affine thread pool // works on a first come first serve basis, but we don't want to rely on this // implementation detail in the unit test. for(int index = 0; index < eventCount; ++index) { Assert.IsTrue( tasks[index].StartEvent.WaitOne(10000), "Task " + index.ToString() + " was started" ); } // All Thread should now be active and no work items should be waiting Assert.AreEqual( createdTasks, AffineThreadPool.ActiveThreads, "ActiveThreads property equals number of tasks" ); Assert.AreEqual( 0, AffineThreadPool.WaitingWorkItems, "No waiting work items are in the queue" ); // Add a task to the queue and make sure the waiting work item count goes up AffineThreadPool.QueueUserWorkItem(delegate(object state) { }); Assert.AreEqual( 1, AffineThreadPool.WaitingWorkItems, "Added work item is waiting in the queue" ); // The same again. Now we should have 2 work items sitting in the queue AffineThreadPool.QueueUserWorkItem(delegate(object state) { }); Assert.AreEqual( 2, AffineThreadPool.WaitingWorkItems, "Both added work items are waiting in the queue" ); // Let the WaitTasks finish so we're not blocking the thread pool any longer for(int index = 0; index < eventCount; ++index) { tasks[index].WaitEvent.Set(); } // Wait for the tasks to end before we get rid of them for(int index = 0; index < eventCount; ++index) { Assert.IsTrue( tasks[index].FinishEvent.WaitOne(1000), "Task " + index.ToString() + " has finished" ); } } finally { for(--createdTasks; createdTasks >= 0; --createdTasks) { tasks[createdTasks].Dispose(); } } }
public async Task <Stream> GetMessageStream(bool asText) { await WaitTask.ConfigureAwait(false); return(await WebSocket.GetMessageStream(asText).ConfigureAwait(false)); }
public async Task SendBinary(Stream stream) { await WaitTask.ConfigureAwait(false); await WebSocket.SendBinary(stream).ConfigureAwait(false); }
public async Task SendBinary(ArraySegment <byte> buffer) { await WaitTask.ConfigureAwait(false); await WebSocket.SendBinary(buffer).ConfigureAwait(false); }
public async Task SendText(string d) { await WaitTask.ConfigureAwait(false); await WebSocket.SendText(d).ConfigureAwait(false); }
async Task IWebSocketInternal.SendTextRaw(string text) { await WaitTask.ConfigureAwait(false); await WebSocket.SendTextRaw(text).ConfigureAwait(false); }