Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package shooter.input;
- import java.awt.Rectangle;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionListener;
- import shooter.main.Game;
- import shooter.main.Menu;
- import shooter.main.State;
- public class MouseInputHandler implements MouseListener, MouseMotionListener {
- // Mouse x-position
- private int mX;
- // Mouse y-position
- private int mY;
- // Game instance
- private Game game;
- // Menu instance
- private Menu menu;
- // Mouse collision Box
- private Rectangle mouseBox;
- // Shooting delay
- private int countdown = 1000;
- // 0.3 seconds (0.3 * 60 updates/second) shooting delay
- private int pistolBulletDelay = 20;
- // 0.1 seconds (0.1 * 60 updates/second) shooting delay
- private int assaultBulletDelay = 6;
- // True when mouse is continously pressed
- private boolean mouseDown = false;
- // True when Thread for holding down mouse is running
- private boolean isRunning = false;
- public MouseInputHandler(Game game, Menu menu) {
- this.game = game;
- this.menu = menu;
- mouseBox = new Rectangle(mX, mY, 1, 1);
- }
- public void mouseClicked(MouseEvent e) {
- // Tracks the mouse position when mouse is clicked
- mY = e.getY();
- mX = e.getX();
- mouseBox.y = mY;
- mouseBox.x = mX;
- }
- public void mouseEntered(MouseEvent e) {
- }
- public void mouseExited(MouseEvent e) {
- }
- public void mousePressed(MouseEvent e) {
- // checks if menu buttons are pressed
- if (game.getState() == State.MENU) {
- if (mouseBox.intersects(menu.getStart())) {
- // Play Button
- game.setState(State.GAME);
- } else if (mouseBox.intersects(menu.getOptions())) {
- // Options Button
- game.setState(State.OPTIONS);
- } else if (mouseBox.intersects(menu.getExtras())) {
- // Credits Button
- game.setState(State.EXTRAS);
- } else if (mouseBox.intersects(menu.getStop())) {
- // Exit Button
- System.exit(0);
- }
- } else if (game.getState() == State.OPTIONS) {
- if (mouseBox.intersects(menu.getBack())) {
- // Back Button
- game.setState(State.MENU);
- }
- } else if (game.getState() == State.EXTRAS) {
- if (mouseBox.intersects(menu.getArmory())) {
- // Armory Button
- game.setState(State.ARMORY);
- } else if (mouseBox.intersects(menu.getCredits())) {
- // Credits Button
- game.setState(State.CREDITS);
- } else if (mouseBox.intersects(menu.getBack())) {
- // Back Button
- game.setState(State.MENU);
- }
- } else if (game.getState() == State.ARMORY) {
- if (mouseBox.intersects(menu.getBack())) {
- // Back Button
- game.setState(State.EXTRAS);
- }
- } else if (game.getState() == State.CREDITS) {
- if (mouseBox.intersects(menu.getBack())) {
- // Back Button
- game.setState(State.EXTRAS);
- }
- } else if (game.getState() == State.GAME) {
- if (e.getButton() == MouseEvent.BUTTON1) {
- mouseDown = true;
- initThread();
- }
- }
- }
- // activates is Running
- private synchronized boolean checkAndMark() {
- if (isRunning)
- return false;
- isRunning = true;
- return true;
- }
- private void initThread() {
- if (checkAndMark()) {
- new Thread() {
- public void run() {
- do {
- if (game.getHandler().getPlayer().getCurWeapon().getMagAmmo() > 0) {
- switch (game.getHandler().getPlayer()
- .getCurWeapon().getWeaponType()) {
- case "pistol":
- if (countdown >= pistolBulletDelay) {
- // Shoot the current weapon
- game.getHandler().getPlayer()
- .getCurWeapon().shoot();
- // Reset the timer
- countdown = 0;
- }
- break;
- case "assault":
- if (countdown >= assaultBulletDelay) {
- // Shoot the current weapon
- game.getHandler().getPlayer()
- .getCurWeapon().shoot();
- // Reset the timer
- countdown = 0;
- }
- break;
- }
- } else {
- // dry fire sound effect
- }
- } while (mouseDown);
- isRunning = false;
- }
- }.start();
- }
- }
- public void mouseReleased(MouseEvent e) {
- if (e.getButton() == MouseEvent.BUTTON1) {
- mouseDown = false;
- }
- }
- // Tracks the mouse position when mouse is dragged (button down and then moved)
- public void mouseDragged(MouseEvent e) {
- mY = e.getY();
- mX = e.getX();
- mouseBox.y = mY;
- mouseBox.x = mX;
- }
- public void mouseMoved(MouseEvent e) {
- // Tracks the mouse position when mouse is moved
- mY = e.getY();
- mX = e.getX();
- mouseBox.y = mY;
- mouseBox.x = mX;
- // Sets menu position according to mouse position
- if (game.getState() == State.MENU || game.getState() == State.OPTIONS
- || game.getState() == State.EXTRAS
- || game.getState() == State.ARMORY
- || game.getState() == State.CREDITS) {
- if (mouseBox.intersects(menu.getStart())) {
- // Play Button
- menu.setMenuPosition(1);
- } else if (mouseBox.intersects(menu.getOptions())) {
- // Options Button
- menu.setMenuPosition(2);
- } else if (mouseBox.intersects(menu.getExtras())) {
- // Extras Button
- menu.setMenuPosition(3);
- } else if (mouseBox.intersects(menu.getStop())) {
- // Quit Button
- menu.setMenuPosition(4);
- } else {
- menu.setMenuPosition(0);
- }
- }
- if (game.getState() == State.ARMORY) {
- for (int i = 0; i < menu.getArmoryButtons().length; i++) {
- for (int s = 0; s < menu.getArmoryButtons()[i].length; s++) {
- if (mouseBox.intersects(menu.getArmoryButtons()[i][s])) {
- menu.setArmoryPositionY(i);
- menu.setArmoryPositionX(s);
- return;
- }
- }
- }
- menu.setArmoryPositionY(-1);
- menu.setArmoryPositionX(-1);
- }
- }
- public void tick() {
- countdown++;
- }
- public int getMx() {
- return mX;
- }
- public int getMy() {
- return mY;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement