xxxxxxxxxx
231
// paste the stuff
function setup(){
function buttonClick(){ // place in mouseReleased callback
pressed = false;
for (let i = 0; i < buttons.length; i++) {
if (
buttons[i][0] &&
mouseX > buttons[i][4] &&
mouseX < buttons[i][4] + buttons[i][6] &&
mouseY > buttons[i][5] &&
mouseY < buttons[i][5] + buttons[i][7] &&
!pressed
) {
buttons[i][13]();
pressed = true;
}
}
}
function drawButtons(){
// draw buttons
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][0]) {
let Hover =
mouseX > buttons[i][4] &&
mouseX < buttons[i][4] + buttons[i][6] &&
mouseY > buttons[i][5] &&
mouseY < buttons[i][5] + buttons[i][7];
strokeWeight(buttons[i][12]);
textAlign(buttons[i][14], buttons[i][15]);
if (!Hover) {
stroke(buttons[i][8]);
fill(buttons[i][9]);
rect(
buttons[i][4] + 0.5,
buttons[i][5] + 0.5,
buttons[i][6],
buttons[i][7]
);
noStroke();
fill(buttons[i][8]);
textSize(buttons[i][3]);
text(
buttons[i][2],
buttons[i][4] + 0.5 + buttons[i][16],
buttons[i][5] + 0.5 + buttons[i][16],
buttons[i][6] - buttons[i][16] * 2,
buttons[i][7] - buttons[i][16] * 2
);
} else if (Hover) {
stroke(buttons[i][10]);
fill(buttons[i][10]);
rect(
buttons[i][4] + 0.5,
buttons[i][5] + 0.5,
buttons[i][6],
buttons[i][7]
);
noStroke();
fill(buttons[i][11]);
textSize(buttons[i][3]);
text(
buttons[i][2],
buttons[i][4] + 0.5 + buttons[i][16],
buttons[i][5] + 0.5 + buttons[i][16],
buttons[i][6] - buttons[i][16] * 2,
buttons[i][7] - buttons[i][16] * 2
);
cursor(HAND);
}
}
}
}
}
let buttons = []; // first value in each table is the enabled value, 2nd is the button's name (NAMES SHOULD BE DIFFERENT)
// button functions
function newButton(
name,
displayText,
textsize,
X,
Y,
W,
H,
Col1,
Col2,
ColP1,
ColP2,
bWidth,
func,
alx,
aly,
pad) {
// Col inputs should be arrays or color()s
buttons[buttons.length] = [];
buttons[buttons.length - 1][0] = false;
buttons[buttons.length - 1][1] = name;
buttons[buttons.length - 1][2] = displayText ?? "";
buttons[buttons.length - 1][3] = textsize ?? 10;
buttons[buttons.length - 1][4] = X ?? 50;
buttons[buttons.length - 1][5] = Y ?? 50;
buttons[buttons.length - 1][6] = W ?? 50;
buttons[buttons.length - 1][7] = H ?? 50;
buttons[buttons.length - 1][8] = Col1 ?? color(255);
buttons[buttons.length - 1][9] = Col2 ?? color(0);
buttons[buttons.length - 1][10] = ColP1 ?? color(255);
buttons[buttons.length - 1][11] = ColP2 ?? color(0);
buttons[buttons.length - 1][12] = bWidth ?? 1;
buttons[buttons.length - 1][13] = func ?? function () {};
buttons[buttons.length - 1][14] = alx ?? CENTER;
buttons[buttons.length - 1][15] = aly ?? CENTER;
buttons[buttons.length - 1][16] = pad ?? 0;
}
function removeButton(name) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
for (let a = i; a < buttons.length; a++) {
buttons[a] = buttons[a + 1];
}
buttons.length = buttons.length - 1;
break;
}
}
}
function setButtonAlign(name, alx, aly) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][14] = aly;
buttons[i][15] = alx;
}
}
}
function toggleButton(name) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][0] = !buttons[i][0];
}
}
}
function setButtonEnabled(name, value) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][0] = value;
}
}
}
function setButtonPos(name, X, Y) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][4] = X;
buttons[i][5] = Y;
}
}
}
function setButtonSize(name, W, H) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][6] = W;
buttons[i][7] = H;
}
}
}
function setButtonColors(name, Col1, Col2, ColP1, ColP2) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][8] = Col1;
buttons[i][9] = Col2;
buttons[i][10] = ColP1;
buttons[i][11] = ColP2;
}
}
}
function setButtonText(name, Text, Size) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][2] = Text;
buttons[i][3] = Size ?? buttons[i][3];
}
}
}
function setButtonBorder(name, b) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][12] = b;
}
}
}
function setButtonPadding(name, p) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][16] = p;
}
}
}
function setButtonFunction(name, func) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][13] = func;
}
}
}
function runButton(name) {
for (let i = 0; i < buttons.length; i++) {
if (buttons[i][1] == name) {
buttons[i][13]();
}
}
}
function clearButtons() {
buttons = [];
}
export default {buttons, newButton, removeButton, setButtonAlign, toggleButton, setButtonEnabled, setButtonPos, setButtonSize,setButtonColors, setButtonText, setButtonBorder, setButtonPadding, setButtonFunction, runButton, clearButtons, buttonClick, drawButtons}