Files
PixelDefense/game/ui_widgets.c

92 lines
3.2 KiB
C

#include "ui_widgets.h"
#include "game_state.h"
f32 uiGetScale() {
return GetScreenHeight() / 720.0f;
}
Font getFont() {
static const Game *game = NULL;
if (!game) {
game = ecs_singleton_get(ECS, Game);
}
return game->font;
}
void uiPushDivParentPercentage(f32 xPercent, f32 yPercent) {
bzUIPushDiv(UI, (BzUISize) {
.kind = BZ_UI_SIZE_PARENT_PERCENT,
.value = xPercent,
}, (BzUISize) {
.kind = BZ_UI_SIZE_PARENT_PERCENT,
.value = yPercent
});
}
void uiBaseLabel(const char *txt, Font font, f32 scl) {
bzUINodeMake(UI, bzUIKeyFromString(txt),
&(BzUINodeDesc) {
.flags = BZ_UI_DRAW_TEXT | BZ_UI_DRAW_TEXT_SHADOW | BZ_UI_ALIGN_CENTER,
.semanticSize[BZ_UI_AXIS_X] = {
.kind = BZ_UI_SIZE_FIT,
},
.semanticSize[BZ_UI_AXIS_Y] = {
.kind = BZ_UI_SIZE_FIT
},
.string = txt,
.padding = {5, 5, 5, 5},
.style = {
.font = font,
.fontSpacing = 2 * uiGetScale() * scl,
.fontSize = 62 * uiGetScale() * scl,
.shadowOffset[BZ_UI_AXIS_X] = 2 * uiGetScale() * scl,
.shadowOffset[BZ_UI_AXIS_Y] = 2 * uiGetScale() * scl,
.textColor = WHITE,
.textHoverColor = WHITE,
.textActiveColor = WHITE,
.textShadowColor = BLACK,
.textShadowHoverColor = BLACK,
.textShadowActiveColor = BLACK,
}
});
}
bool uiBaseTextButton(const char *txt, Font font, f32 scl) {
BzUINode *node = bzUINodeMake(UI, bzUIKeyFromString(txt),
&(BzUINodeDesc) {
.flags = BZ_UI_DRAW_TEXT | BZ_UI_DRAW_TEXT_SHADOW | BZ_UI_ALIGN_CENTER,
.semanticSize[BZ_UI_AXIS_X] = {
.kind = BZ_UI_SIZE_FIT,
},
.semanticSize[BZ_UI_AXIS_Y] = {
.kind = BZ_UI_SIZE_FIT
},
.string = txt,
.padding = {0, 0, 0, 0},
.margin = {5, 5, 5, 5},
.style = {
.font = font,
.fontSpacing = 2 * uiGetScale() * scl,
.fontSize = 62 * uiGetScale() * scl,
.shadowOffset[BZ_UI_AXIS_X] = 2 * uiGetScale() * scl,
.shadowOffset[BZ_UI_AXIS_Y] = 2 * uiGetScale() * scl,
.textColor = WHITE,
.textHoverColor = GRAY,
.textActiveColor = YELLOW,
.textShadowColor = BLACK,
.textShadowHoverColor = BLACK,
.textShadowActiveColor = BLACK,
}
});
return bzUIGetInteraction(UI, node).clicked;
}
void uiMainMenuLabel(const char *txt) {
uiBaseLabel(txt, getFont(), 1.8f);
}
bool uiMainMenuButton(const char *txt) {
return uiBaseTextButton(txt, getFont(), 1.0f);
}