public class Panel { public static boolean drawBackgroundArrow = true; public static int baseSpriteStart; public static int redMod = 114; public static int greenMod = 114; public static int blueMod = 176; public static int textListEntryHeightMod; public boolean controlShown[]; public boolean controlListScrollbarHandleDragged[]; public boolean controlMaskText[]; public boolean controlClicked[]; public int controlFlashText[]; public int controlListEntryCount[]; public int controlListEntryMouseButtonDown[]; public int controlListEntryMouseOver[]; public boolean aBoolean219; protected Surface surface; int controlCount; int maxControls; boolean controlUseAlternativeColour[]; int controlX[]; int controlY[]; int controlType[]; int controlWidth[]; int controlHeight[]; int controlInputMaxLen[]; int controlTextSize[]; String controlText[]; String controlListEntries[][]; int mouseX; int mouseY; int mouseLastButtonDown; int mouseButtonDown; int focusControlIndex; int mouseMetaButtonHeld; int colourScrollbarTop; int colourScrollbarBottom; int colourScrollbarHandleLeft; int colourScrollbarHandleMid; int colourScrollbarHandleRight; int colourRoundedBoxOut; int colourRoundedBoxMid; int colourRoundedBoxIn; int colourBoxTopNBottom; int colourBoxTopNBottom2; int colourBoxLeftNRight2; int colourBoxLeftNRight; public Panel(Surface surface, int max) { focusControlIndex = -1; aBoolean219 = true; this.surface = surface; maxControls = max; controlShown = new boolean[max]; controlListScrollbarHandleDragged = new boolean[max]; controlMaskText = new boolean[max]; controlClicked = new boolean[max]; controlUseAlternativeColour = new boolean[max]; controlFlashText = new int[max];// not so sure controlListEntryCount = new int[max]; controlListEntryMouseButtonDown = new int[max]; controlListEntryMouseOver = new int[max]; controlX = new int[max]; controlY = new int[max]; controlType = new int[max]; controlWidth = new int[max]; controlHeight = new int[max]; controlInputMaxLen = new int[max]; controlTextSize = new int[max]; controlText = new String[max]; controlListEntries = new String[max][]; colourScrollbarTop = rgb2longMod(114, 114, 176); colourScrollbarBottom = rgb2longMod(14, 14, 62); colourScrollbarHandleLeft = rgb2longMod(200, 208, 232); colourScrollbarHandleMid = rgb2longMod(96, 129, 184); colourScrollbarHandleRight = rgb2longMod(53, 95, 115); colourRoundedBoxOut = rgb2longMod(117, 142, 171); colourRoundedBoxMid = rgb2longMod(98, 122, 158); colourRoundedBoxIn = rgb2longMod(86, 100, 136); colourBoxTopNBottom = rgb2longMod(135, 146, 179); colourBoxTopNBottom2 = rgb2longMod(97, 112, 151); colourBoxLeftNRight2 = rgb2longMod(88, 102, 136); colourBoxLeftNRight = rgb2longMod(84, 93, 120); } public int rgb2longMod(int i, int j, int k) { return Surface.rgb2long((redMod * i) / 114, (greenMod * j) / 114, (blueMod * k) / 176); } public void handleMouse(int mx, int my, int lastmb, int mbdown) { mouseX = mx; mouseY = my; mouseButtonDown = mbdown; if (lastmb != 0) mouseLastButtonDown = lastmb; if (lastmb == 1) { for (int i1 = 0; i1 < controlCount; i1++) { if (controlShown[i1] && controlType[i1] == 10 && mouseX >= controlX[i1] && mouseY >= controlY[i1] && mouseX <= controlX[i1] + controlWidth[i1] && mouseY <= controlY[i1] + controlHeight[i1]) controlClicked[i1] = true; if (controlShown[i1] && controlType[i1] == 14 && mouseX >= controlX[i1] && mouseY >= controlY[i1] && mouseX <= controlX[i1] + controlWidth[i1] && mouseY <= controlY[i1] + controlHeight[i1]) controlListEntryMouseButtonDown[i1] = 1 - controlListEntryMouseButtonDown[i1]; } } if (mbdown == 1) mouseMetaButtonHeld++; else mouseMetaButtonHeld = 0; if (lastmb == 1 || mouseMetaButtonHeld > 20) { for (int j1 = 0; j1 < controlCount; j1++) if (controlShown[j1] && controlType[j1] == 15 && mouseX >= controlX[j1] && mouseY >= controlY[j1] && mouseX <= controlX[j1] + controlWidth[j1] && mouseY <= controlY[j1] + controlHeight[j1]) controlClicked[j1] = true; mouseMetaButtonHeld -= 5; } } public boolean isClicked(int i) { if (controlShown[i] && controlClicked[i]) { controlClicked[i] = false; return true; } else { return false; } } public void keyPress(int key) { if (key == 0) return; if (focusControlIndex != -1 && controlText[focusControlIndex] != null && controlShown[focusControlIndex]) { int inputLen = controlText[focusControlIndex].length(); if (key == 8 && inputLen > 0) controlText[focusControlIndex] = controlText[focusControlIndex].substring(0, inputLen - 1); if ((key == 10 || key == 13) && inputLen > 0) controlClicked[focusControlIndex] = true; String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-_=+[{]};:'@#~,<.>/?\\| "; if (inputLen < controlInputMaxLen[focusControlIndex]) { for (int k = 0; k < s.length(); k++) if (key == s.charAt(k)) controlText[focusControlIndex] += (char) key; } if (key == 9) do focusControlIndex = (focusControlIndex + 1) % controlCount; while (controlType[focusControlIndex] != 5 && controlType[focusControlIndex] != 6); } } public void drawPanel() { for (int i = 0; i < controlCount; i++) if (controlShown[i]) if (controlType[i] == 0)// text drawText(i, controlX[i], controlY[i], controlText[i], controlTextSize[i]); else if (controlType[i] == 1)// text (centered) drawText(i, controlX[i] - surface.textWidth(controlText[i], controlTextSize[i]) / 2, controlY[i], controlText[i], controlTextSize[i]); else if (controlType[i] == 2)// component gradient bg drawBox(controlX[i], controlY[i], controlWidth[i], controlHeight[i]); else if (controlType[i] == 3)// horiz line drawLineHoriz(controlX[i], controlY[i], controlWidth[i]); else if (controlType[i] == 4)// text list (no interaction) drawTextList(i, controlX[i], controlY[i], controlWidth[i], controlHeight[i], controlTextSize[i], controlListEntries[i], controlListEntryCount[i], controlFlashText[i]); else if (controlType[i] == 5 || controlType[i] == 6)// input text drawTextInput(i, controlX[i], controlY[i], controlWidth[i], controlHeight[i], controlText[i], controlTextSize[i]); else if (controlType[i] == 7)// option list horiz drawOptionListHoriz(i, controlX[i], controlY[i], controlTextSize[i], controlListEntries[i]); else if (controlType[i] == 8)// option list vert drawOptionListVert(i, controlX[i], controlY[i], controlTextSize[i], controlListEntries[i]); else if (controlType[i] == 9)// text list (interaction) drawTextListInteractive(i, controlX[i], controlY[i], controlWidth[i], controlHeight[i], controlTextSize[i], controlListEntries[i], controlListEntryCount[i], controlFlashText[i]); else if (controlType[i] == 11)// rounded box drawRoundedBox(controlX[i], controlY[i], controlWidth[i], controlHeight[i]); else if (controlType[i] == 12)// image drawPicture(controlX[i], controlY[i], controlTextSize[i]); else if (controlType[i] == 14)// checkbox drawCheckbox(i, controlX[i], controlY[i], controlWidth[i], controlHeight[i]); mouseLastButtonDown = 0; } protected void drawCheckbox(int control, int x, int y, int width, int height) { surface.drawBox(x, y, width, height, 0xffffff); surface.drawLineHoriz(x, y, width, colourBoxTopNBottom); surface.drawLineVert(x, y, height, colourBoxTopNBottom); surface.drawLineHoriz(x, (y + height) - 1, width, colourBoxLeftNRight); surface.drawLineVert((x + width) - 1, y, height, colourBoxLeftNRight); if (controlListEntryMouseButtonDown[control] == 1) { for (int j1 = 0; j1 < height; j1++) { surface.drawLineHoriz(x + j1, y + j1, 1, 0); surface.drawLineHoriz((x + width) - 1 - j1, y + j1, 1, 0); } } } protected void drawText(int control, int x, int y, String text, int textSize) { int y2 = y + surface.textHeight(textSize) / 3; drawstring(control, x, y2, text, textSize); } protected void drawstring(int control, int x, int y, String text, int textSize) { int i1; if (controlUseAlternativeColour[control]) i1 = 0xffffff; else i1 = 0; surface.drawstring(text, x, y, textSize, i1); } protected void drawTextInput(int control, int x, int y, int width, int height, String text, int textSize) { if (controlMaskText[control]) { int len = text.length(); text = ""; for (int i2 = 0; i2 < len; i2++) text = text + "X"; } if (controlType[control] == 5) {// "list input" if (mouseLastButtonDown == 1 && mouseX >= x && mouseY >= y - height / 2 && mouseX <= x + width && mouseY <= y + height / 2) focusControlIndex = control; } else if (controlType[control] == 6) {// "text input" if (mouseLastButtonDown == 1 && mouseX >= x - width / 2 && mouseY >= y - height / 2 && mouseX <= x + width / 2 && mouseY <= y + height / 2) focusControlIndex = control; x -= surface.textWidth(text, textSize) / 2; } if (focusControlIndex == control) text = text + "*"; int y2 = y + surface.textHeight(textSize) / 3; drawstring(control, x, y2, text, textSize); } public void drawBox(int x, int y, int width, int height) { surface.setBounds(x, y, x + width, y + height); surface.drawGradient(x, y, width, height, colourBoxLeftNRight, colourBoxTopNBottom); if (drawBackgroundArrow) {// set to false inside startGame, draw some kindof an arrow?? for (int i1 = x - (y & 0x3f); i1 < x + width; i1 += 128) { for (int j1 = y - (y & 0x1f); j1 < y + height; j1 += 128) surface.drawSpriteAlpha(i1, j1, 6 + baseSpriteStart, 128); } } surface.drawLineHoriz(x, y, width, colourBoxTopNBottom); surface.drawLineHoriz(x + 1, y + 1, width - 2, colourBoxTopNBottom); surface.drawLineHoriz(x + 2, y + 2, width - 4, colourBoxTopNBottom2); surface.drawLineVert(x, y, height, colourBoxTopNBottom); surface.drawLineVert(x + 1, y + 1, height - 2, colourBoxTopNBottom); surface.drawLineVert(x + 2, y + 2, height - 4, colourBoxTopNBottom2); surface.drawLineHoriz(x, (y + height) - 1, width, colourBoxLeftNRight); surface.drawLineHoriz(x + 1, (y + height) - 2, width - 2, colourBoxLeftNRight); surface.drawLineHoriz(x + 2, (y + height) - 3, width - 4, colourBoxLeftNRight2); surface.drawLineVert((x + width) - 1, y, height, colourBoxLeftNRight); surface.drawLineVert((x + width) - 2, y + 1, height - 2, colourBoxLeftNRight); surface.drawLineVert((x + width) - 3, y + 2, height - 4, colourBoxLeftNRight2); surface.resetBounds(); } public void drawRoundedBox(int x, int y, int width, int height) { surface.drawBox(x, y, width, height, 0); surface.drawBoxEdge(x, y, width, height, colourRoundedBoxOut); surface.drawBoxEdge(x + 1, y + 1, width - 2, height - 2, colourRoundedBoxMid); surface.drawBoxEdge(x + 2, y + 2, width - 4, height - 4, colourRoundedBoxIn); surface.drawSprite(x, y, 2 + baseSpriteStart); surface.drawSprite((x + width) - 7, y, 3 + baseSpriteStart); surface.drawSprite(x, (y + height) - 7, 4 + baseSpriteStart); surface.drawSprite((x + width) - 7, (y + height) - 7, 5 + baseSpriteStart); } protected void drawPicture(int x, int y, int size) { surface.drawSprite(x, y, size); } protected void drawLineHoriz(int x, int y, int width) { surface.drawLineHoriz(x, y, width, 0xffffff); } protected void drawTextList(int control, int x, int y, int width, int height, int textSize, String listEntries[], int listEntryCount, int l1) { int displayedEntryCount = height / surface.textHeight(textSize); if (l1 > listEntryCount - displayedEntryCount) l1 = listEntryCount - displayedEntryCount; if (l1 < 0) l1 = 0; controlFlashText[control] = l1; if (displayedEntryCount < listEntryCount) { int cornerTopRight = (x + width) - 12; int cornerBottomLeft = ((height - 27) * displayedEntryCount) / listEntryCount; if (cornerBottomLeft < 6) cornerBottomLeft = 6; int j3 = ((height - 27 - cornerBottomLeft) * l1) / (listEntryCount - displayedEntryCount); if (mouseButtonDown == 1 && mouseX >= cornerTopRight && mouseX <= cornerTopRight + 12) { if (mouseY > y && mouseY < y + 12 && l1 > 0) l1--; if (mouseY > (y + height) - 12 && mouseY < y + height && l1 < listEntryCount - displayedEntryCount) l1++; controlFlashText[control] = l1; } if (mouseButtonDown == 1 && (mouseX >= cornerTopRight && mouseX <= cornerTopRight + 12 || mouseX >= cornerTopRight - 12 && mouseX <= cornerTopRight + 24 && controlListScrollbarHandleDragged[control])) { if (mouseY > y + 12 && mouseY < (y + height) - 12) { controlListScrollbarHandleDragged[control] = true; int l3 = mouseY - y - 12 - cornerBottomLeft / 2; l1 = (l3 * listEntryCount) / (height - 24); if (l1 > listEntryCount - displayedEntryCount) l1 = listEntryCount - displayedEntryCount; if (l1 < 0) l1 = 0; controlFlashText[control] = l1; } } else { controlListScrollbarHandleDragged[control] = false; } j3 = ((height - 27 - cornerBottomLeft) * l1) / (listEntryCount - displayedEntryCount); drawListContainer(x, y, width, height, j3, cornerBottomLeft); } int entryListStartY = height - displayedEntryCount * surface.textHeight(textSize); int y2 = y + (surface.textHeight(textSize) * 5) / 6 + entryListStartY / 2; for (int entry = l1; entry < listEntryCount; entry++) { drawstring(control, x + 2, y2, listEntries[entry], textSize); y2 += surface.textHeight(textSize) - textListEntryHeightMod; if (y2 >= y + height) return; } } protected void drawListContainer(int x, int y, int width, int height, int corner1, int corner2) { int x2 = (x + width) - 12; surface.drawBoxEdge(x2, y, 12, height, 0); surface.drawSprite(x2 + 1, y + 1, baseSpriteStart);// up arrow? surface.drawSprite(x2 + 1, (y + height) - 12, 1 + baseSpriteStart);// down arrow? surface.drawLineHoriz(x2, y + 13, 12, 0); surface.drawLineHoriz(x2, (y + height) - 13, 12, 0); surface.drawGradient(x2 + 1, y + 14, 11, height - 27, colourScrollbarTop, colourScrollbarBottom); surface.drawBox(x2 + 3, corner1 + y + 14, 7, corner2, colourScrollbarHandleMid); surface.drawLineVert(x2 + 2, corner1 + y + 14, corner2, colourScrollbarHandleLeft); surface.drawLineVert(x2 + 2 + 8, corner1 + y + 14, corner2, colourScrollbarHandleRight); } protected void drawOptionListHoriz(int control, int x, int y, int textSize, String listEntries[]) { int listTotalTextWidth = 0; int listEntryCount = listEntries.length; for (int idx = 0; idx < listEntryCount; idx++) { listTotalTextWidth += surface.textWidth(listEntries[idx], textSize); if (idx < listEntryCount - 1) listTotalTextWidth += surface.textWidth(" ", textSize); } int left = x - listTotalTextWidth / 2; int bottom = y + surface.textHeight(textSize) / 3; for (int idx = 0; idx < listEntryCount; idx++) { int colour; if (controlUseAlternativeColour[control]) colour = 0xffffff; else colour = 0; if (mouseX >= left && mouseX <= left + surface.textWidth(listEntries[idx], textSize) && mouseY <= bottom && mouseY > bottom - surface.textHeight(textSize)) { if (controlUseAlternativeColour[control]) colour = 0x808080; else colour = 0xffffff; if (mouseLastButtonDown == 1) { controlListEntryMouseButtonDown[control] = idx; controlClicked[control] = true; } } if (controlListEntryMouseButtonDown[control] == idx) if (controlUseAlternativeColour[control]) colour = 0xff0000; else colour = 0xc00000; surface.drawstring(listEntries[idx], left, bottom, textSize, colour); left += surface.textWidth(listEntries[idx] + " ", textSize); } } protected void drawOptionListVert(int control, int x, int y, int textSize, String listEntries[]) { int listEntryCount = listEntries.length; int listTotalTextHeightMid = y - (surface.textHeight(textSize) * (listEntryCount - 1)) / 2; for (int idx = 0; idx < listEntryCount; idx++) { int colour; if (controlUseAlternativeColour[control]) colour = 0xffffff; else colour = 0; int entryTextWidth = surface.textWidth(listEntries[idx], textSize); if (mouseX >= x - entryTextWidth / 2 && mouseX <= x + entryTextWidth / 2 && mouseY - 2 <= listTotalTextHeightMid && mouseY - 2 > listTotalTextHeightMid - surface.textHeight(textSize)) { if (controlUseAlternativeColour[control]) colour = 0x808080; else colour = 0xffffff; if (mouseLastButtonDown == 1) { controlListEntryMouseButtonDown[control] = idx; controlClicked[control] = true; } } if (controlListEntryMouseButtonDown[control] == idx) if (controlUseAlternativeColour[control]) colour = 0xff0000; else colour = 0xc00000; surface.drawstring(listEntries[idx], x - entryTextWidth / 2, listTotalTextHeightMid, textSize, colour); listTotalTextHeightMid += surface.textHeight(textSize); } } protected void drawTextListInteractive(int control, int x, int y, int width, int height, int textSize, String listEntries[], int listEntryCount, int l1) { int displayedEntryCount = height / surface.textHeight(textSize); if (displayedEntryCount < listEntryCount) { int right = (x + width) - 12; int l2 = ((height - 27) * displayedEntryCount) / listEntryCount; if (l2 < 6) l2 = 6; int j3 = ((height - 27 - l2) * l1) / (listEntryCount - displayedEntryCount); if (mouseButtonDown == 1 && mouseX >= right && mouseX <= right + 12) { if (mouseY > y && mouseY < y + 12 && l1 > 0) l1--; if (mouseY > (y + height) - 12 && mouseY < y + height && l1 < listEntryCount - displayedEntryCount) l1++; controlFlashText[control] = l1; } if (mouseButtonDown == 1 && (mouseX >= right && mouseX <= right + 12 || mouseX >= right - 12 && mouseX <= right + 24 && controlListScrollbarHandleDragged[control])) { if (mouseY > y + 12 && mouseY < (y + height) - 12) { controlListScrollbarHandleDragged[control] = true; int l3 = mouseY - y - 12 - l2 / 2; l1 = (l3 * listEntryCount) / (height - 24); if (l1 < 0) l1 = 0; if (l1 > listEntryCount - displayedEntryCount) l1 = listEntryCount - displayedEntryCount; controlFlashText[control] = l1; } } else { controlListScrollbarHandleDragged[control] = false; } j3 = ((height - 27 - l2) * l1) / (listEntryCount - displayedEntryCount); drawListContainer(x, y, width, height, j3, l2); } else { l1 = 0; controlFlashText[control] = 0; } controlListEntryMouseOver[control] = -1; int k2 = height - displayedEntryCount * surface.textHeight(textSize); int i3 = y + (surface.textHeight(textSize) * 5) / 6 + k2 / 2; for (int k3 = l1; k3 < listEntryCount; k3++) { int i4; if (controlUseAlternativeColour[control]) i4 = 0xffffff; else i4 = 0; if (mouseX >= x + 2 && mouseX <= x + 2 + surface.textWidth(listEntries[k3], textSize) && mouseY - 2 <= i3 && mouseY - 2 > i3 - surface.textHeight(textSize)) { if (controlUseAlternativeColour[control]) i4 = 0x808080; else i4 = 0xffffff; controlListEntryMouseOver[control] = k3; if (mouseLastButtonDown == 1) { controlListEntryMouseButtonDown[control] = k3; controlClicked[control] = true; } } if (controlListEntryMouseButtonDown[control] == k3 && aBoolean219) i4 = 0xff0000; surface.drawstring(listEntries[k3], x + 2, i3, textSize, i4); i3 += surface.textHeight(textSize); if (i3 >= y + height) return; } } public int addText(int x, int y, String text, int size, boolean flag) { controlType[controlCount] = 1; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlTextSize[controlCount] = size; controlUseAlternativeColour[controlCount] = flag; controlX[controlCount] = x; controlY[controlCount] = y; controlText[controlCount] = text; return controlCount++; } public int addButtonBackground(int x, int y, int width, int height) { controlType[controlCount] = 2; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlX[controlCount] = x - width / 2; controlY[controlCount] = y - height / 2; controlWidth[controlCount] = width; controlHeight[controlCount] = height; return controlCount++; } public int addBoxRounded(int x, int y, int width, int height) { controlType[controlCount] = 11; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlX[controlCount] = x - width / 2; controlY[controlCount] = y - height / 2; controlWidth[controlCount] = width; controlHeight[controlCount] = height; return controlCount++; } public int addSprite(int x, int y, int spriteId) { int imgWidth = surface.spriteWidth[spriteId]; int imgHeight = surface.spriteHeight[spriteId]; controlType[controlCount] = 12; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlX[controlCount] = x - imgWidth / 2; controlY[controlCount] = y - imgHeight / 2; controlWidth[controlCount] = imgWidth; controlHeight[controlCount] = imgHeight; controlTextSize[controlCount] = spriteId; return controlCount++; } public int addTextList(int x, int y, int width, int height, int size, int maxLength, boolean flag) { controlType[controlCount] = 4; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlX[controlCount] = x; controlY[controlCount] = y; controlWidth[controlCount] = width; controlHeight[controlCount] = height; controlUseAlternativeColour[controlCount] = flag; controlTextSize[controlCount] = size; controlInputMaxLen[controlCount] = maxLength; controlListEntryCount[controlCount] = 0; controlFlashText[controlCount] = 0; controlListEntries[controlCount] = new String[maxLength]; return controlCount++; } public int addTextListInput(int x, int y, int width, int height, int size, int maxLength, boolean flag, boolean flag1) { controlType[controlCount] = 5; controlShown[controlCount] = true; controlMaskText[controlCount] = flag; controlClicked[controlCount] = false; controlTextSize[controlCount] = size; controlUseAlternativeColour[controlCount] = flag1; controlX[controlCount] = x; controlY[controlCount] = y; controlWidth[controlCount] = width; controlHeight[controlCount] = height; controlInputMaxLen[controlCount] = maxLength; controlText[controlCount] = ""; return controlCount++; } public int addTextInput(int x, int y, int width, int height, int size, int maxLength, boolean flag, boolean flag1) { controlType[controlCount] = 6; controlShown[controlCount] = true; controlMaskText[controlCount] = flag; controlClicked[controlCount] = false; controlTextSize[controlCount] = size; controlUseAlternativeColour[controlCount] = flag1; controlX[controlCount] = x; controlY[controlCount] = y; controlWidth[controlCount] = width; controlHeight[controlCount] = height; controlInputMaxLen[controlCount] = maxLength; controlText[controlCount] = ""; return controlCount++; } public int addTextListInteractive(int x, int y, int width, int height, int textSize, int maxLength, boolean flag) { controlType[controlCount] = 9; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlTextSize[controlCount] = textSize; controlUseAlternativeColour[controlCount] = flag; controlX[controlCount] = x; controlY[controlCount] = y; controlWidth[controlCount] = width; controlHeight[controlCount] = height; controlInputMaxLen[controlCount] = maxLength; controlListEntries[controlCount] = new String[maxLength]; controlListEntryCount[controlCount] = 0; controlFlashText[controlCount] = 0; controlListEntryMouseButtonDown[controlCount] = -1; controlListEntryMouseOver[controlCount] = -1; return controlCount++; } public int addButton(int x, int y, int width, int height) { controlType[controlCount] = 10; controlShown[controlCount] = true; controlClicked[controlCount] = false; controlX[controlCount] = x - width / 2; controlY[controlCount] = y - height / 2; controlWidth[controlCount] = width; controlHeight[controlCount] = height; return controlCount++; } public int addLineHoriz(int x, int y, int width) { controlType[controlCount] = 3; controlShown[controlCount] = true; controlX[controlCount] = x; controlY[controlCount] = y; controlWidth[controlCount] = width; return controlCount++; } public int addOptionListHoriz(int x, int y, int textSize, int maxListCount, boolean useAltColour) { controlType[controlCount] = 7; controlShown[controlCount] = true; controlX[controlCount] = x; controlY[controlCount] = y; controlTextSize[controlCount] = textSize; controlListEntries[controlCount] = new String[maxListCount]; controlListEntryCount[controlCount] = 0; controlUseAlternativeColour[controlCount] = useAltColour; controlClicked[controlCount] = false; return controlCount++; } public int addOptionListVert(int x, int y, int textSize, int maxListCount, boolean useAltColour) { controlType[controlCount] = 8; controlShown[controlCount] = true; controlX[controlCount] = x; controlY[controlCount] = y; controlTextSize[controlCount] = textSize; controlListEntries[controlCount] = new String[maxListCount]; controlListEntryCount[controlCount] = 0; controlUseAlternativeColour[controlCount] = useAltColour; controlClicked[controlCount] = false; return controlCount++; } public int addCheckbox(int x, int y, int width, int height) { controlType[controlCount] = 14; controlShown[controlCount] = true; controlX[controlCount] = x; controlY[controlCount] = y; controlWidth[controlCount] = width; controlHeight[controlCount] = height; controlListEntryMouseButtonDown[controlCount] = 0; return controlCount++; } public void clearList(int control) { controlListEntryCount[control] = 0; } public void resetListProps(int control) { controlFlashText[control] = 0; controlListEntryMouseOver[control] = -1; } public void addListEntry(int control, int index, String text) { controlListEntries[control][index] = text; if (index + 1 > controlListEntryCount[control]) controlListEntryCount[control] = index + 1; } public void removeListEntry(int control, String text, boolean flag) { int j = controlListEntryCount[control]++; if (j >= controlInputMaxLen[control]) { j--; controlListEntryCount[control]--; for (int k = 0; k < j; k++) controlListEntries[control][k] = controlListEntries[control][k + 1]; } controlListEntries[control][j] = text; if (flag) controlFlashText[control] = 999999;// 0xf423f; } public void updateText(int control, String s) { controlText[control] = s; } public String getText(int control) { if (controlText[control] == null) return "null"; else return controlText[control]; } public void show(int control) { controlShown[control] = true; } public void hide(int control) { controlShown[control] = false; } public void setFocus(int control) { focusControlIndex = control; } public int getListEntryIndex(int control) { return controlListEntryMouseOver[control]; } }