aboutsummaryrefslogtreecommitdiff
path: root/PunchingBag/src/PunchingBag.java
diff options
context:
space:
mode:
Diffstat (limited to 'PunchingBag/src/PunchingBag.java')
-rw-r--r--PunchingBag/src/PunchingBag.java86
1 files changed, 55 insertions, 31 deletions
diff --git a/PunchingBag/src/PunchingBag.java b/PunchingBag/src/PunchingBag.java
index 7e04d33..f141c26 100644
--- a/PunchingBag/src/PunchingBag.java
+++ b/PunchingBag/src/PunchingBag.java
@@ -28,6 +28,10 @@ public class PunchingBag implements Runnable {
buttonListenerList.add(ButtonListener.class, l);
}
+ public void addLEDChangeListener(LEDListener l) {
+ ledListenerList.add(LEDListener.class, l);
+ }
+
public void setLED(int i, int j, Colour colour) {
leds[i][j] = colour;
}
@@ -39,11 +43,36 @@ public class PunchingBag implements Runnable {
}
}
- class CircleExpand implements Runnable {
+ class Effect implements Runnable {
+ boolean stop = false;
+ int refreshRate = 60; // Times per second to refresh
+
+ public void stop() {
+ stop = true;
+ }
+
+ public void run() {
+ while (!stop) {
+ draw();
+ try {
+ Thread.sleep(1000 / 60);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private void draw() {
+
+ }
+ }
+
+ class CircleExpand extends Effect {
double currentWidth;
final byte x;
final byte y;
byte intensity;
+ boolean drawnSomething = true;
public CircleExpand(byte x, byte y, byte intensity) {
this.x = x;
@@ -52,41 +81,40 @@ public class PunchingBag implements Runnable {
new Thread(this).start();
}
- @Override
- public void run() {
+ public void draw() {
Colour colour;
- boolean drawnSomething = true;
- while (drawnSomething) {
+ if (intensity >= 10) {
+ colour = Colour.Red;
+ } else if (intensity >= 5) {
+ colour = Colour.Yellow;
+ } else {
+ colour = Colour.Green;
+ }
- if (intensity >= 10) {
- colour = Colour.Red;
- } else if (intensity >= 5) {
- colour = Colour.Yellow;
- } else {
- colour = Colour.Green;
- }
+ drawnSomething = false;
- drawnSomething = false;
+ for (double i = 0; i < 360; i++) {
+ // int x = x + (int) Math.round(currentWidth * Math.cos(i));
+ // int y = y + (int) Math.round(currentWidth * Math.sin(i));
- for (double i = 0; i < 360; i++) {
- // int x = x + (int) Math.round(currentWidth * Math.cos(i));
- // int y = y + (int) Math.round(currentWidth * Math.sin(i));
+ if (x >= 0 && x <= 8 && y >= 0 && y <= 19) {
+ setLED(x, y, colour);
+ drawnSomething = true;
+ }
- if (x >= 0 && x <= 8 && y >= 0 && y <= 19) {
- setLED(x, y, colour);
- drawnSomething = true;
- }
+ }
- }
+ if (!drawnSomething)
+ stop = true;
- currentWidth += 0.1 + (currentWidth / 10);
- try {
- Thread.sleep(1000 / 60);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
+ currentWidth += 0.1 + (currentWidth / 10);
+ try {
+ Thread.sleep(1000 / 60);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
}
+
}
}
@@ -124,10 +152,6 @@ public class PunchingBag implements Runnable {
}
}
- public void addLEDChangeListener(ButtonListener l) {
- ledListenerList.add(ButtonListener.class, l);
- }
-
private void calculateRawLeds() {
for (int y = 0; y <= 18; y++) {
for (int x = 0; x <= 6; x++) {