bool GameLogic::kickFit(PlayField &board, Tetri &block) { int original_x = block.get_x(); int original_y = block.get_y(); if (!checkFit(board, block)) { block.set_y(original_y); block.set_x(original_x + 1); if (!checkFit(board, block)) { block.set_x(original_x - 1); if (!checkFit(board, block)) { block.set_x(original_x); return false; } return true; } block.set_x(original_x); } return false; }
bool GameLogic::adjustFit(PlayField &board, Tetri &block) { int original_x = block.get_x(); int original_y = block.get_y(); if (checkFit(board, block)) { return true; } else { while (((block.xOfLeftMostBlock() + block.get_x()) < 0) && (checkFit(board, block) == false)) { block.set_x(block.get_x() + 1); } while (((block.xOfRightMostBlock() + block.get_x()) > 9) && (checkFit(board, block) == false)) { block.set_x(block.get_x() - 1); } } if (!checkFit(board, block)) { block.set_y(original_y); block.set_x(original_x); return false; } return true; };
// Waxworks specific uint16 AGOSEngine_Waxworks::getBoxSize() { int x; switch (_boxLineCount) { case 1: x = _lineCounts[0]; if (x <= 26) return 1; if (x <= 64) if (checkFit(_linePtrs[0], 32, 2)) return 2; if (x <= 111) if (checkFit(_linePtrs[0], 37, 3)) return 3; if (x <= 168) if (checkFit(_linePtrs[0], 42, 4)) return 4; if (x <= 240) if (checkFit(_linePtrs[0], 48, 5)) return 5; return 6; case 2: if (_lineCounts[0] <= 32) { if (_lineCounts[1] <= 32) return 2; if (_lineCounts[1] <= 74) if (checkFit(_linePtrs[1], 37, 2)) return 3; if (_lineCounts[1] <= 126) if (checkFit(_linePtrs[1], 42, 3)) return 4; if (_lineCounts[1] <= 172) if (checkFit(_linePtrs[1], 48, 4)) return 5; return 6; } if ((_lineCounts[0] <= 74) && (checkFit(_linePtrs[0], 37, 2))) { if (_lineCounts[1] <= 37) return 3; if (_lineCounts[1] <= 84) if (checkFit(_linePtrs[1], 42, 2)) return 4; if (_lineCounts[1] <= 144) if (checkFit(_linePtrs[1], 48, 3)) return 5; return 6; } if ((_lineCounts[0] <= 126) && (checkFit(_linePtrs[0], 42, 3))) { if (_lineCounts[1] <= 42) return 4; if (_lineCounts[1] <= 84) if (checkFit(_linePtrs[1], 48, 2)) return 5; return 6; } if ((_lineCounts[0] <= 192) && (checkFit(_linePtrs[0], 48, 4))) { if (_lineCounts[1] <= 48) return 5; return 6; } return 6; case 3: if (_lineCounts[0] <= 37) { if (_lineCounts[1] <= 37) { if (_lineCounts[2] <= 37) return 3; if (_lineCounts[2] <= 84) if (checkFit(_linePtrs[2], 42, 2)) return 4; if (_lineCounts[2] <= 144) if (checkFit(_linePtrs[2], 48, 3)) return 5; return 6; } if ((_lineCounts[1] <= 84) && (checkFit(_linePtrs[1], 42, 2))) { if (_lineCounts[2] <= 42) return 4; if (_lineCounts[2] <= 96) if (checkFit(_linePtrs[2], 48, 2)) return 5; return 6; } if ((_lineCounts[1] <= 144) && (checkFit(_linePtrs[1], 48, 3))) { if (_lineCounts[2] <= 48) return 5; return 6; } return 6; } if ((_lineCounts[0] <= 84) && (checkFit(_linePtrs[0], 42, 2))) { if (_lineCounts[1] <= 42) { if (_lineCounts[2] <= 42) return 4; if (_lineCounts[2] <= 96) if (checkFit(_linePtrs[2], 48, 2)) return 5; return 6; } if ((_lineCounts[1] <= 96) && (checkFit(_linePtrs[1], 48, 2))) { if (_lineCounts[2] <= 48) return 5; return 6; } return 6; } if ((_lineCounts[0] <= 96) && (checkFit(_linePtrs[0], 48, 3))) { if (_lineCounts[1] <= 48) { if (_lineCounts[2] <= 48) return 5; } return 6; } return 6; case 4: if (_lineCounts[0] <= 42) { if (_lineCounts[1] <= 42) { if (_lineCounts[2] <= 42) { if (_lineCounts[3] <= 42) return 4; if (_lineCounts[3] <= 96) if (checkFit(_linePtrs[3], 48, 2)) return 5; return 6; } if ((_lineCounts[2] <= 96) && (checkFit(_linePtrs[2], 48, 2))) if (_lineCounts[3] <= 48) return 5; return 6; } if ((_lineCounts[1] <= 96) && (checkFit(_linePtrs[1], 48, 2))) if ((_lineCounts[2] <= 48) && (_lineCounts[3] <= 48)) return 5; return 6; } if ((_lineCounts[0] <= 96) && (checkFit(_linePtrs[0], 48, 2))) if ((_lineCounts[1] <= 48) && (_lineCounts[2] <= 48) && (_lineCounts[3] <= 48)) return 5; return 6; case 5: if ((_lineCounts[0] > 48) || (_lineCounts[1] > 48) || (_lineCounts[2] > 48) || (_lineCounts[3] > 48) || (_lineCounts[4] > 48)) return 6; else return 5; default: return 6; } }