This commit is contained in:
Pan 2019-05-23 23:31:33 +12:00
parent 3bdf85da14
commit ffd419a178
3 changed files with 153 additions and 18 deletions

View File

@ -17,7 +17,7 @@ public class highscoreManager implements Runnable{
public boolean isSleeping; public boolean isSleeping;
public String[] result; public String[][] result;
public highscoreManager(){ public highscoreManager(){
status = processing; status = processing;
@ -47,24 +47,86 @@ public class highscoreManager implements Runnable{
if(task != none) { if(task != none) {
status = processing; status = processing;
//get high scroes from remote database if(task == loadHighscores) {
result = new String[] {}; //get high scores from remote database
Statement stmt;
try {
String[][] myResult = new String[30][2];
int numOfRows = 0;
stmt = connect.createStatement();
ResultSet rs=stmt.executeQuery("select * from highscore where skillLevel = 0 order by finishingTime");
while(rs.next()) {
myResult[numOfRows][0] = rs.getString(1);
myResult[numOfRows][1] = secondsToString(rs.getInt(2));
numOfRows++;
if(numOfRows == 10)
break;
}
numOfRows = 10;
rs=stmt.executeQuery("select * from highscore where skillLevel = 1 order by finishingTime");
while(rs.next()) {
myResult[numOfRows][0] = rs.getString(1);
myResult[numOfRows][1] = secondsToString(rs.getInt(2));
numOfRows++;
if(numOfRows == 20)
break;
}
numOfRows = 20;
rs=stmt.executeQuery("select * from highscore where skillLevel = 2 order by finishingTime");
while(rs.next()) {
myResult[numOfRows][0] = rs.getString(1);
myResult[numOfRows][1] = secondsToString(rs.getInt(2));
numOfRows++;
if(numOfRows == 30)
break;
}
result = myResult;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
status = error;
result = null;
}
}
if(status != error)
status = idle; status = idle;
task = none; task = none;
} }
} }
isSleeping = true;
try { try {
Thread.sleep(1000); Thread.sleep(1000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
isSleeping = false;
counter++; counter++;
} }
} }
public String secondsToString(int pTime) {
int min = pTime/60;
int sec = pTime-(min*60);
String strMin = placeZeroIfNeede(min);
String strSec = placeZeroIfNeede(sec);
return String.format("%s:%s",strMin,strSec);
}
public String placeZeroIfNeede(int number) {
return (number >=10)? Integer.toString(number):String.format("0%s",Integer.toString(number));
}
} }

View File

