public void Preview(Point pt, StructBlock structBlock) { // shows a preview of a block WindowRect wrBlockAdj = new WindowRect(); bool[] arrData = GetBlockData(structBlock); // retrieve the exact measurement of the block // so we can able to draw the block in correct position. Adjustment(ref wrBlockAdj, arrData); Console.ForegroundColor = Color(structBlock.type); for (int row = wrBlockAdj.top; row < wrBlockAdj.top + wrBlockAdj.height; row++) { for (int col = wrBlockAdj.left; col < wrBlockAdj.left + wrBlockAdj.width; col++) { if (arrData[col + row * BLOCK_SIZE]) { Console.SetCursorPosition(pt.x + col - wrBlockAdj.left - wrBlockAdj.width / 2, pt.y + row - wrBlockAdj.top - wrBlockAdj.height / 2); Console.Write("#"); } } } Console.ResetColor(); }
public void Assign(StructBlock sbNew) { Angle = sbNew.angle; Type = sbNew.type; }
public Boolean[] GetBlockData(StructBlock structBlock) { // 0123 // 4567 // 8901 // 2345 // data for 4v4 block shapes bool[] arrData = new bool[BLOCK_SIZE << 2]; switch (structBlock.type) { case BlockTypeNum.block01: if (structBlock.angle.Equals(RotationEnum.deg0) || structBlock.angle.Equals(RotationEnum.deg180)) { arrData[2] = true; // ..#. 0123 arrData[6] = true; // ..#. 4567 arrData[10] = true; // ..#. 8901 arrData[14] = true; // ..#. 2345 } else { arrData[12] = true; // .... 0123 arrData[13] = true; // .... 4567 arrData[14] = true; // .... 8901 arrData[15] = true; // #### 2345 } break; case BlockTypeNum.block02: arrData[0] = true; // ##.. 0123 arrData[1] = true; // ##.. 4567 arrData[4] = true; // .... 8901 arrData[5] = true; // .... 2345 break; case BlockTypeNum.block03: if (structBlock.angle.Equals(RotationEnum.deg0) || structBlock.angle.Equals(RotationEnum.deg180)) { arrData[5] = true; // .... 0123 arrData[6] = true; // .##. 4567 arrData[8] = true; // ##.. 8901 arrData[9] = true; // .... 2345 } else { arrData[1] = true; // .#.. 0123 arrData[5] = true; // .##. 4567 arrData[6] = true; // ..#. 8901 arrData[10] = true; // .... 2345 } break; case BlockTypeNum.block04: if (structBlock.angle.Equals(RotationEnum.deg0) || structBlock.angle.Equals(RotationEnum.deg180)) { arrData[4] = true; // .... 0123 arrData[5] = true; // ##.. 4567 arrData[9] = true; // .##. 8901 arrData[10] = true; // .... 2345 } else { arrData[2] = true; // ..#. 0123 arrData[5] = true; // .##. 4567 arrData[6] = true; // .#.. 8901 arrData[9] = true; // .... 2345 } break; case BlockTypeNum.block05: if (structBlock.angle.Equals(RotationEnum.deg0)) { arrData[4] = true; // .... 0123 arrData[5] = true; // ###. 4567 arrData[6] = true; // .#.. 8901 arrData[9] = true; // .... 2345 } else if (structBlock.angle.Equals(RotationEnum.deg90)) { arrData[1] = true; // .#.. 0123 arrData[4] = true; // ##.. 4567 arrData[5] = true; // .#.. 8901 arrData[9] = true; // .... 2345 } else if (structBlock.angle.Equals(RotationEnum.deg180)) { arrData[5] = true; // .... 0123 arrData[8] = true; // .#.. 4567 arrData[9] = true; // ###. 8901 arrData[10] = true; // .... 2345 } else { arrData[1] = true; // .#.. 0123 arrData[5] = true; // .##. 4567 arrData[6] = true; // .#.. 8901 arrData[9] = true; // .... 2345 } break; case BlockTypeNum.block06: if (structBlock.angle.Equals(RotationEnum.deg0)) { arrData[4] = true; // .... 0123 arrData[5] = true; // ###. 4567 arrData[6] = true; // #... 8901 arrData[8] = true; // .... 2345 } else if (structBlock.angle.Equals(RotationEnum.deg90)) { arrData[0] = true; // ##.. 0123 arrData[1] = true; // .#.. 4567 arrData[5] = true; // .#.. 8901 arrData[9] = true; // .... 2345 } else if (structBlock.angle.Equals(RotationEnum.deg180)) { arrData[6] = true; // .... 0123 arrData[8] = true; // ..#. 4567 arrData[9] = true; // ###. 8901 arrData[10] = true; // .... 2345 } else { arrData[1] = true; // .#.. 0123 arrData[5] = true; // .#.. 4567 arrData[9] = true; // .##. 8901 arrData[10] = true; // .... 2345 } break; case BlockTypeNum.block07: if (structBlock.angle.Equals(RotationEnum.deg0)) { arrData[4] = true; // .... 0123 arrData[5] = true; // ###. 4567 arrData[6] = true; // ..#. 8901 arrData[10] = true; // .... 2345 } else if (structBlock.angle.Equals(RotationEnum.deg90)) { arrData[1] = true; // .#.. 0123 arrData[5] = true; // .#.. 4567 arrData[8] = true; // ##.. 8901 arrData[9] = true; // .... 2345 } else if (structBlock.angle.Equals(RotationEnum.deg180)) { arrData[4] = true; // .... 0123 arrData[8] = true; // #... 4567 arrData[9] = true; // ###. 8901 arrData[10] = true; // .... 2345 } else { arrData[1] = true; // .##. 0123 arrData[2] = true; // .#.. 4567 arrData[5] = true; // .#.. 8901 arrData[9] = true; // .... 2345 } break; } return(arrData); }