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.java76
1 files changed, 74 insertions, 2 deletions
diff --git a/PunchingBag/src/PunchingBag.java b/PunchingBag/src/PunchingBag.java
index 7629afe..b8cbfce 100644
--- a/PunchingBag/src/PunchingBag.java
+++ b/PunchingBag/src/PunchingBag.java
@@ -1,12 +1,23 @@
import javax.swing.event.EventListenerList;
+import java.util.Arrays;
-public class PunchingBag {
- protected EventListenerList listenerList = new EventListenerList();
+public class PunchingBag implements Runnable {
+ private byte[] rawLeds = new byte[6*8];
+ private Colour[][] leds = new Colour[9][20];
+ private byte[] ledGridIntensities = new byte[6];
+ private boolean[][] buttons = new boolean[8][19];
enum Colour {
None, Red, Yellow, Green
};
+ private EventListenerList buttonListenerList = new EventListenerList();
+ private EventListenerList ledListenerList = new EventListenerList();
+
+ public PunchingBag() {
+ new Thread(this).start();
+ }
+
/**
* Adds an <code>ActionListener</code> to the button.
*
@@ -86,4 +97,65 @@ matrix. Clear ( ) ;
matrix. DrawEllipse ( AS1107:: Maxx / x , y ,i,i ) ;
matrix. Update ( ) ;
delay ( d ) ;
+
+ buttonListenerList.add(ButtonListener.class, l);
+ }
+
+ public void addLEDChangeListener(ButtonListener l) {
+ ledListenerList.add(ButtonListener.class, l);
+ }
+
+ public void setLED(byte x, byte y, Colour colour) {
+ leds[x][y] = colour;
+ }
+
+ private void calculateRawLeds() {
+ for (int y = 0; y <= 18; y++) {
+ for (int x = 0; x <= 6; x++) {
+ if ((y % 2) == 0) {
+ if (leds[x][y] == Colour.Green
+ || leds[x][y] == Colour.Yellow) {
+ rawLeds[(int) Math.floor(y / 4)] = (byte) (rawLeds[(int) Math
+ .floor(y / 4)] | (1 << (7 - x)));
+ }
+ } else {
+ if (leds[x][y] == Colour.Red || leds[x][y] == Colour.Yellow) {
+ rawLeds[(int) Math.floor(y / 4)] = (byte) (rawLeds[(int) Math
+ .floor(y / 4)] | (1 << (7 - x)));
+ }
+ }
+ }
+ }
+ int x = 7;
+ // TODO: Complete and test, or rethink the following?
+ for (int startY = 0; startY <= 4; startY++) {
+ for (int y = 0; y <= 3; y++) {
+ if (leds[x][startY + (y * 4)] == Colour.Red || leds[x][startY + (y * 4)] == Colour.Yellow) {
+ rawLeds[(5 * 8) + startY] = (byte) (rawLeds[(int) Math
+ .floor(y / 4)] | (1 << (7 - x)));
+ }
+ if (leds[x][y] == Colour.Green || leds[x][y] == Colour.Yellow) {
+ rawLeds[(int) Math.floor(y / 4)] = (byte) (rawLeds[(int) Math
+ .floor(y / 4)] | (1 << (7 - x)));
+ }
+ }
+ }
+ }
+
+ public void clearLEDGrid() {
+ Arrays.fill(leds, Boolean.FALSE);
+ }
+
+ public void setLEDGridIntensity(byte grid, byte intensity) {
+ ledGridIntensities[grid] = intensity;
+ }
+
+ public void setLEDIntensities(byte intensity) {
+ Arrays.fill(ledGridIntensities, intensity);
+ }
+
+ public void run() {
+
+ }
+
}