From 8766037defc9e7ac5d15306ac85410ad70410945 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Mon, 8 Jun 2015 11:41:01 +0200 Subject: [PATCH 1/5] Fixed a lot of bugs --- audio/Song.java | 7 ++- audio/SongInstance.java | 2 +- audio/sorting/SortALPHA.java | 14 ++++++ audio/sorting/SortPLAYED.java | 14 ++++++ control/GameStateManager.java | 18 +++++-- model/SongHandler.java | 14 +++++- model/gameState/MenuState.java | 16 ++++++- model/gameState/PlayState.java | 71 +++++++++++++++++----------- model/gameState/TitleState.java | 83 ++++++++++++++++----------------- model/objects/InfoPanel.java | 23 ++++----- 10 files changed, 170 insertions(+), 92 deletions(-) create mode 100644 audio/sorting/SortALPHA.java create mode 100644 audio/sorting/SortPLAYED.java diff --git a/audio/Song.java b/audio/Song.java index 50cf23b..007b63a 100644 --- a/audio/Song.java +++ b/audio/Song.java @@ -12,7 +12,7 @@ import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; -public class Song { +public class Song implements Comparable{ private String title; private String subtitle; @@ -150,4 +150,9 @@ public class Song { public void close() { } + + @Override + public int compareTo(Song s) { + return getTitle().compareTo(s.getTitle()); + } } diff --git a/audio/SongInstance.java b/audio/SongInstance.java index 2b73dee..858a3e2 100644 --- a/audio/SongInstance.java +++ b/audio/SongInstance.java @@ -66,7 +66,7 @@ public class SongInstance { for(ButtonInstance i : buttons) { - if(i.getTime() >= progress) + if(i.getTime() > progress) { return b; } diff --git a/audio/sorting/SortALPHA.java b/audio/sorting/SortALPHA.java new file mode 100644 index 0000000..1c05133 --- /dev/null +++ b/audio/sorting/SortALPHA.java @@ -0,0 +1,14 @@ +package audio.sorting; + +import java.util.Comparator; + +import audio.Song; + +public class SortALPHA implements Comparator { + + @Override + public int compare(Song s1, Song s2) { + return s1.getTitle().compareTo(s2.getTitle()); + } + +} diff --git a/audio/sorting/SortPLAYED.java b/audio/sorting/SortPLAYED.java new file mode 100644 index 0000000..7318ee2 --- /dev/null +++ b/audio/sorting/SortPLAYED.java @@ -0,0 +1,14 @@ +package audio.sorting; + +import java.util.Comparator; + +import audio.Song; + +public class SortPLAYED implements Comparator { + + @Override + public int compare(Song s1, Song s2) { + return s1.getAuthor().compareTo(s2.getAuthor()); + } + +} diff --git a/control/GameStateManager.java b/control/GameStateManager.java index f54a926..b8cfe53 100644 --- a/control/GameStateManager.java +++ b/control/GameStateManager.java @@ -1,5 +1,6 @@ package control; +import java.awt.Color; import java.util.ArrayList; import java.util.List; @@ -8,6 +9,8 @@ import model.gameState.GameState; import model.gameState.MenuState; import model.gameState.PlayState; import model.gameState.TitleState; +import control.button.Button; +import control.button.ButtonHandler; public class GameStateManager { @@ -27,24 +30,33 @@ public class GameStateManager { gamestates.add(new TitleState(this, sh)); gamestates.add(new MenuState(this, sh)); gamestates.add(new PlayState(this, sh)); - currentState = gamestates.get(0); + setState(State.TITLE_STATE); } public void setState(State st) { currentState = gamestates.get(st.ordinal()); - currentState.init(); + init(); } public void next() { index++; index %= gamestates.size(); currentState = gamestates.get(index); - currentState.init(); + init(); } public void update(float factor){ currentState.update(factor); fps = (int) (60/(factor/10)); } + + public void init() + { + for (int i = 1; i < ButtonHandler.getButtons().size(); i++) { + Button b = ButtonHandler.getButton(i); + b.setColor(Color.BLACK); + } + currentState.init(); + } } diff --git a/model/SongHandler.java b/model/SongHandler.java index 9caa4ee..2f0538d 100644 --- a/model/SongHandler.java +++ b/model/SongHandler.java @@ -2,6 +2,8 @@ package model; import java.io.File; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import main.Window; @@ -9,6 +11,7 @@ import audio.AudioPlayer; import audio.Song; import audio.SongInstance; import audio.io.DirScanner; +import audio.sorting.SortALPHA; public class SongHandler { @@ -35,10 +38,12 @@ public class SongHandler { if(Window.ON_RASP) dir = new File(System.getProperty( "user.home" ) + "/ColorStrike/Songs/"); else - dir = new File(System.getProperty( "user.home" ) + "/ColorStrike/Songs/"); + dir = new File(System.getProperty( "user.home" ) + "/Documents/Songs/"); songs = DirScanner.scanDirectories(dir); - System.out.println(songs.size()); + + Collections.sort(songs, new SortALPHA()); + updatePlayer(); } @@ -109,5 +114,10 @@ public class SongHandler { p.play(); } + public void sort(Comparator sorter) + { + Collections.sort(songs, sorter); + } + } diff --git a/model/gameState/MenuState.java b/model/gameState/MenuState.java index b6764cb..489ebb9 100644 --- a/model/gameState/MenuState.java +++ b/model/gameState/MenuState.java @@ -21,8 +21,11 @@ import model.objects.DifficultyButton; import model.objects.MenuButton; import audio.Song; import audio.SongInstance; +import audio.sorting.SortALPHA; +import audio.sorting.SortPLAYED; import control.GameStateManager; import control.button.ButtonEvent; +import control.button.ButtonHandler; import control.joystick.Joystick; import control.joystick.JoystickEvent; @@ -60,7 +63,11 @@ public class MenuState extends GameState { } @Override public void init() { + ButtonHandler.getButton(1).setColor(GameModel.colors[0]); + ButtonHandler.getButton(2).setColor(GameModel.colors[2]); + ButtonHandler.getButton(5).setColor(GameModel.colors[1]); + ButtonHandler.getButton(6).setColor(GameModel.colors[4]); } @Override @@ -93,7 +100,6 @@ public class MenuState extends GameState { buttons2.add(new DifficultyButton(yPosDiffButton-instanceNr,si.getDifficulty(), GameModel.colors[i-1])); instanceNr += 100; } - } index++; } @@ -131,6 +137,14 @@ public class MenuState extends GameState { generateSubScreenBackground(); }else if(e.getButton().getButtonID() == 2){ subscreen = false; + }else if(e.getButton().getButtonID() == 5){ + sh.sort(new SortALPHA()); + oldselected = 1; + selected = 0; + }else if(e.getButton().getButtonID() == 6){ + sh.sort(new SortPLAYED()); + oldselected = 1; + selected = 0; } } } diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index 4b44c80..eb91dd6 100644 --- a/model/gameState/PlayState.java +++ b/model/gameState/PlayState.java @@ -16,6 +16,7 @@ import model.objects.PlayArea; import audio.ButtonInstance; import audio.ObjectInstance; import control.GameStateManager; +import control.GameStateManager.State; import control.button.Button; import control.button.ButtonEvent; import control.button.ButtonHandler; @@ -23,8 +24,7 @@ import control.joystick.JoystickEvent; public class PlayState extends GameState { - public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0, - 1024, 1024); + public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0, 1024, 1024); private PlayArea area; private InfoPanel infoPanel; private Player player; @@ -32,7 +32,8 @@ public class PlayState extends GameState { public static int sizeOfEnemy = 40; public static int currentScore = 0; - public static int lifePoints = 100; + public static int comboScore = 0; + public static double lifePoints = 100; private long oldProgress = 0; @@ -45,8 +46,7 @@ public class PlayState extends GameState { // } // player = new Player(1280 - 1024 + 1024 / 2, 1024 / 2); - stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND, - BasicStroke.JOIN_ROUND); + stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } @Override @@ -56,39 +56,39 @@ public class PlayState extends GameState { } catch (InterruptedException e) { e.printStackTrace(); } - + sh.play(); - for(int i=1; i Enemy.distanceToOctagon - + (sizeOfEnemy * 1.5)) { + if (e.getDistanceFromStart() > Enemy.distanceToOctagon + (sizeOfEnemy * 1.5)) { enemyIterator.remove(); + lifePoints -= 5; + comboScore /= 2; } e.update(factor); } } + lifePoints -= 0.002 * factor; + + if(lifePoints <= 0) + gsm.setState(State.MENU_STATE); + if(comboScore >= 100) + { + comboScore = 0; + currentScore += 500; + } + infoPanel.updateIPanel(); } @@ -134,23 +145,29 @@ public class PlayState extends GameState { @Override public void buttonPressed(ButtonEvent e) { - Iterator enemysInPath = area.paths.get(player.getIndex()) - .getEnemysInPath().iterator(); + boolean notHit = true; + Iterator enemysInPath = area.paths.get(player.getIndex()).getEnemysInPath().iterator(); while (enemysInPath.hasNext()) { Enemy enemy = enemysInPath.next(); - if (enemy.getDistanceFromStart() > Enemy.distanceToOctagon - || enemy.getDistanceFromStart() > Enemy.distanceToOctagon - + sizeOfEnemy) { + if (enemy.getDistanceFromStart() > Enemy.distanceToOctagon || enemy.getDistanceFromStart() > Enemy.distanceToOctagon + sizeOfEnemy) { if (e.getButton().getColor().equals(enemy.getColor())) { - currentScore += enemy.getDistanceFromStart() - - Enemy.distanceToOctagon; + currentScore += enemy.getDistanceFromStart() - Enemy.distanceToOctagon; + comboScore += 5; + lifePoints = Math.min(lifePoints+10, 100); enemysInPath.remove(); + notHit = false; break; } } - } - + + if(notHit) + { + if(area.paths.get(player.getIndex()).getEnemysInPath().size() > 0) + { + lifePoints -= 1.5; + } + } } @Override diff --git a/model/gameState/TitleState.java b/model/gameState/TitleState.java index 3f07865..a0ef25e 100644 --- a/model/gameState/TitleState.java +++ b/model/gameState/TitleState.java @@ -7,9 +7,6 @@ import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics2D; -import java.awt.GraphicsConfiguration; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; import java.awt.RenderingHints; import java.awt.Transparency; import java.awt.image.BufferedImage; @@ -23,85 +20,87 @@ import control.joystick.JoystickEvent; public class TitleState extends GameState { - BufferedImage pressStart = Images.getImage(ImageType.pressstart); - BufferedImage colorStrike = Images.getImage(ImageType.colorstrike); - VolatileImage background; + BufferedImage pressStart = Images.getImage(ImageType.pressstart); + BufferedImage colorStrike = Images.getImage(ImageType.colorstrike); + VolatileImage background; Font textFont = new Font("OCR A Extended", Font.BOLD, 15); Font textFont2 = new Font("OCR A Extended", Font.BOLD, 130); - GradientPaint gp = new GradientPaint(300, 0, new Color(0,0,1, 0.6f),980,1024 ,new Color(0,0,1, 0.2f)); - - int index = 0; - int varx = 0; - int frame; + GradientPaint gp = new GradientPaint(300, 0, new Color(0, 0, 1, 0.6f), 980, 1024, new Color(0, 0, 1, 0.2f)); - public TitleState(GameStateManager gsm, SongHandler sh){ + int index = 0; + int varx = 0; + int frame; + + public TitleState(GameStateManager gsm, SongHandler sh) { super(gsm, sh); createBackground(); } + @Override public void init() { - + sh.play(); } @Override public void update(float factor) { - frame++; + frame++; } @Override public void draw(Graphics2D g2) { g2.drawImage(background, 0, 0, 1280, 1024, null); int image_x = ((frame / 6) % 6) * 49; - g2.drawImage(pressStart.getSubimage(image_x, 0, 49, 26), 640-122, 512, 245, 130, null); + g2.drawImage(pressStart.getSubimage(image_x, 0, 49, 26), 640 - 122, 512, 245, 130, null); } - + @Override public void buttonPressed(ButtonEvent e) { - - switch(e.getButton().getButtonID()){ + + switch (e.getButton().getButtonID()) { case 0: gsm.setState(State.MENU_STATE); break; } - - + } + @Override public void buttonReleased(ButtonEvent e) { - + } + @Override public void onJoystickMoved(JoystickEvent e) { } - - public void createBackground(){ + + public void createBackground() { background = Images.initVolatileImage(1280, 1024, Transparency.OPAQUE); Graphics2D g2 = background.createGraphics(); RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2.setRenderingHints(rh); - g2.setColor(new Color(1,1,1, 0.3f)); - g2.fillRect(0,0,1280,1024); - - g2.setColor(new Color(0,1,0, 0.7f)); - g2.fillRect(0,0,100,1024); - g2.fillRect(1180,0,100,1024); - - g2.setColor(new Color(1,1,0, 0.7f)); - g2.fillRect(100,0,100,1024); - g2.fillRect(1080,0,100,1024); - - g2.setColor(new Color(1,0,0, 0.7f)); - g2.fillRect(200,0,100,1024); - g2.fillRect(980,0,100,1024); - + g2.setRenderingHints(rh); + g2.setColor(new Color(1, 1, 1, 0.3f)); + g2.fillRect(0, 0, 1280, 1024); + + g2.setColor(new Color(0, 1, 0, 0.7f)); + g2.fillRect(0, 0, 100, 1024); + g2.fillRect(1180, 0, 100, 1024); + + g2.setColor(new Color(1, 1, 0, 0.7f)); + g2.fillRect(100, 0, 100, 1024); + g2.fillRect(1080, 0, 100, 1024); + + g2.setColor(new Color(1, 0, 0, 0.7f)); + g2.fillRect(200, 0, 100, 1024); + g2.fillRect(980, 0, 100, 1024); + g2.setPaint(gp); g2.fillRect(300, 0, 680, 1024); - + g2.setFont(textFont); g2.setColor(Color.WHITE); - g2.drawString("©2015 Team Hamtaro", 550, 1012); - + g2.drawString("©2015 Team Hamtaro", 550, 1012); + g2.setColor(Color.RED); g2.setFont(textFont2); g2.drawString("Color", 385, 212); diff --git a/model/objects/InfoPanel.java b/model/objects/InfoPanel.java index 86310fd..bc8c7e1 100644 --- a/model/objects/InfoPanel.java +++ b/model/objects/InfoPanel.java @@ -13,31 +13,21 @@ import model.gameState.PlayState; public class InfoPanel { - private String totalHighscore = "XXXXXX"; - private int lifePercent; - private int upgradeScore = 0; + private String totalHighscore = "Score: 000000"; private int x, y; private VolatileImage infoPanel; public InfoPanel(int x, int y){ this.x = x; this.y = y; - generateInfoPanel(); updateIPanel(); + generateInfoPanel(); } public void updateIPanel() { totalHighscore = "Score: " + PlayState.currentScore; - - lifePercent =+ PlayState.lifePoints; - - if(0 <= PlayState.currentScore && PlayState.currentScore <=100) { - if(upgradeScore != PlayState.currentScore){ - upgradeScore = PlayState.currentScore; - generateInfoPanel(); - } - } + generateInfoPanel(); } private void generateInfoPanel(){ @@ -46,18 +36,21 @@ public class InfoPanel { RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHints(rh); g2.setColor(Color.BLACK); + g2.fillRect(x, y, 256, 1024); + Font scoreFont = new Font("OCR A Extended", Font.BOLD, 30); g2.setFont(scoreFont); g2.setColor(Color.ORANGE); + g2.drawString(totalHighscore, 25, 75); g2.drawRect(25, 100, 200, 30); g2.drawRect(25, 300, 200, 700); g2.setColor(Color.GREEN); - g2.fillRect(25, 100, 2 * lifePercent, 30); + g2.fillRect(25, 100, (int)(2 * PlayState.lifePoints), 30); g2.setColor(Color.YELLOW); - g2.fillRect(25, 1000 - 7 * upgradeScore, 200, 0 + 7 * upgradeScore); + g2.fillRect(25, 1000 - 7 * PlayState.comboScore, 200, 0 + 7 * PlayState.comboScore); g2.dispose(); infoPanel.createGraphics(); } From a3069af5c0880b00e01bb9fc7497fca15390cf1c Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Mon, 8 Jun 2015 12:50:51 +0200 Subject: [PATCH 2/5] Bugfix things --- control/GameControl.java | 19 ++++++++++++++---- control/LedHandler.java | 5 +---- main/Window.java | 2 +- model/GameModel.java | 35 +++++++++++++++++++++++----------- model/gameState/PlayState.java | 9 +++++---- 5 files changed, 46 insertions(+), 24 deletions(-) diff --git a/control/GameControl.java b/control/GameControl.java index ae27a28..c7de9d5 100644 --- a/control/GameControl.java +++ b/control/GameControl.java @@ -2,10 +2,9 @@ package control; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Timer; import java.util.TimerTask; -import javax.swing.Timer; - import model.GameModel; import view.GameView; import control.button.ButtonEvent; @@ -27,8 +26,20 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList this.view = view; this.gsm = gsm; view.setIgnoreRepaint(true); - update = new Timer(1000/60,this); - update.start(); +// update = new Timer(1000/60,this); +// update.start(); + Timer update = new Timer(); + update.schedule(new TimerTask() { + + @Override + public void run() { + long currentTime = System.currentTimeMillis(); + model.update(currentTime - lastTime); + lastTime = currentTime; + view.repaint(); + System.out.println("Test"); + } + }, 0,1000/120); } @Override diff --git a/control/LedHandler.java b/control/LedHandler.java index d2904d1..5ff3c59 100644 --- a/control/LedHandler.java +++ b/control/LedHandler.java @@ -15,10 +15,7 @@ public class LedHandler { try { p = Runtime.getRuntime().exec("sudo python led.py"); inp = new BufferedReader( new InputStreamReader(p.getInputStream()) ); - out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) ); - - //setLed(15, 100, 100, 100); - //strobo(); + out = new BufferedWriter( new OutputStreamWriter(p.getOutputStream()) ); } catch (Exception err) { err.printStackTrace(); diff --git a/main/Window.java b/main/Window.java index b1c6d7f..51661d8 100644 --- a/main/Window.java +++ b/main/Window.java @@ -61,7 +61,7 @@ public class Window extends JFrame { final SongHandler sh = new SongHandler(); GameStateManager gsm = new GameStateManager(sh); GameView view = new GameView(led,gsm); - GameModel model = new GameModel(sh, gsm); + GameModel model = new GameModel(sh, gsm, led); GameControl control = new GameControl(model, view,gsm); setContentPane(view); diff --git a/model/GameModel.java b/model/GameModel.java index 21e3de4..ed1ebd6 100644 --- a/model/GameModel.java +++ b/model/GameModel.java @@ -2,24 +2,37 @@ package model; import java.awt.Color; +import main.Window; import control.GameStateManager; +import control.LedHandler; import control.button.ButtonHandler; -public class GameModel{ - - public static Color[] colors = {Color.GREEN,Color.YELLOW,Color.RED,Color.MAGENTA,Color.CYAN,Color.WHITE}; +public class GameModel { + + public static Color[] colors = { Color.GREEN, Color.YELLOW, Color.RED, Color.MAGENTA, Color.CYAN, Color.WHITE }; private GameStateManager gsm; - - public GameModel(SongHandler sh, GameStateManager gsm) - { + private LedHandler led; + + public GameModel(SongHandler sh, GameStateManager gsm, LedHandler led) { this.gsm = gsm; - - for(int i = 1; i < ButtonHandler.getButtons().size(); i++){ - ButtonHandler.getButtons().get(i).setColor(colors[i-1]);; + this.led = led; + + for (int i = 1; i < ButtonHandler.getButtons().size(); i++) { + ButtonHandler.getButtons().get(i).setColor(colors[i - 1]); + ; } } - - public void update(float factor){ + + public void update(float factor) { gsm.update(factor); + + Color c = colors[(int) (Math.random() * (colors.length - 1) + 1)]; + + if (Window.ON_RASP) { + for (int i = 7; i < 54; i++) { + led.setLed(i, c.getRed(), c.getGreen(), c.getBlue()); + } + led.show(); + } } } diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index eb91dd6..5a71a1a 100644 --- a/model/gameState/PlayState.java +++ b/model/gameState/PlayState.java @@ -66,8 +66,6 @@ public class PlayState extends GameState { ButtonHandler.getButton(1).setColor(sh.getCurrentSongInstance().getButtons().get(0).getColor()); - // System.out.println("Diff" + - // sh.getCurrentSongInstance().getDifficulty()); } @Override @@ -78,8 +76,6 @@ public class PlayState extends GameState { for (ButtonInstance bu : sh.getCurrentSongInstance().getButtonsBetween(oldProgress, progress)) { Button b = ButtonHandler.getButton(bu.getButtonID()); b.setColor(bu.getColor()); - // System.out.println(bu.getButtonID() + " - " + bu.getColor()+ - // " / " + b.getColor()); } for (ObjectInstance ob : sh.getCurrentSongInstance().getObjectsBetween(oldProgress, progress)) { @@ -168,6 +164,11 @@ public class PlayState extends GameState { lifePoints -= 1.5; } } + + if(e.getButton().getButtonID() == 0) + { + gsm.setState(State.MENU_STATE); + } } @Override From 0e2c9a53bfbfde5749e281aab4ac582af076a72d Mon Sep 17 00:00:00 2001 From: jancoow Date: Mon, 8 Jun 2015 13:37:54 +0200 Subject: [PATCH 3/5] Faster subscreen drawing --- model/gameState/MenuState.java | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/model/gameState/MenuState.java b/model/gameState/MenuState.java index 489ebb9..c6761d9 100644 --- a/model/gameState/MenuState.java +++ b/model/gameState/MenuState.java @@ -3,6 +3,7 @@ package model.gameState; import image.Images; import image.Images.ImageType; +import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; @@ -37,7 +38,7 @@ public class MenuState extends GameState { private int animationcounter; private boolean subscreen, startanimation; - private VolatileImage mainScreenBackground, subScreenBackground; + private VolatileImage mainScreenBackground, subScreenBackground, subScreenForeground; int yPosDiffButton = 900; private int difSelect=0; @@ -59,7 +60,8 @@ public class MenuState extends GameState { buttons.add(new MenuButton(-600, 350, 1.7, 30, Color.yellow,selectedToSong(selected+1))); buttons.add(new MenuButton(-600, 450, 1.7, 30, Color.WHITE,selectedToSong(selected+2))); buttons.get(2).setSelected(true); - generateMainScreenBackground(); + generateMainScreenBackground(); + generateSubScreenBackground(); } @Override public void init() { @@ -114,6 +116,7 @@ public class MenuState extends GameState { } if(subscreen) { g2.drawImage(subScreenBackground,0,0,1280,1024,null); + g2.drawImage(subScreenForeground,0,0,1280,1024,null); index%=25; int y = (index/5)*75; int x = (index%5)*75; @@ -134,7 +137,7 @@ public class MenuState extends GameState { }else{ //Screen for selecting song if(e.getButton().getButtonID() == 1){ subscreen = true; - generateSubScreenBackground(); + generateSubScreenForeground(); }else if(e.getButton().getButtonID() == 2){ subscreen = false; }else if(e.getButton().getButtonID() == 5){ @@ -168,7 +171,7 @@ public class MenuState extends GameState { } } sh.set(sh.getCurrentSong().getSongs().get(difSelect)); - generateSubScreenBackground(); + generateSubScreenForeground(); }else{ //Screen for selecting song if(e.getJoystick().getPos() == Joystick.Position.DOWN){ selected++; @@ -215,7 +218,6 @@ public class MenuState extends GameState { Graphics2D g2 = subScreenBackground.createGraphics(); RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHints(rh); - g2.setFont(textFont2); g2.setColor(Color.BLACK); GradientPaint gp3 = new GradientPaint(640, 1024/8,Color.BLUE,640,1024 ,Color.WHITE); g2.setPaint(gp3); @@ -226,6 +228,20 @@ public class MenuState extends GameState { g2.setColor(Color.ORANGE); g2.fillRect(0, 0, 1280, 1024/8); g2.setColor(Color.BLACK); + g2.dispose(); + subScreenBackground.createGraphics(); + } + + public void generateSubScreenForeground(){ + subScreenForeground = Images.initVolatileImage(1280, 1024, Transparency.TRANSLUCENT); + Graphics2D g2 = subScreenForeground.createGraphics(); + RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2.setComposite(AlphaComposite.DstOut); + g2.fillRect(0, 0, subScreenForeground.getWidth(), subScreenForeground.getHeight()); + g2.setComposite(AlphaComposite.SrcOver); + g2.setRenderingHints(rh); + g2.setColor(Color.BLACK); + g2.setFont(textFont2); g2.drawString(selectedToSong(selected).getTitle(), 30, 60); @@ -237,8 +253,8 @@ public class MenuState extends GameState { for(DifficultyButton b : buttons2){ b.draw(g2); } - g2.dispose(); - subScreenBackground.createGraphics(); + g2.dispose(); + subScreenForeground.createGraphics(); } public void buttonInAnimation(int button){ From 0525163195d8564b3e5aacd07c0627afc41ceb87 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Mon, 8 Jun 2015 13:45:28 +0200 Subject: [PATCH 4/5] GamePlay fixes --- control/GameControl.java | 33 ++++++++++++++++----------------- model/gameState/PlayState.java | 10 ++++++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/control/GameControl.java b/control/GameControl.java index c7de9d5..42bdbb4 100644 --- a/control/GameControl.java +++ b/control/GameControl.java @@ -2,8 +2,8 @@ package control; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.Timer; -import java.util.TimerTask; + +import javax.swing.Timer; import model.GameModel; import view.GameView; @@ -26,20 +26,20 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList this.view = view; this.gsm = gsm; view.setIgnoreRepaint(true); -// update = new Timer(1000/60,this); -// update.start(); - Timer update = new Timer(); - update.schedule(new TimerTask() { - - @Override - public void run() { - long currentTime = System.currentTimeMillis(); - model.update(currentTime - lastTime); - lastTime = currentTime; - view.repaint(); - System.out.println("Test"); - } - }, 0,1000/120); + update = new Timer(1000/60,this); + update.start(); +// Timer update = new Timer(); +// update.schedule(new TimerTask() { +// +// @Override +// public void run() { +// long currentTime = System.currentTimeMillis(); +// model.update(currentTime - lastTime); +// lastTime = currentTime; +// view.repaint(); +// System.out.println("Test"); +// } +// }, 0,1000/120); } @Override @@ -66,5 +66,4 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList lastTime = currentTime; view.repaint(); } - } diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index 5a71a1a..1bb3a71 100644 --- a/model/gameState/PlayState.java +++ b/model/gameState/PlayState.java @@ -41,16 +41,18 @@ public class PlayState extends GameState { super(gsm, sh); infoPanel = new InfoPanel(0, 0); area = new PlayArea(256, 1024, 1024, 125); - // for(int index = 0; index < 8; index++){ - // addEnemy(index, GameModel.colors[index % 6]); - // } - // player = new Player(1280 - 1024 + 1024 / 2, 1024 / 2); stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } @Override public void init() { + + lifePoints = 100; + currentScore = 0; + comboScore = 0; + oldProgress = 0 ; + try { Thread.sleep(2000); } catch (InterruptedException e) { From 861a973cde176f96365764cc31dd83bc7d8a28dc Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Mon, 8 Jun 2015 13:54:26 +0200 Subject: [PATCH 5/5] Fixed resetting playState --- model/gameState/PlayState.java | 5 +++++ model/objects/InfoPanel.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index 1bb3a71..5d5f55f 100644 --- a/model/gameState/PlayState.java +++ b/model/gameState/PlayState.java @@ -53,6 +53,11 @@ public class PlayState extends GameState { comboScore = 0; oldProgress = 0 ; + for(Path p : area.paths) + { + p.getEnemysInPath().clear(); + } + try { Thread.sleep(2000); } catch (InterruptedException e) { diff --git a/model/objects/InfoPanel.java b/model/objects/InfoPanel.java index bc8c7e1..2d1e702 100644 --- a/model/objects/InfoPanel.java +++ b/model/objects/InfoPanel.java @@ -58,4 +58,9 @@ public class InfoPanel { public void draw(Graphics2D g2){ g2.drawImage(infoPanel, 0, 0, 256,1024,null); } + + public String getTotalHighscore() + { + return totalHighscore; + } }