diff -Naur Bubblet_orig/src/Bubblet/BubbletCanvas.java Bubblet_my/src/Bubblet/BubbletCanvas.java --- Bubblet_orig/src/Bubblet/BubbletCanvas.java 2004-08-02 03:32:00.000000000 +0700 +++ Bubblet_my/src/Bubblet/BubbletCanvas.java 2006-03-16 16:11:53.000000000 +0600 @@ -34,16 +34,9 @@ private int fieldWidth; private int fieldHeight; - private int cursorPixelPosX; - private int cursorPixelPosY; private int cursorIndexPosX; private int cursorIndexPosY; - private int crosshairs_x1; - private int crosshairs_y1; - private int crosshairs_x2; - private int crosshairs_y2; - private Vector affectedSlices = new Vector(10); private Vector CellSet = new Vector(20); @@ -169,20 +162,35 @@ fieldWidth = pFieldWidth; fieldHeight = pFieldHeight; field = new int[pFieldWidth][pFieldHeight]; + } + + protected void drawCrosshairs(Graphics g) { + int x = cursorIndexPosX * cellWidth; + int y = cursorIndexPosY * cellHeight; + + int x1 = x + 2; + int y1 = y + 2; + int x2 = x + cellWidth - 5; + int y2 = y + cellHeight - 6; + + // Draw Crosshairs + g.setColor(0, 0, 0); + g.drawLine(x1, y1, x2, y2); + g.drawLine(x2, y1, x1, y2); } protected void paint(Graphics g) { if (initialDraw) { // initialize sizes of basic screen elements (only once) - screenWidth = g.getClipHeight() - (g.getClipHeight()%10); - screenHeight = g.getClipWidth() - (g.getClipHeight()%10); + screenWidth = g.getClipHeight(); + screenHeight = g.getClipWidth(); cellWidth = screenWidth / fieldWidth; cellHeight = screenHeight / fieldHeight; // Draw blank screen g.setColor(255, 255, 255); - g.fillRect(0, 0, screenWidth * 2, screenHeight * 2); + g.fillRect(0, 0, screenWidth, screenHeight); // initialize random game field for (int i = 0; i < fieldWidth; i++) { @@ -205,16 +213,9 @@ drawWholeBoard(g); // Initialize crosshairs coordinates on first paint() call - cursorPixelPosX = 0; - cursorPixelPosY = 0; cursorIndexPosX = 0; cursorIndexPosY = 0; - crosshairs_x1 = cursorPixelPosX + 1; - crosshairs_y1 = cursorPixelPosY + 1; - crosshairs_x2 = cursorPixelPosX + cellWidth + 1; - crosshairs_y2 = cursorPixelPosY + cellHeight - 4; - initialDraw = false; } else if (updateCrosshairsOnly && CellSet.size() > 0) { @@ -249,12 +250,8 @@ affectedSlices.removeAllElements(); } - if (!gameFinished) { - // Draw Crosshairs - g.setColor(0, 0, 0); - g.drawLine(crosshairs_x1, crosshairs_y1, crosshairs_x2, crosshairs_y2); - g.drawLine(crosshairs_x2, crosshairs_y1, crosshairs_x1, crosshairs_y2); - } + if (!gameFinished) + drawCrosshairs(g); } private void drawWholeBoard(Graphics g){ @@ -265,9 +262,9 @@ } } - private void drawField(Graphics g, int x, int y) { + private void drawField(Graphics g, int ix, int iy) { // Determine cell color - switch (field[y][x]) { + switch (field[iy][ix]) { case RED: g.setColor(255, 0, 0); break; @@ -291,13 +288,16 @@ break; } + int x = cellWidth * ix; + int y = cellHeight *iy; + // Draw cell - if (field[y][x] == WHITE) { - g.fillRect(x * cellHeight + 1, y * cellWidth + 1, cellWidth + 1, cellHeight - 4); + if (field[iy][ix] == WHITE) { + g.fillRect(x, y, cellWidth, cellHeight); } else { - g.fillRect(x * cellHeight + 1, y * cellWidth + 1, cellWidth, cellHeight - 4); + g.fillRect(x, y, cellWidth - 3, cellHeight - 4); g.setColor(0, 0, 0); - g.drawRect(x * cellHeight + 1, y * cellWidth + 1, cellWidth, cellHeight - 5); + g.drawRect(x, y, cellWidth - 3, cellHeight - 4); } } @@ -322,34 +322,26 @@ // case -1: case Canvas.UP: // case Canvas.KEY_NUM2: // up - if (cursorPixelPosY >= cellWidth) { - cursorPixelPosY = cursorPixelPosY - cellWidth; + if (cursorIndexPosY > 0) cursorIndexPosY--; - } break; // case -2: case Canvas.DOWN: // case Canvas.KEY_NUM8: // down - if (cursorPixelPosY < cellWidth * fieldWidth - cellWidth) { - cursorPixelPosY = cursorPixelPosY + cellWidth; + if (cursorIndexPosY < 9) cursorIndexPosY++; - } break; // case -3: case Canvas.LEFT: // case Canvas.KEY_NUM4: // left - if (cursorPixelPosX >= cellWidth) { - cursorPixelPosX = cursorPixelPosX - cellHeight; + if (cursorIndexPosX > 0) cursorIndexPosX--; - } break; // case -4: case Canvas.RIGHT: // case Canvas.KEY_NUM6: // right - if (cursorPixelPosX <= cellWidth * fieldWidth + cellWidth) { - cursorPixelPosX = cursorPixelPosX + cellHeight; + if (cursorIndexPosX < 9) cursorIndexPosX++; - } break; case Canvas.KEY_NUM7: // debug key - draws whole screen anew updateCrosshairsOnly = false; @@ -436,12 +428,6 @@ }// END SWITCH - // set new position for crosshairs - crosshairs_x1 = cursorPixelPosX + 1; - crosshairs_y1 = cursorPixelPosY + 1; - crosshairs_x2 = cursorPixelPosX + cellWidth + 1; - crosshairs_y2 = cursorPixelPosY + cellHeight - 4; - // draw new data repaint(); } @@ -700,4 +686,4 @@ return observerManager; } -} \ No newline at end of file +} diff -Naur Bubblet_orig/src/highscore/HighScoreManager.java Bubblet_my/src/highscore/HighScoreManager.java --- Bubblet_orig/src/highscore/HighScoreManager.java 2004-08-02 03:26:00.000000000 +0700 +++ Bubblet_my/src/highscore/HighScoreManager.java 2006-03-13 14:09:57.000000000 +0600 @@ -139,9 +139,11 @@ byte[] data = rs.getRecord(1); StringBuffer sb = new StringBuffer(); - for (int i = 0; i < data.length; i++) { - sb.append((char) data[i]); - } + if (data != null) { + for (int i = 0; i < data.length; i++) { + sb.append((char) data[i]); + } + } values = sb.toString(); } } catch (RecordStoreFullException e) { @@ -189,4 +191,4 @@ } } -} \ No newline at end of file +}