/// <summary> /// 执行任务_移动到指定位置 /// </summary> /// <param name="task">The task.</param> /// <exception cref="System.NotImplementedException"></exception> private void ExecuteTask_MoveToPosition(Task.MoveToPosition task) { CMDebug.TextPopup("ExecuteTask_MoveToPosition", transform.position); worker.MoveTo(task.targetPosition, () => { state = State.WaitingForNextTask; // Destroy(gameObject.GetComponent<MoveHandler>()); }); }
private void Update() { if (Input.GetMouseButtonDown(0)) { // Spawn a pistol and queue the task to take it to a slot when possible GameObject pistolGameObject = SpawnPistolSprite(UtilsClass.GetMouseWorldPosition()); taskSystem.EnqueueTask(() => { foreach (WeaponSlot weaponSlot in weaponSlotList) { if (weaponSlot.IsEmpty()) { // If the weapon slot is empty lets create the task to take it there weaponSlot.SetHasWeaponIncoming(true); Task task = new Task.TakeWeaponToWeaponSlot { weaponPosition = pistolGameObject.transform.position, weaponSlotPosition = weaponSlot.GetPosition(), grabWeapon = (CM_WorkerTaskAI weaponWorkerTaskAI) => { // Grab weapon, parent the weapon to the worker pistolGameObject.transform.SetParent(weaponWorkerTaskAI.transform); }, dropWeapon = () => { // Drop weapon, set parent back to null pistolGameObject.transform.SetParent(null); // Notify the weapon slot that the weapon has arrived weaponSlot.SetWeaponTransform(pistolGameObject.transform); }, }; return(task); } // Weapon slot not empty, keep looking } // No weapon slot is empty, try again later return(null); }); //CMDebug.TextPopupMouse("Add Task: ShellFloorCleanUp, 5s delay"); //SpawnFloorShellsWithTask(UtilsClass.GetMouseWorldPosition()); } if (Input.GetMouseButtonDown(1)) { CMDebug.TextPopupMouse("Add Task: MoveToPosition"); //CM_TaskSystem.Task task = new CM_TaskSystem.Task.Victory { }; //taskSystem.AddTask(task); Task task = new Task.MoveToPosition { targetPosition = UtilsClass.GetMouseWorldPosition() }; taskSystem.AddTask(task); } if (Input.GetKeyDown(KeyCode.Alpha1)) { CMDebug.TextPopupMouse("Add Task: Victory"); Task task = new Task.Victory { }; taskSystem.AddTask(task); } }