Пример #1
0
        public void AssignAverageSpawnpoint()
        {
            if (Spawnpoints.Count < 2 || Spawnpoints.Any(x => x.IsAverage))
            {
                return;
            }

            var averageX = Spawnpoints.Sum(x => x.X) / Spawnpoints.Count;
            var averageY = Spawnpoints.Sum(x => x.Y) / Spawnpoints.Count;
            var averageZ = Spawnpoints.Sum(x => x.Z) / Spawnpoints.Count;

            var order = Spawnpoints.OrderBy(x => x.Index).ThenBy(x => x.Time);

            var spawnpoint = order.FirstOrDefault(x => x.O != 0f);

            if (spawnpoint == null)
            {
                spawnpoint = order.FirstOrDefault();
            }

            var o = spawnpoint.O;

            var nearest          = Spawnpoints.OrderBy(x => x.Distance(averageX, averageY, averageZ)).First();
            var farthestDistance = Spawnpoints.Select(x => x.Distance(averageX, averageY, averageZ)).Max();

            nearest.IsAverage = true;
            nearest.EstimatedSpawnDistance = farthestDistance;
        }
Пример #2
0
 private void Start()
 {
     spawningTimer = spawningTime;
     sp_Points     = new List <Spawnpoints>();
     for (int i = 0; i < spawnpoints.Length; i++)
     {
         Spawnpoints sp = new Spawnpoints();
         sp_Points.Add(sp);
         sp_Points[i].point = spawnpoints[i];
     }
 }
Пример #3
0
        // Set number of portals with
        private void SetupSpawnPoints(int count)
        {
            if (Spawnpoints.Count > 0)
            {
                Spawnpoints.Clear();
            }

            for (int i = 0; i < count; i++)
            {
                Spawnpoints.Add(new Point(random.Next(200, Game1.SCREENWIDTH - 199), random.Next(200, Game1.SCREENHEIGHT - 199)));
            }
        }
Пример #4
0
        public Task <List <Spawnpoints> > GetNearestSpawnpointsAsync(double latitude, double longitude)
        {
            return(EntityFrameworkQueryableExtensions.ToListAsync <Spawnpoints>(Spawnpoints.FromSql($@"
SELECT s.* FROM spawnpoints AS s INNER JOIN (
SELECT id, (
	6371 * 1000 * 
	acos(cos(radians({latitude})) *
	cos(radians(lat)) *
	cos(radians(lon) - radians({longitude})) +
	sin(radians({latitude})) *
	sin(radians(lat))) 
) AS distance_in_m
FROM spawnpoints
HAVING distance_in_m < 100
ORDER BY distance_in_m  ASC
) AS f on s.id = f.id
")));
        }
Пример #5
0
        public void AssignAverageWaitTime()
        {
            if (Spawnpoints.Count < 2 || Spawnpoints.All(x => x.WaitTime != 0))
            {
                return;
            }

            var order = Spawnpoints.OrderBy(x => x.Index).ThenBy(x => x.Time).GroupBy(x => x.Time);

            var waittimes = new List <int>();

            var array = order.Select(x => x.First()).ToArray();

            for (var i = 0; i < array.Length; i++)
            {
                if (i + 1 < array.Length)
                {
                    var ms = (int)(array[i + 1].Time - array[i].Time).TotalMilliseconds;
                    waittimes.Add(ms);
                    array[i + 1].WaitTime = ms;
                }
            }

            var average = 0;

            if (waittimes.Count > 0)
            {
                average = waittimes.Sum() / waittimes.Count;
            }

            for (var i = 0; i < array.Length; i++)
            {
                if (i + 1 < array.Length)
                {
                    array[i + 1].WaitTime = average;
                }
            }
        }
Пример #6
0
 private void Awake()
 {
     sp_Single = this;
 }
Пример #7
0
 public void OnEnable()
 {
     target_SpawnPoints = (Spawnpoints)target;
 }
 public void Start()
 {
     SP = gameObject.GetComponent <Spawnpoints>();
     Instantiate(PlayerPrefab, SP.SpawnpointsList[0].transform.position, SP.SpawnpointsList[0].transform.rotation);
 }
Пример #9
0
        public Task <Spawnpoints> GetNearestSpawnpointAsync(double latitude, double longitude)
        {
            return(EntityFrameworkQueryableExtensions.FirstOrDefaultAsync <Spawnpoints>(Spawnpoints.FromSql($@"
SELECT * FROM spawnpoints
 WHERE id IN 
 (
  SELECT id FROM
  (
   SELECT id, despawn_time, IFNULL(duration, 30), lat, lon, 111.045 * DEGREES(ACOS(COS(RADIANS({latitude}))
   * COS(RADIANS(lat))
   * COS(RADIANS(lon) - RADIANS({longitude}))
   + SIN(RADIANS({latitude}))
   * SIN(RADIANS(lat)))) 
   AS distance_in_km
   FROM spawnpoints
   ORDER BY distance_in_km ASC
  ) AS temp WHERE distance_in_km < 0.1
 )
 LIMIT 0,1")));
        }