public void UpdateGrid(TetrominoLogic tetrominoLogic) { for (int y = 0; y < GridHeight; ++y) { for (int x = 0; x < GridWidth; ++x) { if (Grid[x, y] != null) { if (Grid[x, y].parent == tetrominoLogic.transform) { Grid[x, y] = null; } } } } foreach (Transform square in tetrominoLogic.transform) { Vector2 pos = Round(square.position); if (pos.y < GridHeight) { Grid[(int)pos.x, (int)pos.y] = square; } } }
private DataColor AddEntry(TetrominoLogic tetrominoLogic) { GameObject newTetromino = (GameObject)Resources.Load(ManagerTetroGame.I.TetrominoPrefabsPath + "/" + tetrominoLogic.NameTetromino, typeof(GameObject)); TetraminoListAll.Add(newTetromino.GetComponent <TetrominoLogic>()); var color = DataColor.CreateInstance <DataColor>(); color.RandomizeColor(); TetraminoColors.Add(color); return(color); }
public float GetTetrominoProbability(TetrominoLogic tetrominoLogic) { int index = TetraminoListAll.FindIndex(x => x.NameTetromino == tetrominoLogic.NameTetromino); if (index == -1 || TetraminoProbability.Count < index - 1) { Debug.LogWarning("Not all Tetromino listed in current TetrominoProbability data source", this); return(1.0f); } else { return(TetraminoProbability[index]); } }
private bool CheckRowAboveGrid(TetrominoLogic tetromino) { for (int x = 0; x < GridWidth; ++x) { foreach (Transform square in tetromino.transform) { Vector2 pos = Round(square.position); if (pos.y > GridHeight - 1) { return(true); } } } return(false); }
public void ProcessTetraminoDown(TetrominoLogic tetramino) { TryDeleteRow(); if (CheckRowAboveGrid(tetramino)) { GameLost(); } CurrentTetromino = null; SpawnTetromino(); RemoveTetrominoFromListSpawnedAll(); RemoveTetrominoFromListSpawnedTraced(); }
private void SpawnTetromino() { if (!Spawning) { return; } GameObject tetromino = (GameObject)Resources.Load(TetrominoPrefabsPath + "/" + RandomizeTetromino().NameTetromino, typeof(GameObject)); TetrominoSpawnPos = new Vector2Int(GridWidth / 2, GridHeight - 1); var tetrominoLogic = Instantiate(tetromino, new Vector2(TetrominoSpawnPos.x, TetrominoSpawnPos.y), Quaternion.identity).GetComponent <TetrominoLogic>(); tetrominoLogic.Initialize(this); TetrominoSpawnedAll.Add(tetrominoLogic); TetrominoSpawnedTraced.Add(tetrominoLogic.NameTetromino); CurrentTetromino = tetrominoLogic; }
//private void Update() //{ //} internal void Initialize(TetrominoLogic logic) { Logic = logic; _sprite = ManagerVisuals.I.GetTetrominoSprite(); _dataColor = ManagerVisuals.I.GetTetrominoColor(logic); if (_SpriteRenderers.Count == 0) { foreach (Transform square in transform) { _SpriteRenderers.Add(square.GetComponent <SpriteRenderer>()); } } foreach (var spriteRenderer in _SpriteRenderers) { spriteRenderer.sprite = _sprite; spriteRenderer.color = _dataColor.Color; } }
public DataColor GetTetrominoColor(TetrominoLogic tetrominoLogic) { int index = TetraminoListAll.FindIndex(x => x.NameTetromino == tetrominoLogic.NameTetromino); if (index == -1) { Debug.LogWarning("Not all Tetromino listed in current TetraminoColors data source", this); return(AddEntry(tetrominoLogic)); } else if (TetraminoColors.Count < index - 1) { Debug.LogWarning("Not all colors for Tetromino are listed in current TetraminoColors data source", this); TetraminoListAll.RemoveAt(index); return(AddEntry(tetrominoLogic));; } else { return(TetraminoColors[index]); } }
public DataColor GetTetrominoColor(TetrominoLogic tetrominoLogic) { return(TetrominoColors.GetTetrominoColor(tetrominoLogic)); }