// using System.Collections; // using System.Collections.Generic; // using System.Linq; // using UnityEngine; // using Enums; // // //Done, moved to MatchService and GameBoard // public class GameBoard // { // // - sets size of the grid // // - handles the score // // - holds the current matches // #region Variables // // private int height = 0; // public int Height { get { return this.height; } } // // private int width = 0; // public int Width { get { return this.width; } } // // private SC_Gem[,] allGems; // // public Gem[,] AllGems { get { return allGems; } } // // private int score = 0; // public int Score // { // get { return this.score; } // set { // this.score = value; } // } // // private List currentMatches = new List(); // public List CurrentMatches { get { return this.currentMatches; } } // #endregion // // public GameBoard(int _Width, int _Height) // { // this.height = _Height; // this.width = _Width; // this.allGems = new SC_Gem[this.width, this.height]; // } // // //checks if there are 3 gems of the same type next to each other // //used during setup to avoid matches on game start // //MatchService // public bool MatchesAt(Vector2Int _PositionToCheck, SC_Gem _GemToCheck) // { // if (_PositionToCheck.x > 1) // { // if (this.allGems[_PositionToCheck.x - 1, _PositionToCheck.y].type == _GemToCheck.type && this.allGems[_PositionToCheck.x - 2, _PositionToCheck.y].type == _GemToCheck.type) // return true; // } // // if (_PositionToCheck.y > 1) // { // if (this.allGems[_PositionToCheck.x, _PositionToCheck.y - 1].type == _GemToCheck.type && this.allGems[_PositionToCheck.x, _PositionToCheck.y - 2].type == _GemToCheck.type) // return true; // } // // return false; // } // // //places the gem in the 2d array // public void SetGem(int _X, int _Y, SC_Gem _Gem) // { // this.allGems[_X, _Y] = _Gem; // } // // public SC_Gem GetGem(int _X,int _Y) // { // return this.allGems[_X, _Y]; // } // // //MatchService // public void FindAllMatches() // { // this.currentMatches.Clear(); // // for (int x = 0; x < this.width; x++) // for (int y = 0; y < this.height; y++) // { // SC_Gem currentGem = this.allGems[x, y]; // if (currentGem != null) // { // if (x > 0 && x < this.width - 1) // { // SC_Gem leftGem = this.allGems[x - 1, y]; // SC_Gem rightGem = this.allGems[x + 1, y]; // //checking no empty spots // if (leftGem != null && rightGem != null) // { // //Match // if (leftGem.type == currentGem.type && rightGem.type == currentGem.type) // { // currentGem.isMatch = true; // leftGem.isMatch = true; // rightGem.isMatch = true; // this.currentMatches.Add(currentGem); // this.currentMatches.Add(leftGem); // this.currentMatches.Add(rightGem); // } // } // } // // if (y > 0 && y < this.height - 1) // { // SC_Gem aboveGem = this.allGems[x, y - 1]; // SC_Gem bellowGem = this.allGems[x, y + 1]; // //checking no empty spots // if (aboveGem != null && bellowGem != null) // { // //Match // if (aboveGem.type == currentGem.type && bellowGem.type == currentGem.type) // { // currentGem.isMatch = true; // aboveGem.isMatch = true; // bellowGem.isMatch = true; // this.currentMatches.Add(currentGem); // this.currentMatches.Add(aboveGem); // this.currentMatches.Add(bellowGem); // } // } // } // } // } // // if (this.currentMatches.Count > 0) this.currentMatches = this.currentMatches.Distinct().ToList(); // // CheckForBombs(); // } // // public void CheckForBombs() // { // for (int i = 0; i < this.currentMatches.Count; i++) // { // SC_Gem gem = this.currentMatches[i]; // int x = gem.posIndex.x; // int y = gem.posIndex.y; // // if (gem.posIndex.x > 0) // { // if (this.allGems[x - 1, y] != null && this.allGems[x - 1, y].type == GemType.Bomb) // MarkBombArea(new Vector2Int(x - 1, y), this.allGems[x - 1, y].blastSize); // } // // if (gem.posIndex.x + 1 < this.width) // { // if (this.allGems[x + 1, y] != null && this.allGems[x + 1, y].type == GemType.Bomb) // MarkBombArea(new Vector2Int(x + 1, y), this.allGems[x + 1, y].blastSize); // } // // if (gem.posIndex.y > 0) // { // if (this.allGems[x, y - 1] != null && this.allGems[x, y - 1].type == GemType.Bomb) // MarkBombArea(new Vector2Int(x, y - 1), this.allGems[x, y - 1].blastSize); // } // // if (gem.posIndex.y + 1 < this.height) // { // if (this.allGems[x, y + 1] != null && this.allGems[x, y + 1].type == GemType.Bomb) // MarkBombArea(new Vector2Int(x, y + 1), this.allGems[x, y + 1].blastSize); // } // } // } // // public void MarkBombArea(Vector2Int bombPos, int _BlastSize) // { // string _print = ""; // for (int x = bombPos.x - _BlastSize; x <= bombPos.x + _BlastSize; x++) // { // for (int y = bombPos.y - _BlastSize; y <= bombPos.y + _BlastSize; y++) // { // if (x >= 0 && x < this.width && y >= 0 && y < this.height) // { // if (this.allGems[x, y] != null) // { // _print += "(" + x + "," + y + ")" + System.Environment.NewLine; // this.allGems[x, y].isMatch = true; // this.currentMatches.Add(this.allGems[x, y]); // } // } // } // } // // this.currentMatches = this.currentMatches.Distinct().ToList(); // } // } //