async Task ExecuteLoadDestinationsCommand() { if (IsBusy) { return; } IsBusy = true; try { Destinations.Clear(); var destinations = await DestData.GetDestinationsAsync(true); Destinations.ReplaceRange(destinations); } catch (Exception ex) { Debug.WriteLine(ex); MessagingCenter.Send(new MessagingCenterAlert { Title = "Error", Message = "Unable to load items.", Cancel = "OK" }, "message"); } finally { IsBusy = false; } }
private bool CheckForTargetDestination() { targetDestos.Clear(); Vector2Int startCoord = new Vector2Int((int)currentNode.GridPosition.x - lookRadius, (int)currentNode.GridPosition.y - lookRadius); Vector2Int endCoord = new Vector2Int((int)currentNode.GridPosition.x + lookRadius, (int)currentNode.GridPosition.y + lookRadius); for (int x = startCoord.x; x < endCoord.x; x++) { for (int y = startCoord.y; y < endCoord.y; y++) { int tmpX = x; int tmpY = y; if (x < 0) { tmpX = (int)GridController.Instance.worldSize.x - 1 + x; } if (y < 0) { tmpY = (int)GridController.Instance.worldSize.y - 1 + y; } if (x >= (int)GridController.Instance.worldSize.x) { tmpX = x % (int)GridController.Instance.worldSize.x; } if (y >= (int)GridController.Instance.worldSize.y) { tmpY = y % (int)GridController.Instance.worldSize.y; } // Debug.Log(tmpX + " : " + tmpY); Node tmpTile = GridController.Instance.tiles[tmpX, tmpY]; if (tmpTile.TileState == TileScript.TileStates.Trees) { DestData tmpData = new DestData(); tmpData.node = tmpTile; tmpData.distance = Vector2.SqrMagnitude(new Vector2(Mathf.Abs(x - currentNode.GridPosition.x), Mathf.Abs(y - currentNode.GridPosition.y))); targetDestos.Add(tmpData); } } } if (targetDestos.Count > 0) { targetDestos.Sort(); return(true); } else { return(false); } }