public void UpdateDisappear()
        {
            for (int i = 0; i < IndexesToDisappear.Count; i++)
            {
                if (IndexesToDisappear[i].Count == 2)
                {
                    var heartPosition = VectorUtility.MidPoints(PositionUtils.TransIndexToPosition(IndexesToDisappear[i][0]), PositionUtils.TransIndexToPosition(IndexesToDisappear[i][1]));
                    EffectViewManager.Instance.GenerateEffects("heart", heartPosition, 0.3f);
                }
                else if (IndexesToDisappear[i].Count >= 3)
                {
                    var heartPosition1 = VectorUtility.MidPoints(PositionUtils.TransIndexToPosition(IndexesToDisappear[i][0]), PositionUtils.TransIndexToPosition(IndexesToDisappear[i][1]));
                    var heartPosition2 = VectorUtility.MidPoints(PositionUtils.TransIndexToPosition(IndexesToDisappear[i][IndexesToDisappear[i].Count - 2]), PositionUtils.TransIndexToPosition(IndexesToDisappear[i][IndexesToDisappear[i].Count - 1]));
                    EffectViewManager.Instance.GenerateEffects("heart", heartPosition1, 0.3f);
                    EffectViewManager.Instance.GenerateEffects("heart", heartPosition2, 0.3f);
                }
            }

            if (IndexesToDisappear.Count > 0)
            {
                for (int i = 0; i < IndexesToDisappear.Count; i++)
                {
                    for (int j = 0; j < IndexesToDisappear[i].Count; j++)
                    {
                        var tilesPos    = PositionUtils.TransIndexToPosition(IndexesToDisappear[i][j]);
                        var tileUnitPos = PositionUtils.TransIndexToUnitPosition(IndexesToDisappear[i][j]);
                        var tile        = tiles[(int)tileUnitPos.x, (int)tileUnitPos.y];
                        EffectViewManager.Instance.GenerateEffects("vanish", tilesPos, 0.3f);
                        GameTilesViewManager.Instance.RemoveView(IndexesToDisappear[i][j]);
                        RemoveGameTile((int)tileUnitPos.x, (int)tileUnitPos.y);
                    }
                }
            }
        }
Exemple #2
0
        public void RotateCubes()
        {
            if (CubeDataManager.Instance.UpdateLock)
            {
                return;
            }

            List <int> cubeIndex = new List <int>();

            for (int i = 0; i < currentControlCubes.Length; i++)
            {
                cubeIndex.Add(currentControlCubes[i].GetComponent <GameTileView>().Index);
            }

            for (int i = 0; i < currentControlCubes.Length; i++)
            {
                int newIndex = 0;

                if (i == 0)
                {
                    newIndex = cubeIndex[cubeIndex.Count - 1];
                }
                else
                {
                    newIndex = cubeIndex[i - 1];
                }

                GameTileView view = currentControlCubes[i].GetComponent <GameTileView>();
                view.UpdateTartgetPosition(VectorUtility.MinusPosition(PositionUtils.TransIndexToPosition(view.Index), PositionUtils.TransIndexToPosition(newIndex)));
                view.Index = newIndex;
            }

            changeDirectBufferTime = 0;
        }
Exemple #3
0
        bool CheckCubeMoveable(Vector3 moveDirect)
        {
            for (int i = 0; i < currentControlCubes.Length; i++)
            {
                var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(currentControlCubes[i].GetComponent <GameTileView>().Index), moveDirect);

                if (newPos.x < 0 || newPos.x >= sizeX || newPos.y < 0)
                {
                    return(false);
                }

                if (newPos.y < sizeY && !CubeDataManager.Instance.IsEmpty((int)newPos.x, (int)newPos.y))
                {
                    return(false);
                }
            }
            return(true);
        }
Exemple #4
0
        public bool UpdateMoveCubeWithUnitTime()
        {
            if (CubeDataManager.Instance.UpdateLock)
            {
                return(false);
            }

            if (CheckCubeMoveable(Vector3.down))
            {
                foreach (var cube in currentControlCubes)
                {
                    var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(cube.GetComponent <GameTileView>().Index), Vector3.down);
                    cube.GetComponent <GameTileView>().UpdatePositionByIndex(cube.GetComponent <GameTileView>().Index, PositionUtils.TransUnitPositionToIndex(newPos));
                }

                return(true);
            }

            return(false);
        }
Exemple #5
0
        public bool MoveCube(Vector3 moveDirect)
        {
            if (CubeDataManager.Instance.UpdateLock)
            {
                return(false);
            }

            if (CheckCubeMoveable(moveDirect))
            {
                foreach (var cube in currentControlCubes)
                {
                    var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(cube.GetComponent <GameTileView>().Index), moveDirect);
                    cube.GetComponent <GameTileView>().UpdateTartgetPosition(PositionUtils.TransUnitPositionToPosition(moveDirect));
                    cube.GetComponent <GameTileView>().Index = PositionUtils.TransUnitPositionToIndex(newPos);
                }

                changeDirectBufferTime = 0;

                return(true);
            }

            return(false);
        }