public int Swap(int x1, int y1, int x2, int y2) { if (AreCellsNearby(x1, y1, x2, y2)) { Field fieldCopy = new Field(fieldSize, ballTypes); fieldCopy.grid = grid.Clone() as Element[, ]; Element bufferEl = fieldCopy.grid[x1, y1]; fieldCopy.grid[x1, y1] = fieldCopy.grid[x2, y2]; fieldCopy.grid[x2, y2] = bufferEl; fieldCopy.CheckCoincedence(); if (fieldCopy.IsAnyLineExist()) { bufferEl = grid[x1, y1]; grid[x1, y1] = grid[x2, y2]; grid[x2, y2] = bufferEl; } int points = CheckCoincedence(); FallElements(); points += FillUpByBalls(); CheckDeadLock(); return(points); } return(0); }
private void SaveResult() { saveTableArray.Add((Element[, ])C.Clone()); Csave = new Object[saveTableArray.Count]; int x = 0; foreach (var item in saveTableArray) { Csave[x] = item; x++; } saveTableU.Add((int[])U.Clone()); saveTableV.Add((int[])V.Clone()); Usave = new Object[saveTableU.Count]; Vsave = new Object[saveTableV.Count]; x = 0; foreach (var item in saveTableU) { Usave[x] = item; x++; } x = 0; foreach (var item in saveTableV) { Vsave[x] = item; x++; } }
public void GetElements(Element[,] elements) { LevelManager lvlManager = LevelManager.instance; GameObject effect = lvlManager.levels[lvlManager.loadedLevelNum].GameEffect; if (effect != null && (gameEffect == null || gameEffectSource.Equals(effect) == false)) { if (gameEffect != null) { Destroy(gameEffect); } gameEffect = Instantiate(effect, Vector3.zero, Quaternion.identity); gameEffectSource = effect; } this.elements = elements; elementsCopy = elements.Clone() as Element[, ]; width = CS.Width; height = CS.Height; marginHorizontal = CS.MarginHorizontal; elementScale = CS.ElementScale; unitsOnHorizontal = CS.UnitsOnHorizontal; steps4win = lvlManager.levels[lvlManager.loadedLevelNum].Steps; blockControl = false; steps = 0; }
public void ReloadLevel() { elements = elementsCopy.Clone() as Element[, ]; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (elements[i, j] == null) { continue; } elements[i, j].Destroy = false; elements[i, j].transform.position = CS.GetPosition(i, j); elements[i, j].spriteRenderer.sortingOrder = CS.GetSortingOrder(i, j); if (elements[i, j].transform.gameObject.activeInHierarchy == false) { elements[i, j].transform.gameObject.SetActive(true); } } } blockControl = false; steps = 0; }