Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Game extends Canvas implements Runnable {
- private static final long serialVersionUID = 1L;
- public int width;
- public int height;
- public static String title;
- boolean running = false;
- private Thread thread;
- protected JFrame frame;
- int frames;
- private int goState = 0;
- //States go here
- private State gameState;
- private State menuState;
- private State mapState;
- private State emptyPlanetState;
- //Inputs go here
- private KeyManager keyManager;
- private MouseManager mouse;
- private BufferStrategy bs; //You know what buffers are, like prep frames.
- private Graphics g;
- public Game(String title, int width, int height) {
- this.width = width;
- this.height = height;
- this.title = title;
- Dimension size = new Dimension(width, height);
- setPreferredSize(size);
- frame = new JFrame(title);
- frame.add(this);
- mouse = new MouseManager();
- keyManager = new KeyManager();
- addKeyListener(keyManager);
- addMouseListener(mouse);
- addMouseMotionListener(mouse);
- addMouseWheelListener(mouse);
- }
- public void goToState(int i){
- goState = i;
- }
- public void stateCheck(){
- switch(goState){
- case 0: State.setState(menuState);
- break;
- case 1: State.setState(gameState);
- break;
- case 2: State.setState(mapState);
- break;
- case 3: State.setState(emptyPlanetState);
- break;
- }
- }
- private void init(){
- gameState = new GameState(this);
- menuState = new MenuState(this);
- mapState = new MapState(this);
- emptyPlanetState = new EmptyPlanet(this);
- }
- private void render() {
- bs = getBufferStrategy();
- if(bs==null){
- createBufferStrategy(3);
- return;
- }
- g = bs.getDrawGraphics();
- //Clear screen
- g.clearRect(0,0,width, height);
- //Drawing space.
- if(State.getState() != null)
- State.getState().render(g);
- //End here.
- bs.show();
- g.dispose(); //Apparently doesn't work 100% without these.
- }
- public synchronized void start(){
- if(running)
- return;
- thread = new Thread(this);
- thread.start();
- running = true;
- }
- public synchronized void stop(){
- if(!running)
- return;
- try {
- thread.join();
- } catch (InterruptedException e) {//A try/catch prevents any errors or anything
- e.printStackTrace();
- }
- }
- public void run(){
- init();
- int fps = 60;
- double timePerTick = 1000000000 / fps;
- double delta = 0;
- long now;
- long lastTime = System.nanoTime();
- long timer = 0;
- int ticks = 0;
- while(running == true){
- now = System.nanoTime();
- delta += (now - lastTime)/timePerTick;
- timer += now - lastTime;
- lastTime = now;
- if(delta >= 1){
- tick();
- render();
- delta--;
- ticks++;
- }
- if(timer >= 1000000000){
- System.out.println("Ticks + Frames: " + ticks);
- ticks = 0;
- timer = 0;
- }
- }
- stop();
- }
- public KeyManager getKeyManager(){
- return keyManager;
- }
- public MouseManager getMouseManager(){
- return mouse;
- }
- private void tick() {
- System.out.println(MouseManager.getButton());
- keyManager.tick();
- stateCheck();
- if(State.getState() != null)
- State.getState().tick();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement