// using System.Collections; // using System.Collections.Generic; // using TMPro; // using UnityEngine; // using Enums; // // public class SC_GameLogic : MonoBehaviour // { // private Dictionary unityObjects; //this is a dictionary of all game objects in the scene // private int score = 0; //current score // private float displayScore = 0; //for animation, i think // private GameBoard gameBoard; //game board object // private GameState currentState = GameState.Move; //current game state // public GameState CurrentState { get { return this.currentState; } } // // #region MonoBehaviour // private void Awake() // { // Init(); // } // // private void Start() // { // StartGame(); // } // // private void Update() // { // this.displayScore = Mathf.Lerp(this.displayScore, this.gameBoard.Score, SC_GameVariables.Instance.scoreSpeed * Time.deltaTime); // this.unityObjects["Txt_Score"].GetComponent().text = this.displayScore.ToString("0"); // } // #endregion // // #region Logic // private void Init() // { // this.unityObjects = new Dictionary(); // GameObject[] _obj = GameObject.FindGameObjectsWithTag("UnityObject"); // foreach (GameObject g in _obj) this.unityObjects.Add(g.name,g); // // this.gameBoard = new GameBoard(7, 7); // Setup(); // } // // //GameBoardService // private void Setup() // { // for (int x = 0; x < this.gameBoard.Width; x++) // for (int y = 0; y < this.gameBoard.Height; y++) // { // Vector2 _pos = new Vector2(x, y); // GameObject _bgTile = Instantiate(SC_GameVariables.Instance.bgTilePrefabs, _pos, Quaternion.identity); // _bgTile.transform.SetParent(this.unityObjects["GemsHolder"].transform); // _bgTile.name = "BG Tile - " + x + ", " + y; // // int _gemToUse = Random.Range(0, SC_GameVariables.Instance.gems.Length); // // int iterations = 0; // while (this.gameBoard.MatchesAt(new Vector2Int(x, y), SC_GameVariables.Instance.gems[_gemToUse]) && iterations < 100) // { // _gemToUse = Random.Range(0, SC_GameVariables.Instance.gems.Length); // iterations++; // } // SpawnGem(new Vector2Int(x, y), SC_GameVariables.Instance.gems[_gemToUse]); // } // } // public void StartGame() // { // this.unityObjects["Txt_Score"].GetComponent().text = this.score.ToString("0"); // } // // //GameBoardService // private void SpawnGem(Vector2Int _Position, SC_Gem _GemToSpawn) // { // if (Random.Range(0, 100f) < SC_GameVariables.Instance.bombChance) // _GemToSpawn = SC_GameVariables.Instance.bomb; // // SC_Gem _gem = Instantiate(_GemToSpawn, new Vector3(_Position.x, _Position.y + SC_GameVariables.Instance.dropHeight, 0f), Quaternion.identity); // _gem.transform.SetParent(this.unityObjects["GemsHolder"].transform); // _gem.name = "Gem - " + _Position.x + ", " + _Position.y; // this.gameBoard.SetGem(_Position.x,_Position.y, _gem); // _gem.SetupGem(this,_Position); // } // // //GameBoardService // public void SetGem(int _X,int _Y, SC_Gem _Gem) // { // this.gameBoard.SetGem(_X,_Y, _Gem); // } // // //GameBoardService // public SC_Gem GetGem(int _X, int _Y) // { // return this.gameBoard.GetGem(_X, _Y); // } // public void SetState(GameState _CurrentState) // { // this.currentState = _CurrentState; // } // // //GameBoardService // public void DestroyMatches() // { // for (int i = 0; i < this.gameBoard.CurrentMatches.Count; i++) // if (this.gameBoard.CurrentMatches[i] != null) // { // ScoreCheck(this.gameBoard.CurrentMatches[i]); // DestroyMatchedGemsAt(this.gameBoard.CurrentMatches[i].posIndex); // } // // StartCoroutine(DecreaseRowCo()); // } // // //I think, this moves gems down after a match? // //MoveGemsDown // //GameBoardService // private IEnumerator DecreaseRowCo() // { // yield return new WaitForSeconds(.2f); // // int nullCounter = 0; // for (int x = 0; x < this.gameBoard.Width; x++) // { // for (int y = 0; y < this.gameBoard.Height; y++) // { // SC_Gem _curGem = this.gameBoard.GetGem(x, y); // if (_curGem == null) // { // nullCounter++; // } // else if (nullCounter > 0) // { // _curGem.posIndex.y -= nullCounter; // SetGem(x, y - nullCounter, _curGem); // SetGem(x, y, null); // } // } // nullCounter = 0; // } // // StartCoroutine(FilledBoardCo()); // } // // //IScoreService // public void ScoreCheck(SC_Gem gemToCheck) // { // this.gameBoard.Score += gemToCheck.scoreValue; // } // // //GameBoardService - DestroyMatchedGems // private void DestroyMatchedGemsAt(Vector2Int _Pos) // { // SC_Gem _curGem = this.gameBoard.GetGem(_Pos.x,_Pos.y); // if (_curGem != null) // { // Instantiate(_curGem.destroyEffect, new Vector2(_Pos.x, _Pos.y), Quaternion.identity); // // Destroy(_curGem.gameObject); // SetGem(_Pos.x,_Pos.y, null); // } // } // // //GameBoardService - FillBoard // // private IEnumerator FilledBoardCo() // { // yield return new WaitForSeconds(0.5f); // RefillBoard(); // yield return new WaitForSeconds(0.5f); // this.gameBoard.FindAllMatches(); // if (this.gameBoard.CurrentMatches.Count > 0) // { // yield return new WaitForSeconds(0.5f); // DestroyMatches(); // } // else // { // yield return new WaitForSeconds(0.5f); // this.currentState = GameState.Move; // } // } // // //GameBoardService // private void RefillBoard() // { // for (int x = 0; x < this.gameBoard.Width; x++) // { // for (int y = 0; y < this.gameBoard.Height; y++) // { // SC_Gem _curGem = this.gameBoard.GetGem(x,y); // if (_curGem == null) // { // int gemToUse = Random.Range(0, SC_GameVariables.Instance.gems.Length); // SpawnGem(new Vector2Int(x, y), SC_GameVariables.Instance.gems[gemToUse]); // } // } // } // CheckMisplacedGems(); // } // //gets all gem game objects // //if the gem is not in GameBoard, destroy it // private void CheckMisplacedGems() // { // List foundGems = new List(); // foundGems.AddRange(FindObjectsOfType()); // for (int x = 0; x < this.gameBoard.Width; x++) // { // for (int y = 0; y < this.gameBoard.Height; y++) // { // SC_Gem _curGem = this.gameBoard.GetGem(x, y); // if (foundGems.Contains(_curGem)) // foundGems.Remove(_curGem); // } // } // // foreach (SC_Gem g in foundGems) // Destroy(g.gameObject); // } // public void FindAllMatches() // { // this.gameBoard.FindAllMatches(); // } // // #endregion // }