Ejemplo n.º 1
0
        public override void Initialize(List <Grid <int> > initialPieceLayouts)
        {
            base.Start();

            level          = 1;
            chain          = 0;
            multiplier     = 1;
            turnsToLevelUp = level + 9;
            gracePeriod    = 4f;
            multiplierBonusDecreasePeriod = 1f;
            bonusBarTimer    = 0;
            hintTimer        = TIME_TILL_HINT;
            timerGo          = false;
            normalPiece      = new LayoutDTO();
            complicatedPiece = new LayoutDTO();

            Board.Instance.Initialize(GameControl.Instance.mainCamera, GameControl.Instance.GameplayBounds, 5, 5);

            var complicationPreviewPrefab     = Resources.Load <GameObject>("Prefabs/Complication Preview");
            var complicationPreviewGameObject = Instantiate(complicationPreviewPrefab) as GameObject;

            complicationPreview = complicationPreviewGameObject.GetComponent <ComplicationPreview>();
            int chosenIndex = Mathf.FloorToInt(UnityEngine.Random.Range(0, 6));

            ComplicateNextPiece(chosenIndex);

            //Multiplier bar
            bonusBar      = Instantiate(GameControl.Instance.bonusBarPrefab, new Vector3(4f, 5.4f, 0), Quaternion.identity) as MultiplierBar;
            bonusBar.name = GameControl.Instance.bonusBarPrefab.name;
            bonusBar.Foreground.SetSprite("MultBarFillGrowth");

            var levelProgressIndicator = GameController.uiController.gameInfo.GetComponent <LevelProgressIndicator>();

            levelProgressIndicator.Construct(this);

            layoutUsage = new Dictionary <int, int>();
            pieceQueue  = new Queue <PreviewPiece>();

            for (int i = TOTAL_PIECE_PREVIEWS - 1; i >= 0; i--)
            {
                var previewPiece = GameControl.Instantiate(GameController.previewPiecePrefab, new Vector3(PIECE_PREVIEW_INITIAL_X, PIECE_PREVIEW_INITIAL_Y + i * 1.6f, 0), Quaternion.identity) as PreviewPiece;
                var index        = UnityEngine.Random.Range(0, initialPieceLayouts.Count);
                previewPiece.gameObject.name = GameController.previewPiecePrefab.name;
                previewPiece.Init(initialPieceLayouts[index].Copy(), index);
                pieceQueue.Enqueue(previewPiece);
            }

            for (int i = 0; i < initialPieceLayouts.Count; i++)
            {
                layoutUsage.Add(i, 0);
            }

            initialBoardClearYPos = GameController.boardClearText.Position.y;
        }
        public override void Initialize(List <Grid <int> > initialPieceLayouts)
        {
            UnityEngine.Random.seed = GlobalData.Instance.periodicModeSeed;
            base.Start();

            multiplier = 1;
            chain      = 0;
            timer      = INITIAL_TIME;
            hintTimer  = TIME_TILL_HINT;

            Board.Instance.Initialize(GameControl.Instance.mainCamera, GameControl.Instance.GameplayBounds, 10, 10);

            GameUIController.Instance.lifeCounter.IsVisible = false;
            bottomTimer           = GameController.bottomTimer;
            bottomTimer.IsVisible = true;
            bottomTimer.Text      = "2:00";

            //Multiplier bar
            timeBar      = Instantiate(GameControl.Instance.bonusBarPrefab, new Vector3(4f, 5.4f, 0), Quaternion.identity) as MultiplierBar;
            timeBar.name = GameControl.Instance.bonusBarPrefab.name;
            timeBar.MultiplierIndicators.ForEach(m => m.renderer.material.color = new Color(m.renderer.material.color.r, m.renderer.material.color.g, m.renderer.material.color.b, 0));
            timeBar.Foreground.SetSprite("MultBarFillPeriodic");

            var levelProgressIndicator = GameController.uiController.gameInfo.GetComponent <LevelProgressIndicator>();

            levelProgressIndicator.Construct(this);
            levelProgressIndicator.levelLabel.TextScale         = 100f / LevelProgressIndicator.levelLabel.Font.FontSize;
            levelProgressIndicator.levelLabel.Text              = "x1.0";
            LevelProgressIndicator.incomingLevelLabel.TextScale = 100f / LevelProgressIndicator.incomingLevelLabel.Font.FontSize;
            levelProgressIndicator.progressBar.IsVisible        = false;

            //Redefiniendo los piece layouts
            initialPieceLayouts = new List <Grid <int> >();
            var provisionalPieceLayoutList = new List <Grid <int> >();

            for (int i = 0; i < GameControl.TOTAL_PIECES; i++)
            {
                var layout = new Grid <int>();
                layout[0, 0] = 1;
                provisionalPieceLayoutList.Add(layout);
            }

            var complicationLevels = new List <int> {
                3, 4, 4, 5, 6, 6
            };

            foreach (var complicationLevel in complicationLevels)
            {
                var index  = UnityEngine.Random.Range(0, provisionalPieceLayoutList.Count);
                var layout = provisionalPieceLayoutList[index];
                provisionalPieceLayoutList.RemoveAt(index);

                for (int i = 0; i < complicationLevel - 1; i++)
                {
                    layout = GameControl.Instance.ComplicateLayout(layout);
                }
                initialPieceLayouts.Add(layout);
            }

            GameController.PieceLayouts = initialPieceLayouts;

            layoutUsage = new Dictionary <int, int>();
            pieceQueue  = new Queue <PreviewPiece>();

            for (int i = TOTAL_PIECE_PREVIEWS; i >= 0; i--)
            {
                var previewPiece = GameControl.Instantiate(GameController.previewPiecePrefab, new Vector3(PIECE_PREVIEW_INITIAL_X, PIECE_PREVIEW_INITIAL_Y + i * 1.6f, 0), Quaternion.identity) as PreviewPiece;
                var index        = UnityEngine.Random.Range(0, initialPieceLayouts.Count);
                previewPiece.gameObject.name = GameController.previewPiecePrefab.name;
                previewPiece.Init(initialPieceLayouts[index].Copy(), index);
                pieceQueue.Enqueue(previewPiece);
            }

            for (int i = 0; i < initialPieceLayouts.Count; i++)
            {
                layoutUsage.Add(i, 0);
            }

            initialBoardClearYPos = GameController.boardClearText.Position.y;
            GameController.simpleSongController.PlaylistVolume   = 0;
            GameController.enhancedSongController.PlaylistVolume = 1;
        }