示例#1
0
文件: Moving.cs 项目: Bia10/boogiebot
        public MoveResult move()
        {
            if (GiveUpIfUnsafe) // fixme
            {
                //if (!pather.IsItSafeAt(Me.Target, Me.Location))
                //    return MoveResult.Unsafe;
            }
            if (PathTimeout.IsReady)
            {
                MoveAlong = null;
            }
            BoogieCore.Log(LogType.System, "[Mover] MoveAlong = {0}", MoveAlong);
            if (MoveAlong == null)
            {
                Location from = new Location(Me.Location);
                mover.Stop();
                Path path = world.CreatePath(from, target, (float)4.5, PPather.radar); //fixme
                PathTimeout.Reset();
                BoogieCore.Log(LogType.System, "[Mover (New)] PathCount = {0}", path.Count());
                if (path == null || path.Count() == 0)
                {
                    //Context.Log("EasyMover: Can not create path . giving up");
                    mover.MoveRandom();
                    Thread.Sleep(200);
                    mover.Stop();
                    return(MoveResult.CantFindPath);
                }
                else
                {
                    //Context.Log("Save path to " + pathfile);
                    //path.Save(pathfile);
                    MoveAlong = new MoveAlonger(pather, path);
                }
            }

            if (MoveAlong != null)
            {
                Location from = new Location(Me.Location);
                BoogieCore.Log(LogType.System, "[Mover ] PathCount = {0}", MoveAlong.path.Count());

                if (MoveAlong.path.Count() == 0 || from.GetDistanceTo(target) < (float)5.0)
                {
                    BoogieCore.Log(LogType.System, "[Mover] Count = 0 or Dist < 5.0");
                    MoveAlong = null;
                    mover.Stop();
                    return(MoveResult.GotThere);
                }
                else if (!MoveAlong.MoveAlong())
                {
                    BoogieCore.Log(LogType.System, "[Mover] Stuck!!");
                    MoveAlong = null; // got stuck!
                    if (GiveUpIfStuck)
                    {
                        return(MoveResult.Stuck);
                    }
                }
            }
            return(MoveResult.Moving);
        }
示例#2
0
        public MoveResult move(double howClose)
        {
            if (GiveUpIfUnsafe)
            {
                if (!pather.IsItSafeAt(Me.Target, Me.Location))
                {
                    return(MoveResult.Unsafe);
                }
            }
            if (PathTimeout.IsReady)
            {
                MoveAlong = null;
            }
            if (MoveAlong == null)
            {
                Location from = new Location(Me.Location);
                mover.Stop();
                Path path = world.CreatePath(from, target, (float)howClose, PPather.radar);
                PathTimeout.Reset();
                if (path == null || path.Count() == 0)
                {
                    PPather.WriteLine("EasyMover: Can not create path . giving up");
                    mover.MoveRandom();
                    Thread.Sleep(200);
                    mover.Stop();
                    return(MoveResult.CantFindPath);
                }
                else
                {
                    //PPather.WriteLine("Save path to " + pathfile);
                    //path.Save(pathfile);
                    MoveAlong = new MoveAlonger(pather, path);
                }
            }

            if (MoveAlong != null)
            {
                Location from = new Location(Me.Location);

                if (MoveAlong.path.Count() == 0 || from.GetDistanceTo(target) < howClose)
                {
                    //PPather.WriteLine("Move along used up");
                    MoveAlong = null;
                    mover.Stop();
                    return(MoveResult.GotThere);
                }
                else if (!MoveAlong.MoveAlong())
                {
                    MoveAlong = null;                     // got stuck!
                    if (GiveUpIfStuck)
                    {
                        return(MoveResult.Stuck);
                    }
                }
            }
            return(MoveResult.Moving);
        }