I made simple input class that gets input from the keyboard and mouse (code might be copied). I just want to get feedback about the code.
package com.memequickie.engine;
import java.awt.Canvas;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
public class Input implements KeyListener, MouseListener,
MouseMotionListener, MouseWheelListener {
private static final short NUM_KEYS = 256;
private static final short NUM_BUTTONS = 5;
private boolean[] keys = new boolean[NUM_KEYS];
private boolean[] keysLast = new boolean[NUM_KEYS];
private boolean[] buttons = new boolean[NUM_BUTTONS];
private boolean[] buttonsLast = new boolean[NUM_BUTTONS];
private int mouseX, mouseY;
private int scroll;
private int scale = 1;
private boolean isCtrlPressed = false;
private boolean isShiftPressed = false;
private boolean isAltPressed = false;
private boolean isEscapePressed = false;
private boolean isWheelClicked = false;
private boolean isRightClicked = false;
private boolean isLeftClicked = false;
public Input(int scale) {
mouseX = 0;
mouseY = 0;
scroll = 0;
this.scale = scale;
if(scale < 0) scale = 1;
}
public void addListeners(Canvas c) {
c.addKeyListener(this);
c.addMouseMotionListener(this);
c.addMouseListener(this);
c.addMouseWheelListener(this);
}
//Update in each game loop
public void update() {
scroll = 0;
System.arraycopy(keys, 0, keysLast, 0, NUM_KEYS);
System.arraycopy(buttons, 0, buttonsLast, 0, NUM_BUTTONS);
}
public boolean isKey(int keycode) {
return keys[keycode];
}
public boolean isKeyPressed(int keycode) {
return keys[keycode] && !keysLast[keycode];
}
public boolean isKeyReleased(int keycode) {
return !keys[keycode] && keysLast[keycode];
}
public boolean isButton(int button) {
return buttons[button];
}
public boolean isButtonPressed(int button) {
return buttons[button] && !buttonsLast[button];
}
public boolean isButtonReleased(int button) {
return !buttons[button] && buttonsLast[button];
}
public void mouseWheelMoved(MouseWheelEvent e) {
scroll = e.getWheelRotation();
}
public void mouseDragged(MouseEvent e) {
mouseX = e.getX() / scale;
mouseY = e.getY() / scale;
}
public void mouseMoved(MouseEvent e) {
mouseX = e.getX() / scale;
mouseY = e.getY() / scale;
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
buttons[e.getButton()] = true;
if(e.getButton() == MouseEvent.BUTTON1) isLeftClicked = true;
if(e.getButton() == MouseEvent.BUTTON2) isWheelClicked = true;
if(e.getButton() == MouseEvent.BUTTON3) isRightClicked = true;
}
public void mouseReleased(MouseEvent e) {
buttons[e.getButton()] = false;
if(e.getButton() == MouseEvent.BUTTON1) isLeftClicked = false;
if(e.getButton() == MouseEvent.BUTTON2) isWheelClicked = false;
if(e.getButton() == MouseEvent.BUTTON3) isRightClicked = false;
}
public void keyPressed(KeyEvent e) {
keys[e.getKeyCode()] = true;
if(e.getKeyCode() == KeyEvent.VK_SHIFT) isShiftPressed = true;
if(e.getKeyCode() == KeyEvent.VK_CONTROL) isCtrlPressed = true;
if(e.getKeyCode() == KeyEvent.VK_ALT) isAltPressed = true;
if(e.getKeyCode() == KeyEvent.VK_ESCAPE) isEscapePressed = true;
}
public void keyReleased(KeyEvent e) {
keys[e.getKeyCode()] = false;
if(e.getKeyCode() == KeyEvent.VK_SHIFT) isShiftPressed = false;
if(e.getKeyCode() == KeyEvent.VK_CONTROL) isCtrlPressed = false;
if(e.getKeyCode() == KeyEvent.VK_ALT) isAltPressed = false;
if(e.getKeyCode() == KeyEvent.VK_ESCAPE) isEscapePressed = false;
}
public void keyTyped(KeyEvent e) {}
public int getMouseX() {
return mouseX;
}
public int getMouseY() {
return mouseY;
}
public int getScroll() {
return scroll;
}
public boolean isCtrlPressed() {
return isCtrlPressed;
}
public boolean isShiftPressed() {
return isShiftPressed;
}
public boolean isAltPressed() {
return isAltPressed;
}
public boolean isEscapePressed() {
return isEscapePressed;
}
public boolean isWheelClicked() {
return isWheelClicked;
}
public boolean isRightClicked() {
return isRightClicked;
}
public boolean isLeftClicked() {
return isLeftClicked;
}
}