Example #1
0
 /// <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);
     }
 }