@ -593,9 +593,8 @@ public class mainThread extends JFrame implements KeyListener, ActionListener, M
sleepTime = frameInterval - (System.currentTimeMillis()-lastDraw); sleepTime = frameInterval - (System.currentTimeMillis()-lastDraw);
try { try {
long takeOne = sleepTime/2;
if(sleepTime > 0) { if(sleepTime > 0) {
long takeOne = sleepTime/2;
Thread.sleep(takeOne); Thread.sleep(takeOne);
if(capturedMouse && !mouseLeftScreen && !focusLost) { if(capturedMouse && !mouseLeftScreen && !focusLost) {

View File

@ -1,6 +1,7 @@
package gui; package gui;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.awt.Image; import java.awt.Image;
import java.awt.image.PixelGrabber; import java.awt.image.PixelGrabber;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
@ -24,8 +25,8 @@ public class gameMenu {
public int[] titleImage, lightTankImage, rocketTankImage, stealthTankImage, heavyTankImage; public int[] titleImage, lightTankImage, rocketTankImage, stealthTankImage, heavyTankImage;
public button newGame, unpauseGame, showHelp, showOptions, showHighscores, quitGame, abortGame, easyGame, normalGame, hardGame, quitDifficulty, quitHelpMenu, quitOptionMenu, nextPage, previousPage, public button newGame, unpauseGame, showHelp, showOptions, showHighscores, quitGame, abortGame, easyGame, normalGame, hardGame, quitDifficulty, quitHelpMenu, quitOptionMenu, quitHighscoreMenu, nextPage, previousPage,
enableMouseCapture, disableMouseCapture, enableFogOfWar, disableFogOfWar; enableMouseCapture, disableMouseCapture, enableFogOfWar, disableFogOfWar, confirmErrorLoadingHighscore;
public char[] easyDescription, normalDescription, hardDescription, helpPage1, helpPage2, helpPage3, helpPage4, mouseMode; public char[] easyDescription, normalDescription, hardDescription, helpPage1, helpPage2, helpPage3, helpPage4, mouseMode;
@ -148,6 +149,9 @@ public class gameMenu {
quitOptionMenu = new button("quitOptionMenu", "x", 620, 80, 18,16); quitOptionMenu = new button("quitOptionMenu", "x", 620, 80, 18,16);
buttons.add(quitOptionMenu); buttons.add(quitOptionMenu);
quitHighscoreMenu = new button("quitHighscoreMenu", "x", 570, 80, 18,16);
buttons.add(quitHighscoreMenu);
nextPage = new button("nextPage", "Next Page", 550, 450, 120, 28); nextPage = new button("nextPage", "Next Page", 550, 450, 120, 28);
buttons.add(nextPage); buttons.add(nextPage);
@ -165,6 +169,9 @@ public class gameMenu {
disableFogOfWar = new button("disableFogOfWar", "Enabled", 545, 215, 80, 25); disableFogOfWar = new button("disableFogOfWar", "Enabled", 545, 215, 80, 25);
buttons.add(disableFogOfWar); buttons.add(disableFogOfWar);
confirmErrorLoadingHighscore = new button("confirmErrorLoadingHighscore", "Ok", 350, 280, 80, 25);
buttons.add(confirmErrorLoadingHighscore);
} }
@ -217,6 +224,7 @@ public class gameMenu {
if(!gameStarted) { if(!gameStarted) {
newGame.display = true; newGame.display = true;
quitGame.display = true; quitGame.display = true;
showHighscores.display = true;
}else { }else {
unpauseGame.display = true; unpauseGame.display = true;
abortGame.display = true; abortGame.display = true;
@ -224,7 +232,7 @@ public class gameMenu {
showHelp.display = true; showHelp.display = true;
showOptions.display = true; showOptions.display = true;
showHighscores.display = true;
}else if(menuStatus == difficulitySelectionMenu) { }else if(menuStatus == difficulitySelectionMenu) {
if(postProcessingThread.escapeKeyPressed) { if(postProcessingThread.escapeKeyPressed) {
@ -330,16 +338,14 @@ public class gameMenu {
}else if(menuStatus == highscoreMenu) { }else if(menuStatus == highscoreMenu) {
if(postProcessingThread.escapeKeyPressed) { if(postProcessingThread.escapeKeyPressed) {
menuStatus = mainMenu; quitHighscoreMenu();
theHighscoreManager.task = theHighscoreManager.none;
if(theHighscoreManager.status == theHighscoreManager.idle) {
theHighscoreManager.result = null;
}
}else { }else {
drawTitle(); drawTitle();
drawMenuFrame(420, 360); drawMenuFrame(420, 360);
textRenderer tRenderer = postProcessingThread.theTextRenderer;
if(theHighscoreManager.status == theHighscoreManager.processing) { if(theHighscoreManager.status == theHighscoreManager.processing) {
drawLoadingScreen(screen); drawLoadingScreen(screen);
}else if(theHighscoreManager.status == theHighscoreManager.idle) { }else if(theHighscoreManager.status == theHighscoreManager.idle) {
@ -347,11 +353,16 @@ public class gameMenu {
theHighscoreManager.task = theHighscoreManager.loadHighscores; theHighscoreManager.task = theHighscoreManager.loadHighscores;
drawLoadingScreen(screen); drawLoadingScreen(screen);
}else if(theHighscoreManager.task == theHighscoreManager.none && theHighscoreManager.result != null) { }else if(theHighscoreManager.task == theHighscoreManager.none && theHighscoreManager.result != null) {
//draw high scores drawHighscore();
}else if(theHighscoreManager.isSleeping && theHighscoreManager.result == null) {
drawLoadingScreen(screen);
} }
}else if(theHighscoreManager.status == theHighscoreManager.error) { }else if(theHighscoreManager.status == theHighscoreManager.error) {
tRenderer.drawMenuText(240,250,"Cannot load high scores, try again later.".toCharArray(), screen, 255,255,255,0);
confirmErrorLoadingHighscore.display=true;
} }
quitHighscoreMenu.display = true;
} }
} }
@ -361,9 +372,66 @@ public class gameMenu {
} }
public void drawHighscore() {
textRenderer tRenderer = postProcessingThread.theTextRenderer;
String[][] result = theHighscoreManager.result;
int startRow = 0;
//draw high scores
if(highscoreLevel == 1) {
tRenderer.drawText_outline(280,100,"Highscores for normal difficulty", screen, 0xffffff,0);
startRow = 10;
}
tRenderer.drawText_outline(230,130," Rank Player Name Time", screen, 0xf2989d,0);
tRenderer.drawText_outline(230,135,"_____________________________________________", screen, 0xaaaaaa,0);
for(int i = startRow; i < startRow + 10; i++) {
int color = 0xbbbbbb;
if(i -startRow == 0)
color = 0xffe559;
if(i -startRow == 1)
color = 0xe8e9ea;
if(i -startRow == 2)
color = 0xc99684;
if(i -startRow == 9)
tRenderer.drawText_outline(220,160 + (i -startRow)*25, " " + (i -startRow + 1), screen, color,0);
else
tRenderer.drawText_outline(223,160 + (i -startRow)*25, " " + (i -startRow + 1), screen, color,0);
if(result[i][0] != null) {
int l = (30 - result[i][0].length())/2;
tRenderer.drawText_outline(230,160 + (i -startRow)*25, " " + result[i][1], screen, color,0);
tRenderer.drawText_outline(275 + l*7,160 + (i -startRow)*25, result[i][0], screen, color,0);
}
}
}
public void drawLoadingScreen(int[] screen) { public void drawLoadingScreen(int[] screen) {
textRenderer tRenderer = postProcessingThread.theTextRenderer; textRenderer tRenderer = postProcessingThread.theTextRenderer;
tRenderer.drawMenuText(82,90,"busy".toCharArray(), screen, 255,255,255,0);
if(postProcessingThread.frameIndex%50 < 10) {
tRenderer.drawMenuText(360,250,"Loading....".toCharArray(), screen, 255,255,255,0);
}else if(postProcessingThread.frameIndex%50 >= 10 && postProcessingThread.frameIndex%50 < 20) {
tRenderer.drawMenuText(360,250,"Loading".toCharArray(), screen, 255,255,255,0);
}else if(postProcessingThread.frameIndex%50 >= 20 && postProcessingThread.frameIndex%50 < 30) {
tRenderer.drawMenuText(360,250,"Loading.".toCharArray(), screen, 255,255,255,0);
}else if(postProcessingThread.frameIndex%50 >= 30 && postProcessingThread.frameIndex%50 < 40) {
tRenderer.drawMenuText(360,250,"Loading..".toCharArray(), screen, 255,255,255,0);
}else {
tRenderer.drawMenuText(360,250,"Loading...".toCharArray(), screen, 255,255,255,0);
}
}
public void quitHighscoreMenu() {
menuStatus = mainMenu;
theHighscoreManager.task = theHighscoreManager.none;
if(theHighscoreManager.status == theHighscoreManager.idle) {
theHighscoreManager.result = null;
}
highscoreLevel = 1;
} }
public void updateButtons() { public void updateButtons() {
@ -387,6 +455,12 @@ public class gameMenu {
currentHelpPage--; currentHelpPage--;
}else if(buttons.get(i).name == "showHighscores") { }else if(buttons.get(i).name == "showHighscores") {
menuStatus = highscoreMenu; menuStatus = highscoreMenu;
if(theHighscoreManager.status == theHighscoreManager.error) {
theHighscoreManager.counter = 0;
theHighscoreManager.status = theHighscoreManager.idle;
}
}else if(buttons.get(i).name == "quitHighscoreMenu" || buttons.get(i).name == "confirmErrorLoadingHighscore") {
quitHighscoreMenu();
} }
postProcessingThread.buttonAction = buttons.get(i).name; postProcessingThread.buttonAction = buttons.get(i).name;