Exemple #1
0
    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);
    }
Exemple #2
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++;
            }
        }
Exemple #3
0
        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;
        }
Exemple #4
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;
 }