package ei.game.input; import java.util.ArrayList; import ei.engine.LWJGLGameWindow; import ei.engine.input.MouseInput; import ei.engine.math.Vector2f; import ei.engine.math.Vector2i; import ei.engine.math.Vector4f; import ei.engine.scene.Box; import ei.engine.scene.Sprite; import ei.engine.texture.Texture; import ei.engine.util.MultiPrintStream; import ei.game.scene.GameEntity; import ei.game.scene.Map; public class InGameMouseInput extends MouseInput{ private static final int CAMERA_MOVE_BORDER = 40; private static final float CAMERA_MOVE_SPEED = 6.0f; private ArrayList selected; private Vector2f leftKlickPos; private Box markingBox; private Map map; public InGameMouseInput(Map map) { super("InGameMouseInput","data/cursor/cursor.png"); this.map = map; this.selected = new ArrayList(); //inits the mouse texture Sprite s = getSprite(); s.setSize(new Vector2f(38,50)); Texture tex = new Texture(); tex.setColor(new Vector4f(0.5f, 1.0f, 0.5f,1)); markingBox = new Box("MarkingBob", tex); } @Override public void mouseUpdate(int x, int y, int w) { // mov cam to the left if(x < CAMERA_MOVE_BORDER){ LWJGLGameWindow.getCamera().getLocation().add(-CAMERA_MOVE_SPEED,0,0); } // mov cam to the right if(x > LWJGLGameWindow.getWidth()-CAMERA_MOVE_BORDER){ LWJGLGameWindow.getCamera().getLocation().add(CAMERA_MOVE_SPEED,0,0); } // mov cam upp if(y < CAMERA_MOVE_BORDER){ LWJGLGameWindow.getCamera().getLocation().add(0,-CAMERA_MOVE_SPEED,0); } // mov cam down if(y > LWJGLGameWindow.getHeight()-CAMERA_MOVE_BORDER){ LWJGLGameWindow.getCamera().getLocation().add(0,CAMERA_MOVE_SPEED,0); } // The if(leftKlickPos != null){ System.out.println("leftclick 2"); markingBox.setSize(new Vector2f( Math.abs(leftKlickPos.getX()-(LWJGLGameWindow.getCamera().getLocation().getX()+x)), Math.abs(leftKlickPos.getY()-(LWJGLGameWindow.getCamera().getLocation().getY()+y)))); getNode().add(markingBox); } } @Override public void mouseDown(int event,int x, int y) { Vector2i pos = Map.getPosByPixel( LWJGLGameWindow.getCamera().getLocation().getX()+x, LWJGLGameWindow.getCamera().getLocation().getY()+y); //selecting unit. if(event==LEFT_MOUSE_BUTTON){ //map.printAllUnits(); if(leftKlickPos == null){ System.out.println("leftclick 1"); leftKlickPos = new Vector2f(x,y); markingBox.setLocation(leftKlickPos); } } //unit action. else if(event==RIGHT_MOUSE_BUTTON) { if(!map.isPosEmpty(pos.getX(), pos.getY())){ for(int i=0; i