Skip to main content
Tweeted twitter.com/StackCodeReview/status/1596247391367462912
Rollback to Revision 2
Source Link
Mast
  • 13.5k
  • 12
  • 54
  • 119
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();
}
}
package game.engine.gui;

import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;

public class Camera {

public boolean isEnabled = true;
public int offsetX = 0;
public int offsetY = 0;
public float zoom = 1;
private Point mouseLocation;
private int maxOffsetXZoom = 200;
private int maxOffsetYZoom = 150;
private final int OFFSET_X_MAX = 200;
private final int OFFSET_Y_MAX = 150;
private final float ZOOM_MAX = 1.2F;
private final float ZOOM_MIN = 0.7F;

public Camera() { }

public void draw(Graphics2D g) { }

public void update() { }

public void mousePressed(MouseEvent e) { mouseLocation = e.getPoint(); }

public void mouseReleased(MouseEvent e) { }

public void mouseMoved(MouseEvent e) { }

public void mouseDragged(MouseEvent e)
{
    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_MAX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (OFFSET_X_MAX-maxOffsetXZoom) * 4;
    else offsetX = newoffsetX;
        
    if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(newoffsetY < -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4;
    else offsetY = newoffsetY;
        
    mouseLocation = e.getPoint();
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<ZOOM_MAX) zoom += 0.05;
    } else {
        if(zoom>ZOOM_MIN) zoom -= 0.05;
    }
    maxOffsetXZoom = (int) (OFFSET_X_MAX * zoom);
    maxOffsetYZoom = (int) (OFFSET_Y_MAX * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (OFFSET_X_MAX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (OFFSET_X_MAX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4;
}
}
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 drag = false;
public boolean isEnabled = true;
public Rectangle view;
public int offsetX = 0;
public int maxOffsetX = 200;
public int maxOffsetXZoom = 200;
public int offsetY = 0;
public int maxOffsetY = 150;
public int maxOffsetYZoom = 150;
public float zoom = 1;
public float maxZoom = 1.2F;
public float minZoom = 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 + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        else offsetX = newoffsetX;
        
        if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
        else if(newoffsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
        else offsetY = newoffsetY;
        
        mouseLocation = e.getPoint();
    }
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<maxZoom) zoom += 0.05F;
    } else {
        if(zoom>minZoom) zoom -= 0.05F;
    }
    zoom = round(zoom, 2);
    maxOffsetXZoom = (int) (maxOffsetX * zoom);
    maxOffsetYZoom = (int) (maxOffsetY * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-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();
}
}
added 28 characters in body
Source Link
Ladas125
  • 255
  • 2
  • 8
package game.engine.gui;

import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;

public class Camera {

public boolean isEnabled = true;
public int offsetX = 0;
public int offsetY = 0;
public float zoom = 1;
private Point mouseLocation;
private int maxOffsetXZoom = 200;
private int maxOffsetYZoom = 150;
private final int maxOffsetXOFFSET_X_MAX = 200;
private final int maxOffsetYOFFSET_Y_MAX = 150;
private final float maxZoomZOOM_MAX = 1.2F;
private final float minZoomZOOM_MIN = 0.7F;

public Camera() { }

public void draw(Graphics2D g) { }

public void update() { }

public void mousePressed(MouseEvent e) { mouseLocation = e.getPoint(); }

public void mouseReleased(MouseEvent e) { }

public void mouseMoved(MouseEvent e) { }

public void mouseDragged(MouseEvent e)
{
    int newoffsetX = offsetX - (mouseLocation.x - e.getX());
    int newoffsetY = offsetY -  (mouseLocation.y - e.getY());
        
    if(newoffsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(newoffsetX  < -maxOffsetXZoom + (maxOffsetXOFFSET_X_MAX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetXOFFSET_X_MAX-maxOffsetXZoom) * 4;
    else offsetX = newoffsetX;
        
    if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(newoffsetY < -maxOffsetYZoom - 25 + (maxOffsetYOFFSET_Y_MAX-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetYOFFSET_Y_MAX-maxOffsetYZoom) * 4;
    else offsetY = newoffsetY;
        
    mouseLocation = e.getPoint();
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<maxZoomzoom<ZOOM_MAX) zoom += 0.05;
    } else {
        if(zoom>minZoomzoom>ZOOM_MIN) zoom -= 0.05;
    }
    maxOffsetXZoom = (int) (maxOffsetXOFFSET_X_MAX * zoom);
    maxOffsetYZoom = (int) (maxOffsetYOFFSET_Y_MAX * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (maxOffsetXOFFSET_X_MAX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetXOFFSET_X_MAX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (maxOffsetYOFFSET_Y_MAX-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetYOFFSET_Y_MAX-maxOffsetYZoom) * 4;
}
}
package game.engine.gui;

import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;

public class Camera {

public boolean isEnabled = true;
public int offsetX = 0;
public int offsetY = 0;
public float zoom = 1;
private Point mouseLocation;
private int maxOffsetXZoom = 200;
private int maxOffsetYZoom = 150;
private final int maxOffsetX = 200;
private final int maxOffsetY = 150;
private final float maxZoom = 1.2F;
private final float minZoom = 0.7F;

public Camera() { }

public void draw(Graphics2D g) { }

public void update() { }

public void mousePressed(MouseEvent e) { mouseLocation = e.getPoint(); }

public void mouseReleased(MouseEvent e) { }

public void mouseMoved(MouseEvent e) { }

public void mouseDragged(MouseEvent e)
{
    int newoffsetX = offsetX - (mouseLocation.x - e.getX());
    int newoffsetY = offsetY -  (mouseLocation.y - e.getY());
        
    if(newoffsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(newoffsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
    else offsetX = newoffsetX;
        
    if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(newoffsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
    else offsetY = newoffsetY;
        
    mouseLocation = e.getPoint();
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<maxZoom) zoom += 0.05;
    } else {
        if(zoom>minZoom) zoom -= 0.05;
    }
    maxOffsetXZoom = (int) (maxOffsetX * zoom);
    maxOffsetYZoom = (int) (maxOffsetY * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
}
}
package game.engine.gui;

import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;

public class Camera {

public boolean isEnabled = true;
public int offsetX = 0;
public int offsetY = 0;
public float zoom = 1;
private Point mouseLocation;
private int maxOffsetXZoom = 200;
private int maxOffsetYZoom = 150;
private final int OFFSET_X_MAX = 200;
private final int OFFSET_Y_MAX = 150;
private final float ZOOM_MAX = 1.2F;
private final float ZOOM_MIN = 0.7F;

public Camera() { }

public void draw(Graphics2D g) { }

public void update() { }

public void mousePressed(MouseEvent e) { mouseLocation = e.getPoint(); }

public void mouseReleased(MouseEvent e) { }

public void mouseMoved(MouseEvent e) { }

public void mouseDragged(MouseEvent e)
{
    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_MAX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (OFFSET_X_MAX-maxOffsetXZoom) * 4;
    else offsetX = newoffsetX;
        
    if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(newoffsetY < -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4;
    else offsetY = newoffsetY;
        
    mouseLocation = e.getPoint();
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<ZOOM_MAX) zoom += 0.05;
    } else {
        if(zoom>ZOOM_MIN) zoom -= 0.05;
    }
    maxOffsetXZoom = (int) (OFFSET_X_MAX * zoom);
    maxOffsetYZoom = (int) (OFFSET_Y_MAX * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (OFFSET_X_MAX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (OFFSET_X_MAX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (OFFSET_Y_MAX-maxOffsetYZoom) * 4;
}
}
deleted 772 characters in body
Source Link
Ladas125
  • 255
  • 2
  • 8
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 drag = false;
public boolean isEnabled = true;
public Rectangle view;
public int offsetX = 0;
public int maxOffsetXoffsetY = 200;0;
public intfloat maxOffsetXZoomzoom = 200;1;
publicprivate Point mouseLocation;
private int offsetYmaxOffsetXZoom = 0;200;
publicprivate int maxOffsetYmaxOffsetYZoom = 150;
publicprivate final int maxOffsetYZoommaxOffsetX = 150;200;
publicprivate floatfinal zoomint maxOffsetY = 1;150;
publicprivate final float maxZoom = 1.2F;
publicprivate final float minZoom = 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 + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        else offsetX = newoffsetX;
        
        if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
        else if(newoffsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
        else offsetY = newoffsetY;
        
        mouseLocation = e.getPoint();
    }
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<maxZoom) zoom += 0.05F;05;
    } else {
        if(zoom>minZoom) zoom -= 0.05F;05;
    }
    zoom = round(zoom, 2);
    maxOffsetXZoom = (int) (maxOffsetX * zoom);
    maxOffsetYZoom = (int) (maxOffsetY * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-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();
}
}
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 drag = false;
public boolean isEnabled = true;
public Rectangle view;
public int offsetX = 0;
public int maxOffsetX = 200;
public int maxOffsetXZoom = 200;
public int offsetY = 0;
public int maxOffsetY = 150;
public int maxOffsetYZoom = 150;
public float zoom = 1;
public float maxZoom = 1.2F;
public float minZoom = 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 + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        else offsetX = newoffsetX;
        
        if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
        else if(newoffsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
        else offsetY = newoffsetY;
        
        mouseLocation = e.getPoint();
    }
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<maxZoom) zoom += 0.05F;
    } else {
        if(zoom>minZoom) zoom -= 0.05F;
    }
    zoom = round(zoom, 2);
    maxOffsetXZoom = (int) (maxOffsetX * zoom);
    maxOffsetYZoom = (int) (maxOffsetY * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-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();
}
}
package game.engine.gui;

import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;

public class Camera {

public boolean isEnabled = true;
public int offsetX = 0;
public int offsetY = 0;
public float zoom = 1;
private Point mouseLocation;
private int maxOffsetXZoom = 200;
private int maxOffsetYZoom = 150;
private final int maxOffsetX = 200;
private final int maxOffsetY = 150;
private final float maxZoom = 1.2F;
private final float minZoom = 0.7F;

public Camera() { }

public void draw(Graphics2D g) { }

public void update() { }

public void mousePressed(MouseEvent e) { mouseLocation = e.getPoint(); }

public void mouseReleased(MouseEvent e) { }

public void mouseMoved(MouseEvent e) { }

public void mouseDragged(MouseEvent e)
{
    int newoffsetX = offsetX - (mouseLocation.x - e.getX());
    int newoffsetY = offsetY -  (mouseLocation.y - e.getY());
        
    if(newoffsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(newoffsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
    else offsetX = newoffsetX;
        
    if(newoffsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(newoffsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
    else offsetY = newoffsetY;
        
    mouseLocation = e.getPoint();
}

public void mouseScrolled(MouseWheelEvent e)
{
    if (e.getWheelRotation() < 0) {
        if(zoom<maxZoom) zoom += 0.05;
    } else {
        if(zoom>minZoom) zoom -= 0.05;
    }
    maxOffsetXZoom = (int) (maxOffsetX * zoom);
    maxOffsetYZoom = (int) (maxOffsetY * zoom);
    if(offsetX > maxOffsetXZoom) offsetX = maxOffsetXZoom;
    else if(offsetX  < -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4) offsetX = -maxOffsetXZoom + (maxOffsetX-maxOffsetXZoom) * 4;
        
    if(offsetY  > maxOffsetYZoom) offsetY = maxOffsetYZoom;
    else if(offsetY < -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4) offsetY = -maxOffsetYZoom - 25 + (maxOffsetY-maxOffsetYZoom) * 4;
}
}
deleted 28 characters in body
Source Link
Jamal
  • 34.9k
  • 13
  • 133
  • 237
Loading
Source Link
Ladas125
  • 255
  • 2
  • 8
Loading