void drawButton(entity me) { vector bOrigin, bSize; float save; me.focusable = !me.disabled; save = draw_alpha; if(me.disabled) draw_alpha *= me.disabledAlpha; if(me.src) { if(me.srcMulti) { bOrigin = '0 0 0'; bSize = '1 1 0'; if(me.disabled) draw_ButtonPicture(bOrigin, strcat(me.src, "_d", me.srcSuffix), bSize, me.colorD, 1); else if(me.forcePressed || me.pressed || me.clickTime > 0) draw_ButtonPicture(bOrigin, strcat(me.src, "_c", me.srcSuffix), bSize, me.colorC, 1); else if(me.focused) draw_ButtonPicture(bOrigin, strcat(me.src, "_f", me.srcSuffix), bSize, me.colorF, 1); else draw_ButtonPicture(bOrigin, strcat(me.src, "_n", me.srcSuffix), bSize, me.color, 1); } else { if(me.realFontSize_y == 0) { bOrigin = '0 0 0'; bSize = '1 1 0'; } else { bOrigin = eY * (0.5 * (1 - me.realFontSize_y)) + eX * (0.5 * (me.keepspaceLeft - me.realFontSize_x)); bSize = me.realFontSize; } if(me.disabled) draw_Picture(bOrigin, strcat(me.src, "_d", me.srcSuffix), bSize, me.colorD, 1); else if(me.forcePressed || me.pressed || me.clickTime > 0) draw_Picture(bOrigin, strcat(me.src, "_c", me.srcSuffix), bSize, me.colorC, 1); else if(me.focused) draw_Picture(bOrigin, strcat(me.src, "_f", me.srcSuffix), bSize, me.colorF, 1); else draw_Picture(bOrigin, strcat(me.src, "_n", me.srcSuffix), bSize, me.color, 1); } } if(me.src2) { bOrigin = me.keepspaceLeft * eX; bSize = eY + eX * (1 - me.keepspaceLeft); bOrigin += bSize * (0.5 - 0.5 * me.src2scale); bSize = bSize * me.src2scale; draw_Picture(bOrigin, me.src2, bSize, me.color2, me.alpha2); } draw_alpha = save; drawLabel(me); if(me.clickTime > 0 && me.clickTime <= frametime) { // keyboard click timer expired? Fire the event then. if not(me.disabled) if( me.leftClick ) me.onClick(me, me.onClickEntity); else me.onRightClick(me, me.onClickEntity); } me.clickTime -= frametime; }