public static void FromTetromino(Tetris tetrisState, Tetromino tetromino, int startAngle, float time) { for (int x = 0; x < 4; x++) for (int y = 0; y < 4; y++) { if (tetromino.Structure[x, y]) { Tuple<int, int> XY = Tuple.Create(tetromino.X + x, tetromino.Y + y); Transition t; if (tetrisState.Transitions.ContainsKey(XY)) { #if diagnose Debug.WriteLine("({0},{1}) reused for rotation", XY.Item1, XY.Item2); #endif t = tetrisState.Transitions[XY]; } else { #if diagnose Debug.WriteLine("({0},{1}) Created for rotation", XY.Item1, XY.Item2); #endif t = new Transition(tetrisState, XY, time); } t.AddRotation(startAngle, new Vector2(tetromino.X + 2, tetromino.Y + 2)); } } }
public static void FromTetromino(Tetris tetrisState, Tetromino tetromino, int startX, int startY, float time, bool noAdd = false) { for (int x = 0; x < 4; x++) for (int y = 0; y < 4; y++) { if (tetromino.Structure[x, y]) { Tuple<int, int> XY = Tuple.Create(tetromino.X + x, tetromino.Y + y); Transition t; if (tetrisState.Transitions.ContainsKey(XY)) t = tetrisState.Transitions[XY]; else { #if diagnose Debug.WriteLine("({0},{1}) Created for tet translation", XY.Item1, XY.Item2); #endif t = new Transition(tetrisState, XY, time); } t.AddTranslation(new Vector2((tetromino.X - startX), (tetromino.Y - startY))); } } }
public static void FromRow(Tetris tetrisState, int startRow, int targetRow, float time, bool noAdd = false) { for (int i = 0; i < Tetris.Width; i++) { if (tetrisState.Grid[i, targetRow] != Color.Transparent) { Tuple<int, int> XY = Tuple.Create(i, targetRow); Transition t; if (tetrisState.Transitions.ContainsKey(XY)) { #if diagnose Debug.WriteLine("({0},{1}) reused for row translation", XY.Item1, XY.Item2); #endif t = tetrisState.Transitions[XY]; } else { #if diagnose Debug.WriteLine("({0},{1}) Created for row translation", XY.Item1, XY.Item2); #endif t = new Transition(tetrisState, XY, time); } t.AddTranslation(new Vector2(0, (targetRow - startRow))); } } }