Added input but is not implemented in the engine yet

This commit is contained in:
Ziver Koc 2007-03-25 21:04:27 +00:00
parent d3a6c31dd1
commit aeb3f9a877
4 changed files with 307 additions and 0 deletions

View file

@ -0,0 +1,44 @@
package ei.engine.input;
public abstract class Input{
// The name of this input
private String name;
// is this input enabled
private boolean enabled;
public Input(String name){
this.enabled = true;
InputHandler.getInstance().addInput(this);
}
/**
* @return The name of the entity
*/
public String getName() {
return name;
}
/**
* returns if this input is enabled
*
* @return if this input is enabled
*/
public boolean isEnabled(){
return enabled;
}
/**
* Set if this input is enabled
*
* @param b if this input is enabled
*/
public void setEnabled(boolean b){
enabled = b;
}
public abstract void update();
public abstract void render();
}

View file

@ -0,0 +1,110 @@
package ei.engine.input;
import java.util.ArrayList;
/**
* This class handels all the input in the engine
*
* @author Ziver
*/
public class InputHandler {
// The instance of this handler
private static InputHandler instance;
// The array of inputs
private ArrayList<Input> input;
public InputHandler(){
input = new ArrayList<Input>();
}
/**
* updates all the inputs
*
*/
public void update(){
for(int i=0; i<input.size() ;i++){
input.get(i).update();
}
}
/**
* renders all the inputs
*
*/
public void render(){
for(int i=0; i<input.size() ;i++){
input.get(i).render();
}
}
/**
* Add a input
*
* @param i the input
* @return true if successful else false
*/
public boolean addInput(Input i){
if(!input.contains(i)){
input.add(i);
return true;
}
return false;
}
/**
* Removes a input from the handler
*
* @param i The input to remove
* @return true if successful else false
*/
public boolean removeInput(Input i){
if(input.contains(i)){
input.remove(i);
return true;
}
return false;
}
/**
* Remove input from handler by
* index in handler
*
* @param i The index of the input
* @return true if successful else false
*/
public boolean removeInput(int i){
if(i >= 0 && i < input.size()){
input.remove(i);
return true;
}
return false;
}
/**
* Remove a input by name
*
* @param name The name of the input to remove
* @return true if successful else false
*/
public boolean removeInput(String name){
for(int i=0; i<input.size() ;i++){
if(input.get(i).getName().equals(name)){
return removeInput(i);
}
}
return false;
}
/**
* Returns an insance of this class
*
* @return an insance of this class
*/
public static InputHandler getInstance(){
if(instance == null){
instance = new InputHandler();
}
return instance;
}
}

View file

@ -0,0 +1,57 @@
package ei.engine.input;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import ei.engine.util.MultiPrintStream;
/**
* This class handles key inputs
* @author Ziver
*/
public abstract class KeyboardInput extends Input {
public KeyboardInput(String name) {
super(name);
try {
//init keyboard
Keyboard.create();
} catch (LWJGLException e) {
MultiPrintStream.out.println("Keyboard Init Erorr: "+e);
e.printStackTrace();
}
}
/**
* Is not used for key input.
*/
public void render() {}
/**
* looks if any key is presed
*/
public void update() {
// Handle key hits
while ( Keyboard.next() ) {
// pass key event to handler
if (Keyboard.getEventKeyState()) {
keyDown(Keyboard.getEventKey());
}
else {
keyUp(Keyboard.getEventKey());
}
}
}
/**
* Called by update() when any key is presed
*/
public abstract void keyDown(int keycode);
/**
* Called by update() when any key is released
*/
public abstract void keyUp(int keycode);
}

View file

@ -0,0 +1,96 @@
package ei.engine.input;
import org.lwjgl.input.Mouse;
import ei.engine.LWJGLGameWindow;
import ei.engine.math.Vector2f;
import ei.engine.scene.Sprite;
/**
* Handles the mous input
* @author Ziver
*
*/
public abstract class MouseInput extends Input{
// The x pos of the mouse
private int cursorX;
// The y pos of the mouse
private int cursorY;
// The texute for the mouse
private Sprite cursor;
public MouseInput(String name) {
super(name);
// init mouse: this will hide the native cursor (see drawCursor())
Mouse.setGrabbed(true);
// set initial cursor pos to center screen
cursorX = (int) LWJGLGameWindow.getWidth() / 2;
cursorY = (int) LWJGLGameWindow.getHeight() / 2;
}
/**
* Renders the mous texture if texture set
*/
public void render() {
if(cursor != null){
cursor.render();
}
}
/**
* Updates the pos of the mouse and send any
* change to mouseMove(), mouseDown() or mouseUp()
*/
public void update() {
int mouseDX = Mouse.getDX();
int mouseDY = Mouse.getDY();
int mouseDW = Mouse.getDWheel();
if (mouseDX != 0 || mouseDY != 0 || mouseDW != 0) {
cursorX += mouseDX;
cursorY += mouseDY;
if (cursorX < 0) {
cursorX = 0;
}
else if (cursorX > LWJGLGameWindow.getWidth()) {
cursorX = LWJGLGameWindow.getWidth();
}
if (cursorY < 0) {
cursorY = 0;
}
else if (cursorY > LWJGLGameWindow.getHeight()) {
cursorY = LWJGLGameWindow.getHeight();
}
mouseMove(cursorX,cursorY);
}
while ( Mouse.next() ) {
if(Mouse.getEventButton() == 0 && Mouse.getEventButtonState() == true) {
mouseDown(cursorX, cursorY);
}
if(Mouse.getEventButton() == 0 && Mouse.getEventButtonState() == false) {
mouseUp(cursorX, cursorY);
}
}
if(cursor != null){
cursor.setLocation(new Vector2f(cursorX, cursorY));
}
}
/**
* Called by update() when mouse moves
*/
public abstract void mouseMove(int x, int y);
/**
* Called by update() when mouse button is pressed
*/
public abstract void mouseDown(int x, int y);
/**
* Called by update() when mouse button is released
*/
public abstract void mouseUp(int x, int y);
}