make cursortrail longer and show on small movements

This commit is contained in:
yugecin 2016-09-27 15:29:38 +02:00
parent 51f5282517
commit 74a9320503

View File

@ -94,7 +94,9 @@ public class Cursor {
/** /**
* Constructor. * Constructor.
*/ */
public Cursor() {} public Cursor() {
resetLocations();
}
/** /**
* Draws the cursor. * Draws the cursor.
@ -158,14 +160,12 @@ public class Cursor {
// TODO: use an image buffer // TODO: use an image buffer
int removeCount = 0; int removeCount = 0;
float FPSmod = Math.max(container.getFPS(), 1) / 60f; float FPSmod = Math.max(container.getFPS(), 1) / 30f;
if (newStyle) { if (newStyle) {
// new style: add all points between cursor movements // new style: add all points between cursor movements
if (lastPosition == null) { if (!addCursorPoints(lastPosition.x, lastPosition.y, mouseX, mouseY)) {
lastPosition = new Point(mouseX, mouseY); trail.add(new Point(mouseX, mouseY));
return;
} }
addCursorPoints(lastPosition.x, lastPosition.y, mouseX, mouseY);
lastPosition.move(mouseX, mouseY); lastPosition.move(mouseX, mouseY);
removeCount = (int) (trail.size() / (6 * FPSmod)) + 1; removeCount = (int) (trail.size() / (6 * FPSmod)) + 1;
@ -212,8 +212,9 @@ public class Cursor {
* Adds all points between (x1, y1) and (x2, y2) to the cursor point lists. * Adds all points between (x1, y1) and (x2, y2) to the cursor point lists.
* @author http://rosettacode.org/wiki/Bitmap/Bresenham's_line_algorithm#Java * @author http://rosettacode.org/wiki/Bitmap/Bresenham's_line_algorithm#Java
*/ */
private void addCursorPoints(int x1, int y1, int x2, int y2) { private boolean addCursorPoints(int x1, int y1, int x2, int y2) {
// delta of exact value and rounded value of the dependent variable // delta of exact value and rounded value of the dependent variable
boolean added = false;
int d = 0; int d = 0;
int dy = Math.abs(y2 - y1); int dy = Math.abs(y2 - y1);
int dx = Math.abs(x2 - x1); int dx = Math.abs(x2 - x1);
@ -228,6 +229,7 @@ public class Cursor {
for (int i = 0; ; i++) { for (int i = 0; ; i++) {
if (i == k) { if (i == k) {
trail.add(new Point(x1, y1)); trail.add(new Point(x1, y1));
added = true;
i = 0; i = 0;
} }
if (x1 == x2) if (x1 == x2)
@ -243,6 +245,7 @@ public class Cursor {
for (int i = 0; ; i++) { for (int i = 0; ; i++) {
if (i == k) { if (i == k) {
trail.add(new Point(x1, y1)); trail.add(new Point(x1, y1));
added = true;
i = 0; i = 0;
} }
if (y1 == y2) if (y1 == y2)
@ -255,6 +258,7 @@ public class Cursor {
} }
} }
} }
return added;
} }
/** /**
@ -289,7 +293,7 @@ public class Cursor {
* Resets all cursor location data. * Resets all cursor location data.
*/ */
public void resetLocations() { public void resetLocations() {
lastPosition = null; lastPosition = new Point(0, 0);
trail.clear(); trail.clear();
} }