ManualMoveTask.cs 2.1 KB
using CtuDeviceLib;
using Mushiny;
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary.CtuService
{
    /// <summary>
    /// 充电任务
    /// </summary>
    public class ManualMoveTask : CtuTaskBase
    {
        public ManualMoveTask(CTU ctu, string dst) : base(ctu, dst)
        {
            Name = "手动移动任务";
        }

        public override void Excute()
        {
            //当前位置不是目的地,就重新规划路线
            if (MoveInfo.MoveStep != RunStep.Wait && MoveInfo.MoveStep != RunStep.ManualMove_MoveToDst)
            {
                if (ctu.CurLandMark != destination)
                {
                    MoveInfo.NextMoveStep(RunStep.Wait);
                    MoveInfo.Info($"当前点位不在目标点【{DstName}】【{destination}】,重新进入移动流程");
                }
            }
            switch (MoveInfo.MoveStep)
            {
                case RunStep.Wait:
                    if (!CalcDst())
                    {
                        Msg.add($"规划去【{DstName}】失败,请检查", MsgLevel.warning);
                        return;
                    }

                    MoveInfo.NextMoveStep(RunStep.ManualMove_MoveToDst);
                    MoveInfo.Info($"去目标点【{DstName}】【{destination}】");

                    break;

                case RunStep.ManualMove_MoveToDst:
                    if (IsFinished)
                    {
                        MoveInfo.NextMoveStep(RunStep.ManualMove_AtDst);
                        MoveInfo.Info($"已到目标点【{DstName}】【{destination}】");
                    }
                    else
                    {
                        Move();
                    }
                    break;

                case RunStep.ManualMove_AtDst:
                    ctu.CtuTask = null;
                    break;
                case RunStep.CtuTask_ProcessFinished:
                    break;
            }

        }
    }
}