From f7d1a76f223b850067dea13d46691dca97e3fd7e Mon Sep 17 00:00:00 2001 From: Lance Ewing Date: Wed, 3 Apr 2024 18:21:08 +0100 Subject: [PATCH] Implemented dynamic rendering of pagination arrows based on current page number. --- .../main/java/com/agifans/agile/HomeScreen.java | 9 +++++++++ .../com/agifans/agile/ui/PagedScrollPane.java | 9 +++++++++ .../com/agifans/agile/ui/PaginationWidget.java | 16 ++++++++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/agifans/agile/HomeScreen.java b/core/src/main/java/com/agifans/agile/HomeScreen.java index cb3a99a..fd6f607 100644 --- a/core/src/main/java/com/agifans/agile/HomeScreen.java +++ b/core/src/main/java/com/agifans/agile/HomeScreen.java @@ -937,6 +937,15 @@ private void showGamePage(int gameIndex, boolean skipScroll) { } } + public PagedScrollPane getPagedScrollPane() { + Stage currentStage = viewportManager.isPortrait()? portraitStage : landscapeStage; + if (currentStage.getActors().notEmpty()) { + return (PagedScrollPane)((Table)currentStage.getActors().get(0)).getChild(0); + } else { + return null; + } + } + /** * An AnimatedPieMenu (i.e. radial menu) for interacting with games on the home screen. */ diff --git a/core/src/main/java/com/agifans/agile/ui/PagedScrollPane.java b/core/src/main/java/com/agifans/agile/ui/PagedScrollPane.java index 1a10a69..f296667 100644 --- a/core/src/main/java/com/agifans/agile/ui/PagedScrollPane.java +++ b/core/src/main/java/com/agifans/agile/ui/PagedScrollPane.java @@ -107,6 +107,15 @@ public void reset() { public int getNumOfPages() { return content.getChildren().size; } + + public int getCurrentPageNumber() { + int pageNumber = 0; + if (content.getChildren().notEmpty()) { + int pageWidth = (int)content.getChild(0).getWidth(); + pageNumber = Math.round(getScrollX() / pageWidth); + } + return pageNumber; + } private void scrollToPage() { final float width = getWidth(); diff --git a/core/src/main/java/com/agifans/agile/ui/PaginationWidget.java b/core/src/main/java/com/agifans/agile/ui/PaginationWidget.java index 3fa0158..0714634 100644 --- a/core/src/main/java/com/agifans/agile/ui/PaginationWidget.java +++ b/core/src/main/java/com/agifans/agile/ui/PaginationWidget.java @@ -60,8 +60,20 @@ public void draw(Batch batch, float parentAlpha) { pixmap.setColor(1.0f, 1.0f, 1.0f, 0.10f); pixmap.fill(); - pixmap.drawPixmap(prevIconPixmap, 0, 5); - pixmap.drawPixmap(nextIconPixmap, width - ICON_SIZE, 5); + + PagedScrollPane pagedScrollPane = homeScreen.getPagedScrollPane(); + if (pagedScrollPane != null) { + int numOfPages = pagedScrollPane.getNumOfPages(); + if (numOfPages > 0) { + int currentPage = pagedScrollPane.getCurrentPageNumber(); + if (currentPage > 0) { + pixmap.drawPixmap(prevIconPixmap, 0, 5); + } + if (currentPage < (numOfPages - 1)) { + pixmap.drawPixmap(nextIconPixmap, width - ICON_SIZE, 5); + } + } + } texture.draw(pixmap, 0, 0);