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/io/JSONReader.java b/audio/io/JSONReader.java index 0bfc7e9..8836e54 100644 --- a/audio/io/JSONReader.java +++ b/audio/io/JSONReader.java @@ -57,15 +57,19 @@ public class JSONReader { throw new FileNotFoundException("Audio file does not exist: " + audio.getPath()); s.setAudio(audio); + /* File background = new File(f.getParent() + File.separator + file.getString("background")); if(!background.exists() || !(background.getName().toLowerCase().endsWith(".jpg") || background.getName().toLowerCase().endsWith(".png"))) throw new FileNotFoundException("Background image does not exist: " + background.getPath()); - s.setBackground(background); + s.setBackground(background);*/ + s.setBackground(null); + /* File banner = new File(f.getParent() + File.separator + file.getString("banner")); if(!banner.exists() || !(banner.getName().toLowerCase().endsWith(".jpg") || banner.getName().toLowerCase().endsWith(".png"))) throw new FileNotFoundException("Banner image does not exist: " + banner.getPath()); - s.setBanner(banner); + s.setBanner(banner);*/ + s.setBanner(null); s.setFile(f); 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/GameControl.java b/control/GameControl.java index ae27a28..42bdbb4 100644 --- a/control/GameControl.java +++ b/control/GameControl.java @@ -2,7 +2,6 @@ package control; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.TimerTask; import javax.swing.Timer; @@ -29,6 +28,18 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList 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); } @Override @@ -55,5 +66,4 @@ public class GameControl implements JoystickListener, ButtonListener, ActionList lastTime = currentTime; view.repaint(); } - } 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/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/image/Images.java b/image/Images.java index a3b7d90..2408345 100644 --- a/image/Images.java +++ b/image/Images.java @@ -31,8 +31,6 @@ public class Images { images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/colorstrike.png")))); images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/background.png")))); images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/aanwijzers4sho.png")))); - images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/MenuAchtergrond.png")))); - images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/SubmenuAchtergrond.png")))); images.add(toCompatibleImage(ImageIO.read(Main.class.getResource("/image/kast.png")))); } catch (IOException e) { e.printStackTrace(); @@ -44,7 +42,7 @@ public class Images { } public enum ImageType { - pulse,cursor,pressstart,colorstrike,background,aanwijzers,menuachtergrond,subMenu,kast + pulse,cursor,pressstart,colorstrike,background,aanwijzers,kast } public static BufferedImage readImage(File f) { diff --git a/image/MenuAchtergrond.png b/image/MenuAchtergrond.png deleted file mode 100644 index d16d750..0000000 Binary files a/image/MenuAchtergrond.png and /dev/null differ diff --git a/image/SubmenuAchtergrond.png b/image/SubmenuAchtergrond.png deleted file mode 100644 index 589dc4b..0000000 Binary files a/image/SubmenuAchtergrond.png and /dev/null differ 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..5c55122 100644 --- a/model/GameModel.java +++ b/model/GameModel.java @@ -2,24 +2,43 @@ 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; + private int count = 0; + + 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) { + count++; + if(count>15) + { + for (int i = 7; i < 54; i++) { + led.setLed(i, c.getRed(), c.getGreen(), c.getBlue()); + } + led.show(); + count = 0; + } + } } } diff --git a/model/SongHandler.java b/model/SongHandler.java index 3975268..c3a444d 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 { @@ -38,7 +41,9 @@ public class SongHandler { 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 cbdb9cc..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; @@ -21,8 +22,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; @@ -34,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; @@ -42,9 +46,6 @@ public class MenuState extends GameState { BufferedImage aanwijzers = Images.getImage(ImageType.aanwijzers); int index = 0; - BufferedImage menuAchtergrond = Images.getImage(ImageType.menuachtergrond); - BufferedImage subMenu = Images.getImage(ImageType.subMenu); - public MenuState(GameStateManager gsm, SongHandler sh) { super(gsm, sh); buttons = new ArrayList(); @@ -59,11 +60,16 @@ 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() { + 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 @@ -96,7 +102,6 @@ public class MenuState extends GameState { buttons2.add(new DifficultyButton(yPosDiffButton-instanceNr,si.getDifficulty(), GameModel.colors[i-1])); instanceNr += 100; } - } index++; } @@ -111,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; @@ -131,9 +137,17 @@ 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){ + sh.sort(new SortALPHA()); + oldselected = 1; + selected = 0; + }else if(e.getButton().getButtonID() == 6){ + sh.sort(new SortPLAYED()); + oldselected = 1; + selected = 0; } } } @@ -157,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++; @@ -175,7 +189,16 @@ public class MenuState extends GameState { RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHints(rh); g2.setFont(textFont2); - g2.drawImage(menuAchtergrond,0,0,1280,1024,null); + g2.setPaint(new GradientPaint(0, 0, new Color(0,0,1, 0.6f),1280,1024 ,new Color(0,0,1, 0.2f))); + g2.fillRect(0, 0, 1280, 1024); + g2.setPaint(new GradientPaint(0, 0, new Color(1,1,0, 0.6f),1280,1024 ,new Color(0,0,1, 0.2f))); + + + Polygon triangle2 = new Polygon(); + triangle2.addPoint(0, 0); + triangle2.addPoint(0, 1024/4+50); + triangle2.addPoint(1280/2+50, 0); + g2.fillPolygon(triangle2); g2.setColor(Color.ORANGE); Polygon triangle = new Polygon(); @@ -195,13 +218,30 @@ 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); - g2.drawImage(subMenu, 0, 0, 1280, 1024, null); - + GradientPaint gp3 = new GradientPaint(640, 1024/8,Color.BLUE,640,1024 ,Color.WHITE); + g2.setPaint(gp3); + g2.fillRect(0, 0, 1280, 1024); + GradientPaint gp4 = new GradientPaint(0, 0,new Color(1,1,0,0.6f),1280,1024,new Color(1,1,1,0.2f)); + g2.setPaint(gp4); + g2.fillRect(0,128,1280,25); 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); @@ -213,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){ diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index ee61bd2..ce26f00 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; @@ -40,55 +41,57 @@ 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); + stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } @Override public void init() { + + lifePoints = 100; + currentScore = 0; + comboScore = 0; + oldProgress = 0 ; + + for(Path p : area.paths) + { + p.getEnemysInPath().clear(); + } + try { Thread.sleep(2000); } 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,25 +148,37 @@ 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; } } - } + player.setBeat(); + if(notHit) + { + if(area.paths.get(player.getIndex()).getEnemysInPath().size() > 0) + { + lifePoints -= 1.5; + } + } + + if(e.getButton().getButtonID() == 0) + { + gsm.setState(State.MENU_STATE); + } } @Override diff --git a/model/gameState/TitleState.java b/model/gameState/TitleState.java index 69d3a94..da64bfc 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; @@ -29,7 +26,8 @@ public class TitleState extends GameState { 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)); + 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; @@ -43,9 +41,10 @@ public class TitleState extends GameState { super(gsm, sh); createBackground(); } + @Override public void init() { - + sh.play(); } @Override @@ -68,53 +67,54 @@ public class TitleState extends GameState { //g2.drawImage(kast.getSubimage(xKast*300,0,300,400), 640-122,650,300,400,null); g2.drawImage(kast.getSubimage(xKast*300,0,300,400), 100,300,300,400,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..2d1e702 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(); } @@ -65,4 +58,9 @@ public class InfoPanel { public void draw(Graphics2D g2){ g2.drawImage(infoPanel, 0, 0, 256,1024,null); } + + public String getTotalHighscore() + { + return totalHighscore; + } } diff --git a/view/GameView.java b/view/GameView.java index d6fd431..12de944 100644 --- a/view/GameView.java +++ b/view/GameView.java @@ -13,41 +13,36 @@ import javax.swing.JPanel; import control.GameStateManager; import control.LedHandler; -public class GameView extends JPanel{ - +public class GameView extends JPanel { + /** * */ private static final long serialVersionUID = 1939480784205689618L; - - + LedHandler led; GameStateManager gsm; - Font fpsfont = new Font("OCR A Extended", Font.BOLD, 60); - - public GameView(LedHandler led,GameStateManager gsm) - { - this.led=led; - this.gsm = gsm; - this. - setPreferredSize(new Dimension(1280,1024)); + + // Font fpsfont = new Font("OCR A Extended", Font.BOLD, 60); + + public GameView(LedHandler led, GameStateManager gsm) { + this.led = led; + this.gsm = gsm; + this.setPreferredSize(new Dimension(1280, 1024)); } @Override - public void paintComponent(Graphics g) - { + public void paintComponent(Graphics g) { super.paintComponent(g); - + Graphics2D g2d = (Graphics2D) g; - RenderingHints rh = new RenderingHints( - RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); - g2d.setRenderingHints(rh); - gsm.currentState.draw(g2d); - - g2d.setColor(Color.RED); - g2d.setFont(fpsfont); - g2d.drawString(gsm.fps + "fps", 1000, 40); + RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHints(rh); + gsm.currentState.draw(g2d); + + //g2d.setColor(Color.RED); + //g2d.setFont(fpsfont); + //g2d.drawString(gsm.fps + "fps", 1000, 40); Toolkit.getDefaultToolkit().sync(); - } + } }