package bGUI; import java.awt.Color; import java.awt.Rectangle; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import javax.swing.JFrame; import script.Script; import data.BDataModel; import data.BPage; import data.BPageModel; import data.BShape; /** * * @author Chidozie Nwobilor * */ public class BGame extends JFrame{ private static final String FIRST_PAGE = "page1"; private BGameCanvas canvas; private String gametitle; private BDataModel data; private BEditor editor; /** * constructs BGame using an input title and datamodel * @param gametitle * @param model */ public BGame(String gametitle, BDataModel model, BEditor editor){ super(gametitle); setGametitle(gametitle); setData(model); setCanvas(new BGameCanvas(model)); canvas.flipTo(new BPage(data.getPage(FIRST_PAGE))); this.add(canvas); this.editor = editor; pack(); setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { handleClosing(); } }); } protected void handleClosing() { if(editor != null) this.editor.setVisible(true); else setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * @param gametitle the gametitle to set */ public void setGametitle(String gametitle) { this.gametitle = gametitle; } /** * @return the gametitle */ public String getGametitle() { return gametitle; } /** * @param canvas the canvas to set */ public void setCanvas(BGameCanvas canvas) { this.canvas = canvas; } /** * @return the canvas */ public BGameCanvas getCanvas() { return canvas; } /** * @param data the data to set */ public void setData(BDataModel data) { this.data = data; } /** * @return the data */ public BDataModel getData() { return data; } private static BDataModel setUpDataModel(){ BDataModel data = new BDataModel(); data.addResource(new File("resources/bunny.jpeg")); data.addResource(new File("resources/horray.au")); BShape shape = new BShape(); shape.setName("shape1"); shape.setImageName("bunny.jpeg"); data.addShape(shape.getModel()); BShape shape3 = new BShape(); shape3.setName("shape3"); shape3.setColor(Color.pink); shape3.setHidden(true); shape3.setMovable(false); shape3.setBounds(new Rectangle(200, 200, BShape.DEFAULT_WIDTH, BShape.DEFAULT_HEIGHT)); shape3.addScript("on click goto page3"); data.addShape(shape3.getModel()); BShape shape4 = new BShape(); shape4.setName("shape4"); shape4.setColor(Color.BLUE); data.addShape(shape4.getModel()); BShape shape2 = new BShape(); shape2.setName("shape2"); shape2.setColor(Color.red); shape2.setBounds(new Rectangle(10, 10, BShape.DEFAULT_WIDTH, BShape.DEFAULT_HEIGHT)); shape2.setMovable(false); shape2.addScript("on drop shape1 goto page2 hide shape1 on drop shape4 show shape3 hide shape4 on click beep play sam"); data.addShape(shape2.getModel()); BPageModel page = new BPageModel(); page.setName(BGame.FIRST_PAGE); page.addShape(shape3); page.addShape(shape2); page.addShape(shape); BShape shape5 = new BShape(); shape5.setName("shape5"); shape5.setMovable(false); shape5.setColor(Color.ORANGE); shape5.addScript("on click goto page1"); shape5.setBounds(new Rectangle(100, 100, 50, 50)); data.addShape(shape5.getModel()); BPageModel page2 = new BPageModel(); page2.setName("page2"); page2.addShape(shape4); page2.addShape(shape5); BShape shape6 = new BShape(); shape6.setName("shape6"); shape6.setText("WIN!"); shape6.setMovable(false); shape6.addScript("on enter play horray.au"); data.addShape(shape6.getModel()); BPageModel page3 = new BPageModel(); page3.setName("page3"); page3.addShape(shape6); data.addPage(page); data.addPage(page2); data.addPage(page3); data.script = new Script(data); return data; } /** * @param args */ public static void main(String[] args) { BDataModel data = setUpDataModel(); BGame game = new BGame("Test", data, null); } }