/// <summary> /// From Event /// </summary> /// <param name="newGridPosition"></param> public void OnMouseGridPositionChanged(Vector2Int newGridPosition) { if (placedTowersCount >= maxTowers || TowerStore.IsTowerOnGridPosition(newGridPosition) || !HasResourcesForSelectedTower()) { return; } currentMouseGridPosition = newGridPosition; var validPath = !startPoints.Contains(newGridPosition) && IsPathValidIfWaypointIsOccupied(); // print($"This waypoint is valid to place the tower: {validPath} | mouseGridPosition: {currentMouseGridPosition}"); var activeVFX = validPath ? validGridPositionVFX : invalidGridPositionVFX; activeVFX.transform.position = newGridPosition.GridPositionToVector3(); activeVFX.Play(); if (validPath && towerShop.SelectedItem) { SpawnPreviewTower(); } else if (previewTower) { DestroyPreviewTower(); } }
private void InitializeGrid() { grid.Clear(); var waypoints = FindObjectsOfType <Waypoint>().Where(waypoint => !TowerStore.IsTowerOnGridPosition(waypoint.GridPosition)).ToList(); foreach (var waypoint in waypoints) { var position = waypoint.GridPosition; if (grid.ContainsKey(position)) { Debug.LogWarning($"Overlapping waypoint at position: {waypoint}"); continue; } grid.Add(position, waypoint); } }
public bool HasTowerMounted() { return(TowerStore.IsTowerOnGridPosition(GridPosition)); }