package game.engine.gui;
import game.engine.Engine;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.math.BigDecimal;
public class Camera {
public Point mouseLocation;
public boolean isEnableddrag = true;false;
public intboolean offsetXisEnabled = 0;true;
public Rectangle view;
public int offsetYoffsetX = 0;
public floatint zoommaxOffsetX = 1;
private Point mouseLocation;200;
privatepublic int maxOffsetXZoom = 200;
privatepublic int maxOffsetYZoomoffsetY = 150;0;
private finalpublic int OFFSET_X_MAXmaxOffsetY = 200;150;
private finalpublic int OFFSET_Y_MAXmaxOffsetYZoom = 150;
privatepublic finalfloat zoom = 1;
public float ZOOM_MAXmaxZoom = 1.2F;
private finalpublic float ZOOM_MINminZoom = 0.7F;
public Camera() {
view = new Rectangle(0,0,Engine.window.getWidth(),Engine.window.getHeight());
}
public void draw(Graphics2D g)
{
}
public void update()
{
}
public void mousePressed(MouseEvent e)
{
if(e.getButton()==MouseEvent.BUTTON1)
{
mouseLocation = e.getPoint();
drag = true;
}
}
public void mouseReleased(MouseEvent e)
{
drag = false;
}
public void mouseMoved(MouseEvent e)
{
}
public void mouseDragged(MouseEvent e)
{
if(drag)
{
int newoffsetX = offsetX - (mouseLocation.x - e.getX());
int newoffsetY = offsetY - (mouseLocation.y - e.getY());
if(newoffsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
else if(newoffsetX < -maxOffsetXZoom + (OFFSET_X_MAXmaxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (OFFSET_X_MAXmaxOffsetX-maxOffsetXZoom) * 4;
else offsetX = newoffsetX;
if(newoffsetY > maxOffsetYZoom) offsetY = maxOffsetYZoom;
else if(newoffsetY < -maxOffsetYZoom - 25 + (OFFSET_Y_MAXmaxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (OFFSET_Y_MAXmaxOffsetY-maxOffsetYZoom) * 4;
else offsetY = newoffsetY;
mouseLocation = e.getPoint();
}
}
public void mouseScrolled(MouseWheelEvent e)
{
if (e.getWheelRotation() < 0) {
if(zoom<ZOOM_MAXzoom<maxZoom) zoom += 0.05;05F;
} else {
if(zoom>ZOOM_MINzoom>minZoom) zoom -= 0.05;05F;
}
zoom = round(zoom, 2);
maxOffsetXZoom = (int) (OFFSET_X_MAXmaxOffsetX * zoom);
maxOffsetYZoom = (int) (OFFSET_Y_MAXmaxOffsetY * zoom);
if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
else if(offsetX < -maxOffsetXZoom + (OFFSET_X_MAXmaxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (OFFSET_X_MAXmaxOffsetX-maxOffsetXZoom) * 4;
if(offsetY > maxOffsetYZoom) offsetY = maxOffsetYZoom;
else if(offsetY < -maxOffsetYZoom - 25 + (OFFSET_Y_MAXmaxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (OFFSET_Y_MAXmaxOffsetY-maxOffsetYZoom) * 4;
}
public float round(float d, int decimalPlace) {
BigDecimal bd = new BigDecimal(Float.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.floatValue();
}
}