From 95e95e689305265aba816a6035d1414c6a09a40a Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Mon, 15 Jan 2024 12:41:56 +0100 Subject: [PATCH] Fix UI handling --- game/systems/s_input.c | 10 +++++----- game/systems/s_ui.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/game/systems/s_input.c b/game/systems/s_input.c index 396dd89..4a5b292 100644 --- a/game/systems/s_input.c +++ b/game/systems/s_input.c @@ -174,8 +174,7 @@ void updatePlayerInput() { if (IsKeyDown(KEY_E)) game->camera.rotation++; if (IsKeyReleased(input->mapping.backBtn)) { - i32 selectedCount = ecs_query_entity_count(input->queries.selected); - if (selectedCount == 0) { + if (input->state == INPUT_NONE) { setScreen(game, SCREEN_PAUSE_MENU); } else { ecs_remove_all(ECS, Selected); @@ -185,12 +184,10 @@ void updatePlayerInput() { } } - if (!input->canUseMouse) - return; // https://gamedev.stackexchange.com/questions/9330/zoom-to-cursor-calculation float wheel = GetMouseWheelMove(); - if (wheel != 0.0f) { + if (wheel != 0.0f && input->canUseMouse) { const float zoomIncrement = 0.125f; f32 oldZoom = game->camera.zoom; f32 newZoom = oldZoom + wheel * zoomIncrement; @@ -226,6 +223,9 @@ void updatePlayerInput() { mapHeight - height + game->map.tileHeight + height * 0.5f); } + if (!input->canUseMouse) + return; + BzTileMap *map = &game->map; diff --git a/game/systems/s_ui.c b/game/systems/s_ui.c index 5967fc1..df3757d 100644 --- a/game/systems/s_ui.c +++ b/game/systems/s_ui.c @@ -48,12 +48,7 @@ void drawGameUI(Game *game, f32 dt) { uiGameResCount(1, 10, popRec, tileset->tiles); bzUIPopParent(UI); - BzUINode *buildMenu = bzUINodeMake(UI, bzUIGetUniqueKey(UI), &(BzUINodeDesc) { - .semanticSize[BZ_UI_AXIS_X] = {BZ_UI_SIZE_AS_PARENT}, - .semanticSize[BZ_UI_AXIS_Y] = {BZ_UI_SIZE_CHILD_MAX}, - .margin[BZ_UI_AXIS_Y * 2] = 5.0f * uiGetScale(), - }); - bzUIPushParent(UI, buildMenu); + InputState *input = ecs_singleton_get_mut(ECS, InputState); const BuildingType buildingOrder[] = { @@ -78,9 +73,16 @@ void drawGameUI(Game *game, f32 dt) { }; i32 numBuildings = sizeof(buildingOrder) / sizeof(*buildingOrder); + BzUINode *menu = NULL; switch (input->state) { case INPUT_NONE: case INPUT_BUILDING: + menu = bzUINodeMake(UI, bzUIGetUniqueKey(UI), &(BzUINodeDesc) { + .semanticSize[BZ_UI_AXIS_X] = {BZ_UI_SIZE_AS_PARENT}, + .semanticSize[BZ_UI_AXIS_Y] = {BZ_UI_SIZE_CHILD_MAX}, + .margin[BZ_UI_AXIS_Y * 2] = 5.0f * uiGetScale(), + }); + bzUIPushParent(UI, menu); bzUISetParentLayout(UI, (BzUILayout) { .type = BZ_UI_LAYOUT_FLEX_BOX, .flags = BZ_UI_FLEX_DIR_ROW | BZ_UI_FLEX_ALIGN_CENTER | BZ_UI_FLEX_JUSTIFY_START @@ -111,9 +113,7 @@ void drawGameUI(Game *game, f32 dt) { } - bzUISetDebugMode(UI, true); bzUIEnd(UI); - bzUISetDebugMode(UI, false); } void drawPauseUI(Game *game, f32 dt) {