Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2014
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.71 KB | None | 0 0
  1. package shooter.input;
  2.  
  3. import java.awt.Rectangle;
  4. import java.awt.event.MouseEvent;
  5. import java.awt.event.MouseListener;
  6. import java.awt.event.MouseMotionListener;
  7.  
  8. import shooter.main.Game;
  9. import shooter.main.Menu;
  10. import shooter.main.State;
  11.  
  12.  
  13. public class MouseInputHandler implements MouseListener, MouseMotionListener {
  14.  
  15.     // Mouse x-position
  16.     private int mX;
  17.     // Mouse y-position
  18.     private int mY;
  19.     // Game instance
  20.     private Game game;
  21.     // Menu instance
  22.     private Menu menu;
  23.     // Mouse collision Box
  24.     private Rectangle mouseBox;
  25.     // Shooting delay
  26.     private int countdown = 1000;
  27.     // 0.3 seconds (0.3 * 60 updates/second) shooting delay
  28.     private int pistolBulletDelay = 20;
  29.     // 0.1 seconds (0.1 * 60 updates/second) shooting delay
  30.     private int assaultBulletDelay = 6;
  31.     // True when mouse is continously pressed
  32.     private boolean mouseDown = false;
  33.     // True when Thread for holding down mouse is running
  34.     private boolean isRunning = false;
  35.  
  36.     public MouseInputHandler(Game game, Menu menu) {
  37.         this.game = game;
  38.         this.menu = menu;
  39.         mouseBox = new Rectangle(mX, mY, 1, 1);
  40.     }
  41.  
  42.     public void mouseClicked(MouseEvent e) {
  43.         // Tracks the mouse position when mouse is clicked
  44.         mY = e.getY();
  45.         mX = e.getX();
  46.         mouseBox.y = mY;
  47.         mouseBox.x = mX;
  48.     }
  49.  
  50.     public void mouseEntered(MouseEvent e) {
  51.  
  52.     }
  53.  
  54.     public void mouseExited(MouseEvent e) {
  55.  
  56.     }
  57.  
  58.     public void mousePressed(MouseEvent e) {
  59.         // checks if menu buttons are pressed
  60.         if (game.getState() == State.MENU) {
  61.             if (mouseBox.intersects(menu.getStart())) {
  62.                 // Play Button
  63.                 game.setState(State.GAME);
  64.             } else if (mouseBox.intersects(menu.getOptions())) {
  65.                 // Options Button
  66.                 game.setState(State.OPTIONS);
  67.             } else if (mouseBox.intersects(menu.getExtras())) {
  68.                 // Credits Button
  69.                 game.setState(State.EXTRAS);
  70.             } else if (mouseBox.intersects(menu.getStop())) {
  71.                 // Exit Button
  72.                 System.exit(0);
  73.             }
  74.         } else if (game.getState() == State.OPTIONS) {
  75.             if (mouseBox.intersects(menu.getBack())) {
  76.                 // Back Button
  77.                 game.setState(State.MENU);
  78.             }
  79.         } else if (game.getState() == State.EXTRAS) {
  80.             if (mouseBox.intersects(menu.getArmory())) {
  81.                 // Armory Button
  82.                 game.setState(State.ARMORY);
  83.             } else if (mouseBox.intersects(menu.getCredits())) {
  84.                 // Credits Button
  85.                 game.setState(State.CREDITS);
  86.             } else if (mouseBox.intersects(menu.getBack())) {
  87.                 // Back Button
  88.                 game.setState(State.MENU);
  89.             }
  90.         } else if (game.getState() == State.ARMORY) {
  91.             if (mouseBox.intersects(menu.getBack())) {
  92.                 // Back Button
  93.                 game.setState(State.EXTRAS);
  94.             }
  95.         } else if (game.getState() == State.CREDITS) {
  96.             if (mouseBox.intersects(menu.getBack())) {
  97.                 // Back Button
  98.                 game.setState(State.EXTRAS);
  99.             }
  100.         } else if (game.getState() == State.GAME) {
  101.             if (e.getButton() == MouseEvent.BUTTON1) {
  102.                 mouseDown = true;
  103.                 initThread();
  104.             }
  105.         }
  106.     }
  107.  
  108.     // activates is Running
  109.     private synchronized boolean checkAndMark() {
  110.         if (isRunning)
  111.             return false;
  112.         isRunning = true;
  113.         return true;
  114.     }
  115.  
  116.     private void initThread() {
  117.         if (checkAndMark()) {
  118.             new Thread() {
  119.                 public void run() {
  120.                     do {
  121.                         if (game.getHandler().getPlayer().getCurWeapon().getMagAmmo() > 0) {
  122.                             switch (game.getHandler().getPlayer()
  123.                                     .getCurWeapon().getWeaponType()) {
  124.                             case "pistol":
  125.                                 if (countdown >= pistolBulletDelay) {
  126.                                     // Shoot the current weapon
  127.                                     game.getHandler().getPlayer()
  128.                                             .getCurWeapon().shoot();
  129.                                     // Reset the timer
  130.                                     countdown = 0;
  131.                                 }
  132.                                 break;
  133.                             case "assault":
  134.                                 if (countdown >= assaultBulletDelay) {
  135.                                     // Shoot the current weapon
  136.                                     game.getHandler().getPlayer()
  137.                                             .getCurWeapon().shoot();
  138.                                     // Reset the timer
  139.                                     countdown = 0;
  140.                                 }
  141.                                 break;
  142.                             }
  143.                         } else {
  144.                             // dry fire sound effect
  145.                         }
  146.                     } while (mouseDown);
  147.                     isRunning = false;
  148.                 }
  149.             }.start();
  150.         }
  151.     }
  152.  
  153.     public void mouseReleased(MouseEvent e) {
  154.         if (e.getButton() == MouseEvent.BUTTON1) {
  155.             mouseDown = false;
  156.         }
  157.     }
  158.  
  159.     // Tracks the mouse position when mouse is dragged (button down and then moved)
  160.     public void mouseDragged(MouseEvent e) {
  161.         mY = e.getY();
  162.         mX = e.getX();
  163.         mouseBox.y = mY;
  164.         mouseBox.x = mX;
  165.     }
  166.  
  167.     public void mouseMoved(MouseEvent e) {
  168.         // Tracks the mouse position when mouse is moved
  169.         mY = e.getY();
  170.         mX = e.getX();
  171.         mouseBox.y = mY;
  172.         mouseBox.x = mX;
  173.  
  174.         // Sets menu position according to mouse position
  175.         if (game.getState() == State.MENU || game.getState() == State.OPTIONS
  176.                 || game.getState() == State.EXTRAS
  177.                 || game.getState() == State.ARMORY
  178.                 || game.getState() == State.CREDITS) {
  179.             if (mouseBox.intersects(menu.getStart())) {
  180.                 // Play Button
  181.                 menu.setMenuPosition(1);
  182.             } else if (mouseBox.intersects(menu.getOptions())) {
  183.                 // Options Button
  184.                 menu.setMenuPosition(2);
  185.             } else if (mouseBox.intersects(menu.getExtras())) {
  186.                 // Extras Button
  187.                 menu.setMenuPosition(3);
  188.             } else if (mouseBox.intersects(menu.getStop())) {
  189.                 // Quit Button
  190.                 menu.setMenuPosition(4);
  191.             } else {
  192.                 menu.setMenuPosition(0);
  193.             }
  194.         }
  195.         if (game.getState() == State.ARMORY) {
  196.             for (int i = 0; i < menu.getArmoryButtons().length; i++) {
  197.                 for (int s = 0; s < menu.getArmoryButtons()[i].length; s++) {
  198.                     if (mouseBox.intersects(menu.getArmoryButtons()[i][s])) {
  199.                         menu.setArmoryPositionY(i);
  200.                         menu.setArmoryPositionX(s);
  201.                         return;
  202.                     }
  203.                 }
  204.             }
  205.             menu.setArmoryPositionY(-1);
  206.             menu.setArmoryPositionX(-1);
  207.         }
  208.     }
  209.  
  210.     public void tick() {
  211.         countdown++;
  212.     }
  213.  
  214.     public int getMx() {
  215.         return mX;
  216.     }
  217.  
  218.     public int getMy() {
  219.         return mY;
  220.     }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement