void Awake() { gems = new List <GameObject> { RedGem, GreenGem, YellowGem, PurpleGem, BlueGem, CrystalGem }; grid = new GemGrid(numberOfRows, numberOfColumns); RegenerateGrid(); }
public void RegenerateGrid() { InitialGridGenerationFinished = false; GridReady = false; DestroyGridContent(); grid = new GemGrid(numberOfRows, numberOfColumns); explodeGridPointsCoroutine = ExplodeAdjacentNeighbors(explodingCheckRate); PopulateGridWithRandomGems(numberOfRows, numberOfColumns); StopCoroutine(explodeGridPointsCoroutine); StartCoroutine(explodeGridPointsCoroutine); }
private void Awake() { _grid = new GemGrid(WIDTH, HEIGHT, _cellSize, _gemPrefab, _slots, this); _gemsTypesDict = new Dictionary <int, GemTypeSO>(); foreach (var gemType in _gemTypes) { _gemsTypesDict.Add(gemType.Type, gemType); } }
private void Start() { _grid = GetComponent <GemGrid>(); _finder = GetComponent <MatchFinder>(); _camera = Camera.main; _shuffleSound = GetComponent <AudioSource>(); _roundController = FindObjectOfType <RoundController>(); InitialSpawn(); ClearGemSelection(); SetBusy(false); }
public void SetLevelSO(LevelSO levelSO) { this.levelSO = levelSO; gridWidth = levelSO.width; gridHeight = levelSO.height; grid = new Grid <GemGridPosition>(gridWidth, gridHeight, 1f, Vector3.zero, (Grid <GemGridPosition> g, int x, int y) => new GemGridPosition(g, x, y)); // Initialize Grid for (int x = 0; x < gridWidth; x++) { for (int y = 0; y < gridHeight; y++) { // Get Saved LevelGridPosition LevelSO.LevelGridPosition levelGridPosition = null; foreach (LevelSO.LevelGridPosition tmpLevelGridPosition in levelSO.levelGridPositionList) { if (tmpLevelGridPosition.x == x && tmpLevelGridPosition.y == y) { levelGridPosition = tmpLevelGridPosition; break; } } if (levelGridPosition == null) { // Couldn't find LevelGridPosition with this x, y! Debug.LogError("Error! Null!"); } GemSO gem = levelGridPosition.gemSO; GemGrid gemGrid = new GemGrid(gem, x, y); grid.GetGridObject(x, y).SetGemGrid(gemGrid); grid.GetGridObject(x, y).SetHasGlass(levelGridPosition.hasGlass); } } score = 0; moveCount = levelSO.moveAmount; OnLevelSet?.Invoke(this, new OnLevelSetEventArgs { levelSO = levelSO, grid = grid }); }
public void SwapGridPositions(int startX, int startY, int endX, int endY) { if (!IsValidPosition(startX, startY) || !IsValidPosition(endX, endY)) { return; // Invalid Position } if (startX == endX && startY == endY) { return; // Same Position } GemGridPosition startGemGridPosition = grid.GetGridObject(startX, startY); GemGridPosition endGemGridPosition = grid.GetGridObject(endX, endY); GemGrid startGemGrid = startGemGridPosition.GetGemGrid(); GemGrid endGemGrid = endGemGridPosition.GetGemGrid(); startGemGrid.SetGemXY(endX, endY); endGemGrid.SetGemXY(startX, startY); startGemGridPosition.SetGemGrid(endGemGrid); endGemGridPosition.SetGemGrid(startGemGrid); }
public void SpawnNewMissingGridPositions() { for (int x = 0; x < gridWidth; x++) { for (int y = 0; y < gridHeight; y++) { GemGridPosition gemGridPosition = grid.GetGridObject(x, y); if (gemGridPosition.IsEmpty()) { GemSO gem = levelSO.gemList[UnityEngine.Random.Range(0, levelSO.gemList.Count)]; GemGrid gemGrid = new GemGrid(gem, x, y); gemGridPosition.SetGemGrid(gemGrid); OnNewGemGridSpawned?.Invoke(gemGrid, new OnNewGemGridSpawnedEventArgs { gemGrid = gemGrid, gemGridPosition = gemGridPosition, }); } } } }
public void Setup(GemGrid grid, int index) { _parentGrid = grid; ListIndex = index; }
private void Start() { _grid = GetComponent <GemGrid>(); }
public void ClearGemGrid() { gemGrid = null; }
public void SetGemGrid(GemGrid gemGrid) { this.gemGrid = gemGrid; grid.TriggerGridObjectChanged(x, y); }
public void SetLevelSO(LevelSO levelSO) { this.levelSO = levelSO; gridWidth = levelSO.width; gridHeight = levelSO.height; grid = new Grid <GemGridPosition>(gridWidth, gridHeight, 1f, Vector3.zero, (Grid <GemGridPosition> g, int x, int y) => new GemGridPosition(g, x, y)); // Initialize Grid for (int x = 0; x < gridWidth; x++) { for (int y = 0; y < gridHeight; y++) { // Get Saved LevelGridPosition LevelSO.LevelGridPosition levelGridPosition = null; foreach (LevelSO.LevelGridPosition tmpLevelGridPosition in levelSO.levelGridPositionList) { if (tmpLevelGridPosition.x == x && tmpLevelGridPosition.y == y) { levelGridPosition = tmpLevelGridPosition; break; } } if (levelGridPosition == null) { // Couldn't find LevelGridPosition with this x, y! Debug.LogError("Error! Null!"); } GemSO gem = levelGridPosition.gemSO; GemGrid gemGrid = new GemGrid(gem, x, y); grid.GetGridObject(x, y).SetGemGrid(gemGrid); grid.GetGridObject(x, y).SetHasGlass(levelGridPosition.hasGlass); } } if (randomGlass.enabled) { // Remove all glass for (int x = 0; x < gridWidth; x++) { for (int y = 0; y < gridHeight; y++) { grid.GetGridObject(x, y).SetHasGlass(false); } } // Add Random Glass while (GetGlassAmount() < randomGlass.glassAmount) { int glassX = UnityEngine.Random.Range(0, gridWidth); int glassY = UnityEngine.Random.Range(0, gridHeight); grid.GetGridObject(glassX, glassY).SetHasGlass(true); } } score = 0; moveCount = levelSO.moveAmount; OnLevelSet?.Invoke(this, new OnLevelSetEventArgs { levelSO = levelSO, grid = grid }); }