protected final int STATE_PENDING = 2;
protected int[] pandaLeft = new int[pandaBoards.length];
- protected final int pandaWidth = 56;
+ protected final int pandaWidth = 64;
protected final int pandaHeight = 13;
protected final int pandaTop = height-16;
text("Tap 'u' to restore UI", width-4, height-6);
}
+ public void drawDanText() {
+ textFont(itemFont);
+ textAlign(LEFT);
+ fill(#FFFFFF);
+ text(DanTextLine1, 4, height-50);
+ text(DanTextLine2, 4, height-30);
+ }
+
public void drawFPS() {
textFont(titleFont);
textAlign(LEFT);
fill(#666666);
- text("FPS: " + (((int)(frameRate * 10)) / 10.), 4, height-6);
- text("Target (-/+):", 50, height-6);
+ int lPos = 4;
+ String fps = "FPS: " + (((int)(frameRate * 10)) / 10.);
+ text(fps, lPos, height-6);
+ lPos += 48;
+
+ String target = "Target (-/+):";
+ text(target, lPos, height-6);
fill(#000000);
- rect(104, height-16, 20, 13);
+ lPos += textWidth(target) + 4;
+ rect(lPos, height-16, 24, 13);
fill(#666666);
- text("" + targetFramerate, 108, height-6);
- text("PandaOutput (p):", 134, height-6);
- int lPos = 214;
+ text("" + targetFramerate, lPos + (24 - textWidth("" + targetFramerate))/2, height-6);
+ lPos += 32;
+ String pandaOutput = "PandaOutput (p):";
+ text(pandaOutput, lPos, height-6);
+ lPos += textWidth(pandaOutput)+4;
int pi = 0;
for (PandaDriver p : pandaBoards) {
pandaLeft[pi++] = lPos;
fill(p.enabled ? #666666 : #000000);
rect(lPos, pandaTop, pandaWidth, pandaHeight);
fill(p.enabled ? #000000 : #666666);
- text(p.ip, lPos + 4, height-6);
- lPos += 60;
+ text(p.ip, lPos + (pandaWidth - textWidth(p.ip)) / 2, height-6);
+ lPos += pandaWidth + 8;
}
}
public void draw() {
drawLogoAndBackground();
+
int yPos = 0;
firstMappingY = yPos + lineHeight + 6;
yPos = drawObjectList(yPos, "MAPPING MODE", mappingModes, mappingModes, mappingModeStateMethod);
class DebugUI {
final ChannelMapping[] channelList;
- final int debugX = 10;
- final int debugY = 42;
+ final int debugX = 5;
+ final int debugY = 5;
final int debugXSpacing = 28;
- final int debugYSpacing = 22;
+ final int debugYSpacing = 21;
final int[][] debugState;
+ final int[] indexState;
+
+ final int CUBE_STATE_UNUSED = 0;
+ final int CUBE_STATE_USED = 1;
+ final int CUBE_STATE_DUPLICATED = 2;
final int DEBUG_STATE_ANIM = 0;
final int DEBUG_STATE_WHITE = 1;
final int DEBUG_STATE_OFF = 2;
+ final int DEBUG_STATE_UNUSED = 3;
DebugUI(PandaMapping[] pandaMappings) {
int totalChannels = pandaMappings.length * PandaMapping.CHANNELS_PER_BOARD;
debugState = new int[totalChannels+1][ChannelMapping.CUBES_PER_CHANNEL+1];
+ indexState = new int[glucose.model.cubes.size()+1];
channelList = new ChannelMapping[totalChannels];
int channelIndex = 0;
debugState[i][j] = DEBUG_STATE_ANIM;
}
}
+
+ for (int rawIndex = 0; rawIndex < glucose.model.cubes.size()+1; ++rawIndex) {
+ indexState[rawIndex] = CUBE_STATE_UNUSED;
+ }
+ for (ChannelMapping channel : channelList) {
+ for (int rawCubeIndex : channel.objectIndices) {
+ if (rawCubeIndex > 0)
+ ++indexState[rawCubeIndex];
+ }
+ }
}
- void draw() {
+ void draw() {
noStroke();
int xBase = debugX;
int yPos = debugY;
- fill(color(0, 0, 0, 80));
- rect(4, 32, 172, 388);
+ fill(#000000);
+ rect(0, 0, debugX + 5*debugXSpacing, height);
int channelNum = 0;
for (ChannelMapping channel : channelList) {
stroke(#999999);
line(xPos - 12, yPos + 8, xPos, yPos + 8);
}
- drawNumBox(xPos, yPos, rawCubeIndex, debugState[channelNum][stateIndex+1]);
+ drawNumBox(xPos, yPos, rawCubeIndex, debugState[channelNum][stateIndex+1], indexState[rawCubeIndex]);
++stateIndex;
xPos += debugXSpacing;
}
case ChannelMapping.MODE_SPEAKER:
drawNumBox(xPos, yPos, "S" + channel.objectIndices[0], debugState[channelNum][1]);
break;
- case ChannelMapping.MODE_FLOOR:
+ case ChannelMapping.MODE_STRUTS_AND_FLOOR:
drawNumBox(xPos, yPos, "F", debugState[channelNum][1]);
break;
case ChannelMapping.MODE_NULL:
++channelNum;
}
drawNumBox(xBase, yPos, "A", debugState[channelNum][0]);
+ yPos += debugYSpacing * 2;
+
+ noFill();
+ fill(#CCCCCC);
+ text("Unused Cubes", xBase, yPos + 12);
+ yPos += debugYSpacing;
+
+ int xIndex = 0;
+ for (int rawIndex = 1; rawIndex <= glucose.model.cubes.size(); ++rawIndex) {
+ if (indexState[rawIndex] == CUBE_STATE_UNUSED) {
+ drawNumBox(xBase + (xIndex * debugXSpacing), yPos, rawIndex, DEBUG_STATE_UNUSED);
+ ++xIndex;
+ if (xIndex > 4) {
+ xIndex = 0;
+ yPos += debugYSpacing + 2;
+ }
+ }
+ }
}
+
void drawNumBox(int xPos, int yPos, int label, int state) {
drawNumBox(xPos, yPos, "" + label, state);
}
void drawNumBox(int xPos, int yPos, String label, int state) {
+ drawNumBox(xPos, yPos, "" + label, state, CUBE_STATE_USED);
+ }
+
+ void drawNumBox(int xPos, int yPos, int label, int state, int cubeState) {
+ drawNumBox(xPos, yPos, "" + label, state, cubeState);
+ }
+
+ void drawNumBox(int xPos, int yPos, String label, int state, int cubeState) {
noFill();
color textColor = #cccccc;
switch (state) {
rect(xPos, yPos+8, 16, 8);
noFill();
stroke(textColor);
- rect(xPos, yPos, 16, 16);
break;
case DEBUG_STATE_WHITE:
stroke(textColor);
fill(#e9e9e9);
- rect(xPos, yPos, 16, 16);
textColor = #333333;
break;
case DEBUG_STATE_OFF:
stroke(textColor);
- rect(xPos, yPos, 16, 16);
+ break;
+ case DEBUG_STATE_UNUSED:
+ stroke(textColor);
+ fill(#880000);
break;
}
+ if (cubeState >= CUBE_STATE_DUPLICATED) {
+ stroke(textColor = #FF0000);
+ }
+
+ rect(xPos, yPos, 16, 16);
noStroke();
fill(textColor);
text(label, xPos + 2, yPos + 12);
-
}
void maskColors(color[] colors) {
state = debugState[channelIndex][1];
if (state != DEBUG_STATE_ANIM) {
color debugColor = (state == DEBUG_STATE_WHITE) ? white : off;
- for (Point p : glucose.model.bassBox.points) {
- colors[p.index] = debugColor;
+ for (Strip s : glucose.model.bassBox.boxStrips) {
+ for (Point p : s.points) {
+ colors[p.index] = debugColor;
+ }
}
}
break;
- case ChannelMapping.MODE_FLOOR:
+ case ChannelMapping.MODE_STRUTS_AND_FLOOR:
state = debugState[channelIndex][1];
if (state != DEBUG_STATE_ANIM) {
color debugColor = (state == DEBUG_STATE_WHITE) ? white : off;
for (Point p : glucose.model.boothFloor.points) {
colors[p.index] = debugColor;
}
+ for (Strip s : glucose.model.bassBox.struts) {
+ for (Point p : s.points) {
+ colors[p.index] = debugColor;
+ }
+ }
}
break;