Exemplo n.º 1
0
        public override void Process(object c)
        {
            var casted = H.Cast <IPlayer>(c);

            base.Process(casted);
            var visibleCities = casted.VisibleCities.ToList();

            foreach (var worldCity in casted.PlayersWorld.Cities.Collection)
            {
                if (!visibleCities.Contains(worldCity.Guid))
                {
                    if (CoordinateHelper.GetDistance(casted.X, casted.Y, worldCity.X, worldCity.Y) < worldCity.Size * 2)
                    {
                        visibleCities.Add(worldCity.Guid);
                    }
                }
            }

            casted.VisibleCities = visibleCities.ToArray();

            if (casted.IsMoving)
            {
                casted.IsMoving = !CoordinateHelper.IsInRadius(casted.X, casted.Y, casted.MoveToX, casted.MoveToY, 0.01f); // !(Math.Abs(casted.X - casted.MoveToX) < 0.01) || !(Math.Abs(casted.Y - casted.MoveToY) < 0.01);

                if (!casted.IsMoving)
                {
                    ProcessStop(casted);
                }
            }
        }
Exemplo n.º 2
0
        private ICity FindCityToEnter(IPlayer player)
        {
            foreach (var city in player.PlayersWorld.Cities.Collection)
            {
                if (player.VisibleCities.Any(c => c == city.Guid) && CoordinateHelper.IsInRadius(player.X, player.Y, city.X, city.Y, city.Size))
                {
                    return(city);
                }
            }

            return(null);
        }