Beispiel #1
0
 public void Setup(LevelPlayModel lpm)
 {
     DeleteExistingChildren();
     CreateNewContainer();
     SpawnCells(lpm);
     PositionCamera(lpm);
     Refresh(lpm);
 }
        public void Reset()
        {
            var levelData = LoadLevelData(_lastLevelPlayed);

            _lpm = LevelPlayModelFactory.Create(levelData);
            LevelManager.Setup(_lpm);
            WinPanel.gameObject.SetActive(false);
        }
        public static LevelPlayModel Create(List <string> level, int columns, int rows)
        {
            var lpm = new LevelPlayModel();

            lpm.SetBackground(columns, rows, ParseBackgroundColours(level, columns, rows));
            lpm.SetForeground(columns, rows, ParseForeground(level, columns, rows));

            return(lpm);
        }
        private static void LockRows(LevelPlayModel model, int[] rowsToLock)
        {
            var index = 0;

            while (index < rowsToLock.Length)
            {
                model.LockRows(rowsToLock[index], rowsToLock[index + 1]);
                index += 2;
            }
        }
        private static void LockColumns(LevelPlayModel model, int[] columnsToLock)
        {
            var index = 0;

            while (index < columnsToLock.Length)
            {
                model.LockColumns(columnsToLock[index], columnsToLock[index + 1]);
                index += 2;
            }
        }
Beispiel #6
0
        private void LightUpCorrectCells(LevelPlayModel model)
        {
            foreach (var cell in _cells.Values)
            {
                var col = cell.Column;
                var row = cell.Row;

                cell.LightUpBackground(model.CellCorrect(col, row));
            }
        }
Beispiel #7
0
 private void SpawnCells(LevelPlayModel lpm)
 {
     for (int i = 0; i < lpm.Background.Columns; ++i)
     {
         for (int j = 0; j < lpm.Background.Rows; ++j)
         {
             SpawnCell(i, j, lpm);
         }
     }
 }
        public static void SetupLaneLocks(LevelPlayModel model, LevelData data)
        {
            if (data.LockedColumns != null && data.LockedColumns.Length > 0)
            {
                LockColumns(model, data.LockedColumns);
            }

            if (data.LockedRows != null && data.LockedRows.Length > 0)
            {
                LockRows(model, data.LockedRows);
            }
        }
Beispiel #9
0
        public void Refresh(LevelPlayModel model)
        {
            var lastMove = model.GetLastMove();

            if (lastMove != null)
            {
                foreach (var id in lastMove.UpdatedIndices)
                {
                    _cells[id].Refresh(lastMove.Input);
                }
            }

            LightUpCorrectCells(model);
        }
Beispiel #10
0
        private void SpawnCell(int column, int row, LevelPlayModel lpm)
        {
            Colour bgColour;

            if (lpm.Background.TryGet(column, row, out bgColour))
            {
                var cell = Object.Instantiate <CellScript>(CellPrefab);
                SetCellPosition(cell, column, row);
                SetupCellData(column, row, cell, bgColour, lpm.Foreground.GetCubeModelOrNull(column, row),
                              lpm.Background.IsLockedHorizontally(row),
                              lpm.Background.IsLockedVertically(column));
                _cells[lpm.Background.GetID(column, row)] = cell;
            }
        }
Beispiel #11
0
        private void PositionCamera(LevelPlayModel lpm)
        {
            var basicPos = new Vector3(CAM_POS_X, CAM_POS_Y, CAM_POS_Z);

            var rowCount = lpm.Background.Rows;
            var colCount = lpm.Background.Columns;

            basicPos.x -= (3 - colCount) * 1f;
            basicPos.y += (3 - rowCount) * 1f;

            if (colCount > 3)
            {
                basicPos.z -= (colCount - 3) * 1.8f;
            }

            Camera.main.transform.position = basicPos;

            Camera.main.transform.rotation = Quaternion.Euler(new Vector3(CAM_ROT_X, CAM_ROT_Y, CAM_ROT_Z));
        }