Files
Arcade/main/Window.java
T

99 lines
2.6 KiB
Java

package main;
import java.awt.Cursor;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import model.GameModel;
import model.SongHandler;
import view.GameView;
import control.GameControl;
import control.GameStateManager;
import control.NetworkHandler;
import control.button.ButtonHandler;
import control.joystick.JoystickHandler;
import data.io.SQLConnector;
public class Window extends JFrame {
private static final long serialVersionUID = -9222956702898533696L;
public static boolean ON_RASP;
public final static int WIDTH = 1280;
public final static int HEIGHT = 1024;
public Window(boolean ON_RASP)
{
//Create window
super("Arcade");
setSize(WIDTH, HEIGHT);
//Create Events
Window.ON_RASP = ON_RASP;
if(ON_RASP){ //Only on the raspberry pi
// GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
// GraphicsDevice[] devices = graphicsEnvironment.getScreenDevices();
//
// if (!devices[0].isFullScreenSupported ()){
// throw new UnsupportedOperationException ("Fullscreen mode is unsupported.");
// }else{
// devices[0].setFullScreenWindow(this);
// }
// //Remove cursor
BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImg, new Point(0, 0), "blank cursor");
this.setCursor(blankCursor);
}
ButtonHandler bth = new ButtonHandler();
JoystickHandler jsh = new JoystickHandler();
final SQLConnector sql = new SQLConnector();
NetworkHandler ntw = new NetworkHandler("10.42.0.5", 1113, bth, jsh);
bth.setNetwork(ntw);
//Create Instances
final SongHandler sh = new SongHandler(sql);
GameStateManager gsm = new GameStateManager(sh, sql);
GameView view = new GameView(gsm);
GameModel model = new GameModel(sh, gsm, ntw);
GameControl control = new GameControl(model, view,gsm);
setContentPane(view);
//Set window close listener
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
sh.close();
try {
sql.finalize();
} catch (Throwable e1) {
e1.printStackTrace();
}
System.exit(0);
}
});
//Create EventListeners
addKeyListener(bth);
addKeyListener(jsh);
bth.addButtonListener(control);
jsh.addJoystickListener(control);
//Display
setResizable(false);
pack();
setVisible(true);
}
}