GameControl.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package control;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. import java.net.SocketException;
  7. import java.net.UnknownHostException;
  8. import javax.swing.Timer;
  9. import model.GameModel;
  10. import view.GameView;
  11. import control.button.ButtonEvent;
  12. import control.button.ButtonListener;
  13. import control.joystick.JoystickEvent;
  14. import control.joystick.JoystickListener;
  15. public class GameControl implements JoystickListener, ButtonListener, ActionListener {
  16. private long lastTime = System.currentTimeMillis();
  17. GameModel model;
  18. GameView view;
  19. GameStateManager gsm;
  20. Timer update;
  21. public GameControl(final GameModel model, final GameView view,GameStateManager gsm)
  22. {
  23. this.model = model;
  24. this.view = view;
  25. this.gsm = gsm;
  26. view.setIgnoreRepaint(true);
  27. update = new Timer(1000/60,this);
  28. update.start();
  29. }
  30. @Override
  31. public void buttonPressed(ButtonEvent e) {
  32. // System.out.println("Game control, button pressed: "+e.getButton().getButtonID());
  33. gsm.currentState.buttonPressed(e);
  34. }
  35. @Override
  36. public void buttonReleased(ButtonEvent e) {
  37. // System.out.println("Game control, button released: "+e.getButton().getButtonID());
  38. gsm.currentState.buttonReleased(e);
  39. }
  40. @Override
  41. public void onJoystickMoved(JoystickEvent e) {
  42. gsm.currentState.onJoystickMoved(e);
  43. }
  44. @Override
  45. public void actionPerformed(ActionEvent e) {
  46. long currentTime = System.currentTimeMillis();
  47. long time = currentTime - lastTime;
  48. if(time > 1000/60)
  49. time = 1000/60;
  50. model.update(time);
  51. lastTime = currentTime;
  52. view.repaint();
  53. }
  54. }