public void SetPuzzleType(PuzzleTile.PType t) { puzzleType = t; switch (t) { case PuzzleTile.PType.R: colorControllor.SetColor(Color.red); break; case PuzzleTile.PType.G: colorControllor.SetColor(Color.green); break; case PuzzleTile.PType.B: colorControllor.SetColor(Color.blue); break; case PuzzleTile.PType.C: colorControllor.SetColor(Color.cyan); break; case PuzzleTile.PType.M: colorControllor.SetColor(Color.magenta); break; case PuzzleTile.PType.Y: colorControllor.SetColor(Color.yellow); break; } }
public void PushPuzzleRow(Dir dir, int row, PuzzleTile.PType t) { PuzzleTile p; int max = 0, min = 0, step = 1; switch (dir) { case Dir.left: min = 0; max = puzzleMap.Count; step = 1; break; case Dir.right: max = -1; min = puzzleMap.Count - 1; step = -1; break; } for (int i = max - step; i != min - step; i -= step) { p = GetPuzzleTile(i, row); if (p != null) { if (p.puzzleType == t) { RemovePuzzle(i, row); } } } for (int i = min; i != max; i += step) { Debug.Log("min=" + min + ";i=" + i); p = GetPuzzleTile(i, row); if (p != null) { puzzleMap[i][row] = null; if (puzzleMap[min].Count > row) { puzzleMap[min][row] = p; } else { puzzleMap[min].Add(p); } Vector3 pos = new Vector3(min, row, 0f) + puzzleOffset; p.Move(pos); min += step; } } }
public bool RemovePuzzle(int col, int row, PuzzleTile.PType t) { List <PuzzleTile> l = puzzleMap[col]; if (l.Count > row && l[row] != null) { PuzzleTile p = l[row]; if (p.puzzleType == t) { l[row] = null; p.Kill(); puzzleDirty = true; return(true); } } return(false); }