public model.SquareCell[] GetColumnCells(int column) { model.SquareCell[] cells = new model.SquareCell[DefineData.MAX_COLUMN_COUNT]; for (int i = 0; i < DefineData.MAX_COLUMN_COUNT; i++) { cells[i] = _squareCells[column + (DefineData.MAX_COLUMN_COUNT * i)]; } return(cells); }
public void UpdateCell(model.SquareCell modelCell) { if (modelCell.IsMemoMode) { this.UpdateMemoText(modelCell.MemoArray); } else { this.UpdateText(modelCell.NumberValue); } }
public model.SquareCell[] GetRowCells(int row) { model.SquareCell[] cells = new model.SquareCell[DefineData.MAX_ROW_COUNT]; int startIndex = DefineData.MAX_ROW_COUNT * row; for (int i = 0; i < DefineData.MAX_ROW_COUNT; i++) { cells[i] = _squareCells[startIndex + i]; } return(cells); }
public void OnSellectCell(int column, int row, System.Action CallBack) { _selectCell = FindCellByCoordinates(column, row); UpdateSelectPack(_selectCell); if (_selectCell.NumberValue == 0) // 빈칸을 선택한경우 { } else { } UpdateCellData(_selectCell); CallBack(); }
private void UpdateCellData(model.SquareCell selectCell) { model.SquarePack targetPack = null; model.SquareCell targetCell = null; int equalColumnCount = 0; int equalRowCount = 0; _equalValueCells.Clear(); for (int i = 0; i < _squarePacks.Length; i++) { targetPack = _squarePacks[i]; for (int j = 0; j < targetPack.SquareCells.Length; j++) { targetCell = targetPack.SquareCells[j]; if (targetCell.BoardCoorinate.column == selectCell.BoardCoorinate.column && targetCell.BoardCoorinate.row == selectCell.BoardCoorinate.row) // 셀렉트셀 이라면 패스 (객체 이퀄연산하자) { continue; } if (targetCell.BoardCoorinate.column == selectCell.BoardCoorinate.column) { _equalColumnCells[equalColumnCount] = targetCell; equalColumnCount++; } else if (targetCell.BoardCoorinate.row == selectCell.BoardCoorinate.row) { _equalRowCells[equalRowCount] = targetCell; equalRowCount++; } if (selectCell.NumberValue == 0) // 빈칸이라면 { continue; } else if (targetCell.NumberValue == selectCell.NumberValue) { _equalValueCells.Add(targetCell); } } } }
public void UpdateBoardValue(model.SquareBoard modelSquareBoard) { view.SquarePack targetPack = null; view.SquareCell targetCell = null; model.SquarePack modelPack = null; model.SquareCell modelCell = null; for (int i = 0; i < _squarePacks.Length; i++) { targetPack = _squarePacks[i]; modelPack = modelSquareBoard.SquarePack[i]; for (int j = 0; j < targetPack.SquareCells.Length; j++) { targetCell = targetPack.SquareCells[j]; modelCell = modelPack.SquareCells[j]; targetCell.UpdateCell(modelCell); } } }
public void MapSave(model.SquareBoard board) { model.StageData stageData = new model.StageData(); model.SquarePack targetPack = null; model.SquareCell targetCell = null; int column, row; for (int i = 0; i < board.SquarePack.Length; i++) { targetPack = board.SquarePack[i]; for (int j = 0; j < targetPack.SquareCells.Length; j++) { targetCell = targetPack.SquareCells[j]; column = targetCell.BoardCoorinate.column; row = targetCell.BoardCoorinate.row; stageData.cellDataList.Add(new model.CellData(column, row, targetCell.NumberValue)); } } string str = JsonUtility.ToJson(stageData, prettyPrint: true); Debug.Log(str); using (FileStream fs = new FileStream("Assets/Resources/stage1.json", FileMode.Create)) { using (StreamWriter writer = new StreamWriter(fs)) { writer.Write(str); writer.Close(); writer.Dispose(); } fs.Close(); fs.Dispose(); } }
private void UpdateSelectPack(model.SquareCell cell) { _selectPack = _squarePacks[cell.PackIndex]; }
private void UpdateDuplicateNumberOfColumn(int boardColumn) { List <model.SquareCell> duplicateCells = new List <SquareCell>(); bool isDuplicate = false; int targetPackColumn = boardColumn / DefineData.MAX_COLUMN_COUNT; int targetCellRow = boardColumn % DefineData.MAX_COLUMN_COUNT; model.SquarePack[] packs = this.GetColumnPacks(targetPackColumn); model.SquareCell[] cells = new model.SquareCell[DefineData.MAX_CELL_COUNT]; model.SquareCell[,] tempCells = new SquareCell[3, 3]; model.SquareCell[] packCells = null; for (int i = 0; i < packs.Length; i++) { packCells = packs[i].GetColumnCells(targetPackColumn); for (int j = 0; j < packCells.Length; j++) { tempCells[i, j] = packCells[j]; } } for (int i = 0; i < DefineData.MAX_CELL_COUNT; i++) { cells[i] = tempCells[i / 3, i % 3]; } for (int i = 0; i < cells.Length; i++) { if (cells[i].NumberValue == 0) { continue; } for (int j = i; j < cells.Length; j++) { if (i == j) // 인덱스가 같은경우 { continue; } if (cells[i].NumberValue == cells[j].NumberValue) { if (!duplicateCells.Contains(cells[i])) { duplicateCells.Add(cells[i]); } if (!duplicateCells.Contains(cells[j])) { duplicateCells.Add(cells[j]); } } } } for (int i = 0; i < cells.Length; i++) { isDuplicate = false; for (int j = 0; j < duplicateCells.Count; j++) { if (cells[i] == duplicateCells[j]) { isDuplicate = true; break; } } cells[i].UpdateDuplicateColumn(isDuplicate); } }
public void UpdateBoardAim(model.SquareBoard modelSquareBoard) { view.SquarePack viewTargetPack = null; view.SquareCell viewTargetCell = null; model.SquarePack modelTargetPack = null; model.SquareCell modelTargetCell = null; bool isEqualValue; bool isEqualColumn; bool isEqualRow; bool isSelectCell; for (int i = 0; i < _squarePacks.Length; i++) { viewTargetPack = _squarePacks[i]; modelTargetPack = modelSquareBoard.SquarePack[i]; for (int j = 0; j < viewTargetPack.SquareCells.Length; j++) { viewTargetCell = viewTargetPack.SquareCells[j]; modelTargetCell = modelTargetPack.SquareCells[j]; isEqualValue = false; isEqualColumn = false; isEqualRow = false; isSelectCell = false; if (!modelTargetCell.IsOpenValue && (modelTargetCell.IsDuplicatePack || modelTargetCell.IsDuplicateColumn || modelTargetCell.IsDuplicateRow)) { viewTargetCell.UpdateTrim(Color.black, false, modelTargetCell.GetTextColor()); continue; } if (modelSquareBoard.SelectCell.BoardCoorinate.column == viewTargetCell.BoardCoorinate.column && modelSquareBoard.SelectCell.BoardCoorinate.row == viewTargetCell.BoardCoorinate.row) { viewTargetCell.UpdateTrim(Color.magenta, false, modelSquareBoard.SelectCell.GetTextColor()); isSelectCell = true; } if (isSelectCell) { continue; } for (int k = 0; k < modelSquareBoard.EqaulValueCells.Count; k++) { if (modelSquareBoard.EqaulValueCells[k].BoardCoorinate.column == viewTargetCell.BoardCoorinate.column && modelSquareBoard.EqaulValueCells[k].BoardCoorinate.row == viewTargetCell.BoardCoorinate.row) { viewTargetCell.UpdateTrim(Color.yellow, true, modelSquareBoard.EqaulValueCells[k].GetTextColor()); isEqualValue = true; break; } } if (isEqualValue) { continue; } for (int k = 0; k < modelSquareBoard.EqualColumnCells.Length; k++) { if (modelSquareBoard.EqualColumnCells[k].BoardCoorinate.column == viewTargetCell.BoardCoorinate.column && modelSquareBoard.EqualColumnCells[k].BoardCoorinate.row == viewTargetCell.BoardCoorinate.row) { viewTargetCell.UpdateTrim(Color.magenta, true, modelSquareBoard.EqualColumnCells[k].GetTextColor()); isEqualColumn = true; break; } } if (isEqualColumn) { continue; } for (int k = 0; k < modelSquareBoard.EqaulRowCells.Length; k++) { if (modelSquareBoard.EqaulRowCells[k].BoardCoorinate.column == viewTargetCell.BoardCoorinate.column && modelSquareBoard.EqaulRowCells[k].BoardCoorinate.row == viewTargetCell.BoardCoorinate.row) { viewTargetCell.UpdateTrim(Color.magenta, true, modelSquareBoard.EqaulRowCells[k].GetTextColor()); isEqualRow = true; break; } } if (isEqualRow) { continue; } viewTargetCell.UpdateTrim(Color.grey, false, modelTargetCell.GetTextColor()); } } }