package com.jpii.navalbattle.game.gui; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import com.jpii.navalbattle.game.NavalGame; import com.jpii.navalbattle.game.entity.MoveableEntity; import com.jpii.navalbattle.game.entity.PortEntity; import com.jpii.navalbattle.game.entity.Submarine; import com.jpii.navalbattle.pavo.grid.Entity; import com.jpii.navalbattle.pavo.gui.NewWindowManager; import com.jpii.navalbattle.pavo.gui.controls.Control; import com.jpii.navalbattle.pavo.gui.controls.PButton; import com.jpii.navalbattle.pavo.gui.controls.PImage; import com.jpii.navalbattle.pavo.gui.events.PMouseEvent; import com.jpii.navalbattle.game.turn.PortShop; import com.jpii.navalbattle.game.turn.ShipShop; import com.jpii.navalbattle.game.turn.TurnManager; import com.jpii.navalbattle.util.FileUtils; public class MidHud{ PImage missile; PImage bullet; PImage move; PImage shop; PImage elevation; PImage airstrike; PButton missileB; PButton bulletB; PButton moveB; PButton shopB; PButton elevationB; PButton nextMove; PButton nextEntity; Entity display; MoveableEntity moveE; NewWindowManager parent; int width,height; String store = "Shop"; String secondary = "Missiles"; String cannon = "Guns"; String transport = "Move"; String submerge = "Submerge"; TurnManager tm; public MidHud(Control c, TurnManager tm,NewWindowManager pare){ initButtons(c); width = c.getWidth(); height = c.getHeight(); parent = pare; this.tm = tm; } public void draw(Graphics2D g){ drawText(g); } public void setEntity(Entity e,MoveableEntity me){ moveE = me; if(display!=null){ if(moveE==null || !display.equals(moveE)){ if(display.getHandle()%10 == 1){ MoveableEntity display = (MoveableEntity)this.display; if(display.isMovableTileBeingShown()){ display.toggleMoveable(); } if(display.isPrimaryTileBeingShown()){ display.togglePrimaryRange(); } if(display.isSecondaryTileBeingShown()){ display.toggleSecondaryRange(); } } } } display = e; } private void drawText(Graphics2D g){ g.setColor(Color.black); Font temp = g.getFont(); Font perks = new Font("Arial",0,10); g.setFont(perks); g.drawString(store,(width/2)-123,height-62); g.drawString(secondary,(width/2)-73,height-62); g.drawString(cannon,(width/2)-13,height-62); g.drawString(transport,(width/2)+42,height-62); g.drawString(submerge,(width/2)+87,height-62); g.setFont(temp); } public void update(){ move.setVisible(false); moveB.setVisible(false); missile.setVisible(false); missileB.setVisible(false); bullet.setVisible(false); bulletB.setVisible(false); shop.setVisible(false); shopB.setVisible(false); elevation.setVisible(false); elevationB.setVisible(false); airstrike.setVisible(false); store = ""; secondary = ""; cannon = ""; transport = ""; submerge = ""; if(display!=null){ if(moveE!=null){ if(moveE.getHandle()==11){ Submarine sub = (Submarine)moveE; elevationB.setVisible(true); submerge = "Submerge"; if(!sub.isSumberged()&&sub.canSubmerge()&&tm.getTurn().getPlayer().myEntity(sub)) elevation.setVisible(true); } if(moveE.getMaxMovement()!=moveE.getMoved()){ move.setVisible(true); transport = "Move"; } if(!moveE.getUsedGuns()) bullet.setVisible(true); if(!moveE.getUsedMissiles()) missile.setVisible(true); if(tm.getTurn().getPlayer().myEntity(moveE)){ shop.setVisible(true); store = "Shop"; shopB.setVisible(true); } moveB.setVisible(true); missileB.setVisible(true); secondary = "Missiles"; bulletB.setVisible(true); cannon = "Guns"; if(moveE.getHandle()==21){ airstrike.setVisible(!moveE.getUsedMissiles()); missile.setVisible(false); secondary = "Airstrike"; } } if(display.getHandle()%10 == 2){ PortEntity temp = (PortEntity) display; shopB.setVisible(false); if(tm.getTurn().getPlayer().myEntity(temp)){ shopB.setVisible(true); shop.setVisible(true); store = "Shop"; } } } } private void initButtons(Control c){ c.addControl(shopB = new PButton(c,(c.getWidth()/2)-125,c.getHeight()-60,32,31)); c.addControl(missileB = new PButton(c,(c.getWidth()/2)-70,c.getHeight()-60,32,31)); c.addControl(bulletB = new PButton(c,(c.getWidth()/2)-15,c.getHeight()-60,32,31)); c.addControl(moveB = new PButton(c,(c.getWidth()/2)+40,c.getHeight()-60,32,31)); c.addControl(elevationB = new PButton(c,(c.getWidth()/2)+95,c.getHeight()-60,32,31)); c.addControl(nextMove = new PButton(c,"End Turn",(c.getWidth()/2)-78,c.getHeight()-130,150,40)); c.addControl(nextEntity = new PButton(c,"Next Ship",(c.getWidth()/2)+120,c.getHeight()-130,70,20)); nextMove.setFont(new Font("Arial",0,35)); nextEntity.setFont(new Font("Arial",0,15)); missile = new PImage(c); bullet = new PImage(c); move = new PImage(c); shop = new PImage(c); elevation = new PImage(c); airstrike = new PImage(c); shop.setLoc((c.getWidth()/2)-125,c.getHeight()-60); missile.setLoc((c.getWidth()/2)-70,c.getHeight()-60); bullet.setLoc((c.getWidth()/2)-15,c.getHeight()-60); move.setLoc((c.getWidth()/2)+40,c.getHeight()-60); elevation.setLoc((c.getWidth()/2)+95,c.getHeight()-60); airstrike.setLoc((c.getWidth()/2)-70,c.getHeight()-60); shop.setSize(30,30); missile.setSize(30,30); bullet.setSize(30,30); move.setSize(30,30); elevation.setSize(30,30); airstrike.setSize(30,30); shop.setImage(PImage.registerImage(FileUtils.getImage("drawable-game/Buttons/Shop.png"))); missile.setImage(PImage.registerImage(FileUtils.getImage("drawable-game/Buttons/Missile.png"))); bullet.setImage(PImage.registerImage(FileUtils.getImage("drawable-game/Buttons/Bullet.png"))); move.setImage(PImage.registerImage(FileUtils.getImage("drawable-game/Buttons/Move.png"))); elevation.setImage(PImage.registerImage(FileUtils.getImage("drawable-game/Buttons/Elevation.png"))); airstrike.setImage(PImage.registerImage(FileUtils.getImage("drawable-game/Buttons/Airplane.png"))); shop.repaint(); missile.repaint(); bullet.repaint(); move.repaint(); elevation.repaint(); airstrike.repaint(); c.addControl(shop); c.addControl(missile); c.addControl(bullet); c.addControl(move); c.addControl(elevation); c.addControl(airstrike); moveB.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { moveAction(); } }); nextMove.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { turnAction(); } }); bulletB.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { primaryAction(); } }); missileB.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { secondaryAction(); } }); elevationB.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { submergeAction(); } }); shopB.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { shopAction(); } }); nextEntity.addMouseListener(new PMouseEvent(){ public void mouseDown(int x, int y, int buttonid) { nextAction(); } }); c.repaint(); } public void moveAction(){ if(move.isVisible()){ if(moveE!=null){ if(moveE.isSecondaryTileBeingShown()) moveE.toggleSecondaryRange(); if(moveE.isPrimaryTileBeingShown()) moveE.togglePrimaryRange(); moveE.toggleMoveable(); } } update(); } public void turnAction(){ if(nextMove.isVisible()){ if(!TurnConfirmation.viewed){ new TurnConfirmation(parent,(NavalGame)parent.getGame()); } } update(); } public void primaryAction(){ if(bullet.isVisible()){ if(moveE!=null){ if(moveE.isMovableTileBeingShown()) moveE.toggleMoveable(); if(moveE.isSecondaryTileBeingShown()) moveE.toggleSecondaryRange(); moveE.togglePrimaryRange(); } } update(); } public void secondaryAction(){ if(missile.isVisible()||airstrike.isVisible()){ if(moveE!=null){ if(moveE.isMovableTileBeingShown()) moveE.toggleMoveable(); if(moveE.isPrimaryTileBeingShown()) moveE.togglePrimaryRange(); moveE.toggleSecondaryRange(); } } update(); } public void submergeAction(){ if(elevation.isVisible()){ Submarine sub = (Submarine)display; if(!sub.isSumberged()&&sub.canSubmerge()){ sub.toggleElevation(); sub.usePrimary(); sub.useSecondary(); } } update(); } public void shopAction(){ if(display!=null&&display.getHandle()%10 == 2){ new PortShop(parent,(PortEntity)display); update(); } else if(moveE!=null){ new ShipShop(parent,moveE); update(); } } public void nextAction(){ ((NavalGame)parent.getGame()).getTurnManager().getTurn().getPlayer().nextEntity(display); } }