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; } }
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)); } }
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); } }
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); }
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; } }
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)); }