Advertisement
Guest User

Untitled

a guest
Feb 21st, 2015
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1. public class Game extends Canvas implements Runnable {
  2. private static final long serialVersionUID = 1L;
  3. public int width;
  4. public int height;
  5. public static String title;
  6. boolean running = false;
  7. private Thread thread;
  8. protected JFrame frame;
  9. int frames;
  10.  
  11. private int goState = 0;
  12.  
  13. //States go here
  14. private State gameState;
  15. private State menuState;
  16. private State mapState;
  17. private State emptyPlanetState;
  18.  
  19. //Inputs go here
  20. private KeyManager keyManager;
  21. private MouseManager mouse;
  22.  
  23. private BufferStrategy bs; //You know what buffers are, like prep frames.
  24. private Graphics g;
  25.  
  26.  
  27. public Game(String title, int width, int height) {
  28. this.width = width;
  29. this.height = height;
  30. this.title = title;
  31. Dimension size = new Dimension(width, height);
  32. setPreferredSize(size);
  33. frame = new JFrame(title);
  34. frame.add(this);
  35. mouse = new MouseManager();
  36. keyManager = new KeyManager();
  37. addKeyListener(keyManager);
  38. addMouseListener(mouse);
  39. addMouseMotionListener(mouse);
  40. addMouseWheelListener(mouse);
  41. }
  42.  
  43. public void goToState(int i){
  44. goState = i;
  45. }
  46.  
  47.  
  48. public void stateCheck(){
  49. switch(goState){
  50. case 0: State.setState(menuState);
  51. break;
  52. case 1: State.setState(gameState);
  53. break;
  54. case 2: State.setState(mapState);
  55. break;
  56. case 3: State.setState(emptyPlanetState);
  57. break;
  58. }
  59. }
  60.  
  61. private void init(){
  62. gameState = new GameState(this);
  63. menuState = new MenuState(this);
  64. mapState = new MapState(this);
  65. emptyPlanetState = new EmptyPlanet(this);
  66.  
  67.  
  68. }
  69.  
  70. private void render() {
  71. bs = getBufferStrategy();
  72. if(bs==null){
  73. createBufferStrategy(3);
  74. return;
  75. }
  76.  
  77. g = bs.getDrawGraphics();
  78. //Clear screen
  79. g.clearRect(0,0,width, height);
  80. //Drawing space.
  81.  
  82. if(State.getState() != null)
  83. State.getState().render(g);
  84.  
  85.  
  86.  
  87.  
  88. //End here.
  89. bs.show();
  90. g.dispose(); //Apparently doesn't work 100% without these.
  91. }
  92.  
  93.  
  94. public synchronized void start(){
  95. if(running)
  96. return;
  97. thread = new Thread(this);
  98. thread.start();
  99. running = true;
  100. }
  101.  
  102. public synchronized void stop(){
  103. if(!running)
  104. return;
  105. try {
  106. thread.join();
  107. } catch (InterruptedException e) {//A try/catch prevents any errors or anything
  108. e.printStackTrace();
  109. }
  110. }
  111.  
  112. public void run(){
  113.  
  114. init();
  115. int fps = 60;
  116. double timePerTick = 1000000000 / fps;
  117. double delta = 0;
  118. long now;
  119. long lastTime = System.nanoTime();
  120. long timer = 0;
  121. int ticks = 0;
  122.  
  123. while(running == true){
  124. now = System.nanoTime();
  125. delta += (now - lastTime)/timePerTick;
  126. timer += now - lastTime;
  127. lastTime = now;
  128.  
  129. if(delta >= 1){
  130. tick();
  131. render();
  132. delta--;
  133. ticks++;
  134. }
  135.  
  136. if(timer >= 1000000000){
  137. System.out.println("Ticks + Frames: " + ticks);
  138. ticks = 0;
  139. timer = 0;
  140. }
  141. }
  142.  
  143. stop();
  144.  
  145. }
  146.  
  147. public KeyManager getKeyManager(){
  148. return keyManager;
  149. }
  150. public MouseManager getMouseManager(){
  151. return mouse;
  152. }
  153.  
  154. private void tick() {
  155. System.out.println(MouseManager.getButton());
  156. keyManager.tick();
  157. stateCheck();
  158.  
  159. if(State.getState() != null)
  160. State.getState().tick();
  161. }
  162.  
  163.  
  164.  
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement