Skip to content

Commit ce67d20

Browse files
Add support for scrolling with mouse
1 parent 490c68b commit ce67d20

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

src/main/java/pekaeds/ui/mappanel/MapPanelMouseHandler.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,31 @@ public void mouseMoved(MouseEvent e) {
143143

144144
@Override
145145
public void mouseWheelMoved(MouseWheelEvent e) {
146-
// mapPanel.getModel().setZoomPosition(e.getPoint());
147-
148-
if (e.getPreciseWheelRotation() < 0) {
149-
//mapPanel.getModel().setZoomAmount(mapPanel.getModel().getZoomAmount() + 0.01f);
150-
} else {
151-
//mapPanel.getModel().setZoomAmount(mapPanel.getModel().getZoomAmount() - 0.01f);
146+
Rectangle viewport = this.mapPanel.viewport();
147+
148+
double dy = 32. *e.getPreciseWheelRotation();
149+
int dy_i = (int)dy;
150+
151+
if(dy_i==0){
152+
dy_i = e.getPreciseWheelRotation() <= 0 ? -1 : 1;
153+
}
154+
155+
if(e.isShiftDown()){
156+
int newX = viewport.x + dy_i;
157+
if(newX < 0){
158+
newX = 0;
159+
}
160+
161+
mapPanel.updateViewportPosition(newX, viewport.y);
162+
}
163+
else{
164+
int newY = viewport.y + dy_i;
165+
if(newY < 0){
166+
newY = 0;
167+
}
168+
mapPanel.updateViewportPosition(viewport.x, newY);
152169
}
153-
170+
e.consume();
154171
mapPanel.repaint();
155172
}
156173

src/main/java/pekaeds/ui/minimappanel/MiniMapPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,15 @@ public void tileChanged(int x, int y, int tileID) {
9494

9595
private void setViewportPosition(Point pos) {
9696
if (pos.x + (viewport.width / 2) >= currentSector.getWidth()) {
97-
viewport.x = currentSector.getWidth() - viewport.width; // TODO -1 here too?
97+
viewport.x = currentSector.getWidth() - viewport.width + 1;
9898
} else if (pos.x - (viewport.width / 2) <= 0) {
9999
viewport.x = 0;
100100
} else {
101101
viewport.x = pos.x - (viewport.width / 2);
102102
}
103103

104104
if (pos.y + (viewport.height / 2) >= currentSector.getHeight()) {
105-
viewport.y = currentSector.getHeight() - viewport.height; // -1 to prevent it from going out of bounds
105+
viewport.y = currentSector.getHeight() - viewport.height + 1;
106106
} else if (pos.y - (viewport.height / 2) <= 0) {
107107
viewport.y = 0;
108108
} else {

0 commit comments

Comments
 (0)