private void MoveUser() { Coordinates <User>[] newMoveCoordinates = _usersMoveCoordinatesOut.ToArray(); _usersMoveCoordinatesOut.Clear(); for (int i = 0; i < newMoveCoordinates.Length; i++) { if (_users.ContainsKey(newMoveCoordinates[i].Model.Id)) { CalculateCoordinates.CalculateCoef(newMoveCoordinates[i], _usersCoordinates.GetValueOrDefault(newMoveCoordinates[i].Model.Id)); if (_usersMoveCoordinates.ContainsKey(newMoveCoordinates[i].Model.Id)) { _usersMoveCoordinates.Remove(newMoveCoordinates[i].Model.Id); } _usersMoveCoordinates.Add(newMoveCoordinates[i].Model.Id, newMoveCoordinates[i]); } } foreach (var userMoveCoord in _usersMoveCoordinates) { var userCoord = _usersCoordinates.GetValueOrDefault(userMoveCoord.Key); if (DateTime.Now > userCoord.TimeOffset) { CalculateCoordinates.CalculatePosition(userCoord, userMoveCoord.Value, _map.MoveDistance); CalculateCoordinates.CheckBorder(userCoord, userMoveCoord.Value); Console.WriteLine($"user {_users.GetValueOrDefault(userMoveCoord.Key).Name} coord x - {userCoord.x}, y {userCoord.y}"); } } }
private void MoveMonsterObjects() { foreach (var monsterCoord in _monstersCoordinates) { Coordinates <Monster> moveMonsterCoord; if (!_monstersMoveCoordinates.TryGetValue(monsterCoord.Key, out moveMonsterCoord)) { //генерим новую точку и считаем переменные направления Coordinates <Monster> moveCoord = new Coordinates <Monster>(); CalculateCoordinates.GenerateNewMoveCoord(monsterCoord.Value, moveCoord, _map.Width, _map.Height); _monstersMoveCoordinates.Add(monsterCoord.Key, moveCoord); } else { if (DateTime.Now > monsterCoord.Value.TimeOffset) { CalculateCoordinates.CalculatePosition(monsterCoord.Value, moveMonsterCoord, _map.MoveDistance); if (CalculateCoordinates.CheckBorder(monsterCoord.Value, moveMonsterCoord)) { CalculateCoordinates.GenerateNewMoveCoord(monsterCoord.Value, moveMonsterCoord, _map.Width, _map.Height); } Console.WriteLine($"Mapid - {_map.Id} Monster {_monsters.GetValueOrDefault(monsterCoord.Key).Name} coord x - {monsterCoord.Value.x}, y - {monsterCoord.Value.y}"); } } } }
public void GetMoves() { try { Coordinates<User>[] moveCurrentUserCoords = _usersMoveCoordinatesBlockingCollection.ToArray(); foreach (Coordinates<User> moveCurrentUserCoord in moveCurrentUserCoords) { if (moveCurrentUserCoord != null) { _usersCoordinates.TryGetValue(moveCurrentUserCoord.Model.Id, out var currentUserCoor); CalculateCoordinates.CalculateCoef(moveCurrentUserCoord, currentUserCoor); _usersMoveCoordinates.Add(moveCurrentUserCoord.Model.Id, moveCurrentUserCoord); } } } catch (InvalidOperationException) { } }
public void Distance(double lat1, double lon1, double lat2, double lon2, int fact) { var value = CalculateCoordinates.DistanceInKmBetweenEarthCoordinates(lat1, lon1, lat2, lon2); Assert.Equal(fact, (int)value); }