Fix UI handling
This commit is contained in:
@@ -174,8 +174,7 @@ void updatePlayerInput() {
|
|||||||
if (IsKeyDown(KEY_E)) game->camera.rotation++;
|
if (IsKeyDown(KEY_E)) game->camera.rotation++;
|
||||||
|
|
||||||
if (IsKeyReleased(input->mapping.backBtn)) {
|
if (IsKeyReleased(input->mapping.backBtn)) {
|
||||||
i32 selectedCount = ecs_query_entity_count(input->queries.selected);
|
if (input->state == INPUT_NONE) {
|
||||||
if (selectedCount == 0) {
|
|
||||||
setScreen(game, SCREEN_PAUSE_MENU);
|
setScreen(game, SCREEN_PAUSE_MENU);
|
||||||
} else {
|
} else {
|
||||||
ecs_remove_all(ECS, Selected);
|
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
|
// https://gamedev.stackexchange.com/questions/9330/zoom-to-cursor-calculation
|
||||||
float wheel = GetMouseWheelMove();
|
float wheel = GetMouseWheelMove();
|
||||||
if (wheel != 0.0f) {
|
if (wheel != 0.0f && input->canUseMouse) {
|
||||||
const float zoomIncrement = 0.125f;
|
const float zoomIncrement = 0.125f;
|
||||||
f32 oldZoom = game->camera.zoom;
|
f32 oldZoom = game->camera.zoom;
|
||||||
f32 newZoom = oldZoom + wheel * zoomIncrement;
|
f32 newZoom = oldZoom + wheel * zoomIncrement;
|
||||||
@@ -226,6 +223,9 @@ void updatePlayerInput() {
|
|||||||
mapHeight - height + game->map.tileHeight + height * 0.5f);
|
mapHeight - height + game->map.tileHeight + height * 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!input->canUseMouse)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
BzTileMap *map = &game->map;
|
BzTileMap *map = &game->map;
|
||||||
|
|
||||||
|
|||||||
@@ -48,12 +48,7 @@ void drawGameUI(Game *game, f32 dt) {
|
|||||||
uiGameResCount(1, 10, popRec, tileset->tiles);
|
uiGameResCount(1, 10, popRec, tileset->tiles);
|
||||||
bzUIPopParent(UI);
|
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);
|
InputState *input = ecs_singleton_get_mut(ECS, InputState);
|
||||||
|
|
||||||
const BuildingType buildingOrder[] = {
|
const BuildingType buildingOrder[] = {
|
||||||
@@ -78,9 +73,16 @@ void drawGameUI(Game *game, f32 dt) {
|
|||||||
};
|
};
|
||||||
i32 numBuildings = sizeof(buildingOrder) / sizeof(*buildingOrder);
|
i32 numBuildings = sizeof(buildingOrder) / sizeof(*buildingOrder);
|
||||||
|
|
||||||
|
BzUINode *menu = NULL;
|
||||||
switch (input->state) {
|
switch (input->state) {
|
||||||
case INPUT_NONE:
|
case INPUT_NONE:
|
||||||
case INPUT_BUILDING:
|
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) {
|
bzUISetParentLayout(UI, (BzUILayout) {
|
||||||
.type = BZ_UI_LAYOUT_FLEX_BOX,
|
.type = BZ_UI_LAYOUT_FLEX_BOX,
|
||||||
.flags = BZ_UI_FLEX_DIR_ROW | BZ_UI_FLEX_ALIGN_CENTER | BZ_UI_FLEX_JUSTIFY_START
|
.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);
|
bzUIEnd(UI);
|
||||||
bzUISetDebugMode(UI, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawPauseUI(Game *game, f32 dt) {
|
void drawPauseUI(Game *game, f32 dt) {
|
||||||
|
|||||||
Reference in New Issue
Block a user