Ejemplo n.º 1
0
 public bool IsRockMineAble(MiningObject rock) => IsRockMineAbleAt(rock.X, rock.Y);
Ejemplo n.º 2
0
 public bool MineRock(MiningObject rock, string axe)
 {
     _minedRocks.Add(rock);
     return(MineRockAt(rock.X, rock.Y, axe));
 }
Ejemplo n.º 3
0
        public bool MineMultipleColoredRocks(string axe, string[] colors, bool waitForRocks = false)
        {
            try
            {
                if (IsAnyMineAbleRock())
                {
                    var tempRocks    = Rocks.ToList().FindAll(r => !_minedRocks.Contains(r));
                    var coloredRocks = new List <MiningObject>();
                    foreach (var rock in tempRocks)
                    {
                        if (rock.IsGoldMember == Bot.Game.IsGoldMember && IsRockMineAble(rock) &&
                            colors.ToList().Contains(rock.Color))
                        {
                            coloredRocks.Add(rock);
                        }
                        else if (IsRockMineAble(rock) && colors.ToList().Contains(rock.Color))
                        {
                            coloredRocks.Add(rock);
                        }
                    }

                    if (coloredRocks.Count > 0)
                    {
                        _lastRock = FindClosestRock(coloredRocks);
                        if (_lastRock != null)
                        {
                            MineRock(_lastRock, axe);
                            return(true);
                        }
                    }

                    _minedRocks.Clear();

                    if (!IsColoredRocksMineable(colors))
                    {
                        int delay = 0;
                        if (colors.Contains("Red"))
                        {
                            _delayIfNoRockMineable.Set(30000);
                            delay = 30000;
                        }
                        else if (colors.Contains("Blue"))
                        {
                            _delayIfNoRockMineable.Set(30000);
                            delay = 30000;
                        }
                        else if (colors.Contains("Green"))
                        {
                            _delayIfNoRockMineable.Set(30000);
                            delay = 30000;
                        }
                        else if (colors.Contains("Prism"))
                        {
                            _delayIfNoRockMineable.Set(60000);
                            delay = 60000;
                        }
                        else if (colors.Contains("Pale"))
                        {
                            _delayIfNoRockMineable.Set(60000);
                            delay = 60000;
                        }
                        else if (colors.Contains("Dark"))
                        {
                            _delayIfNoRockMineable.Set(180000);
                            delay = 180000;
                        }
                        else if (colors.Contains("Rainbow"))
                        {
                            _delayIfNoRockMineable.Set(180000);
                            delay = 180000;
                        }
                        Bot.PrintLogMessage($"There is no specific colored mine able rocks. Waiting for {TimeSpan.FromMilliseconds(delay).FormatTimeString()}");
                    }
#if DEBUG
                    Rocks.ToList().FindAll(r => colors.Contains(r.Color)).ForEach(r =>
                                                                                  Console.WriteLine($"Is Mineable {r.Color}({r.X}, {r.Y}): {IsRockMineAble(r)}"));
                    Rocks.ToList().ForEach(r =>
                                           Console.WriteLine($"Is Mineable {r.Color}({r.X}, {r.Y}): {IsRockMineAble(r)}"));
#endif
                }
                if (Bot.Game.HasItemName(axe) && waitForRocks)
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            return(false);
        }