/// <summary> /// Detecting colision of brick /// </summary> /// <param name="xPosition">x brick position on board</param> /// <param name="yPosition">y brick position on board</param> /// <param name="code">brick code</param> /// <returns>true is colision detected, false otherwise</returns> private bool DetectColision(int xPosition, int yPosition, int code) { for (int i = 0; i < BrickConsts.BrickSize; i++) { for (int j = 0; j < BrickConsts.BrickSize; j++) { if (BitHelper.GetBitBool(code, i * BrickConsts.BrickSize + j)) { try { if (yPosition + j < 0 || yPosition + j >= BoardConsts.BoardWidth || BoardDataBuffer[(xPosition + i) * BoardConsts.BoardWidth + yPosition + j] == FieldState.Filled) { return(true); } } catch (IndexOutOfRangeException) { return(true); } } } } return(false); }
/// <summary> /// Drawing game info fields /// </summary> /// <param name="dc"></param> private void DrawGameInfo(DrawingContext dc) { int nextBrick = controller.GameInfo.NextBrick; for (int i = 0; i < BrickConsts.BrickSize; i++) { for (int j = 0; j < BrickConsts.BrickSize; j++) { dc.DrawRectangle( BitHelper.GetBitBool(nextBrick, i * BrickConsts.BrickSize + j) ? WindowConsts.FilledFieldBrush : WindowConsts.EmptyFieldBrush , WindowConsts.StandardPen, WindowConsts.xInfoBeginPoint + j * WindowConsts.BrickInfoOffset, WindowConsts.yInfoBeginPoint + i * WindowConsts.BrickInfoOffset, WindowConsts.BrickInfoSize, WindowConsts.BrickInfoSize); } } dc.DrawText(controller.GameInfo.Score.ToString(), ResourcesManager.GameFont, Color.Black, WindowConsts.xInfoScorePoint, WindowConsts.yInfoScorePoint); dc.DrawText(controller.GameInfo.Level.ToString(), ResourcesManager.GameFont, Color.Black, WindowConsts.xInfoLevelPoint, WindowConsts.yInfoLevelPoint); }
/// <summary> /// Helper function setting brick-shape fields to desired state /// </summary> /// <param name="fieldState"></param> private void FillBrickSpace(FieldState fieldState) { for (int i = 0; i < BrickConsts.BrickSize; i++) { for (int j = 0; j < BrickConsts.BrickSize; j++) { if (BitHelper.GetBitBool(currentBrick.BrickCode, i * BrickConsts.BrickSize + j)) { BoardDataBuffer[(currentBrick.xPosition + i) * BoardConsts.BoardWidth + currentBrick.yPosition + j] = fieldState; } } } }