Skip to content
Snippets Groups Projects
Commit 1089b274 authored by Luboš Horáček's avatar Luboš Horáček
Browse files

#11 Scroll listeners

parent 4d3dd157
No related branches found
No related tags found
No related merge requests found
......@@ -6,12 +6,14 @@ import com.badlogic.gdx.graphics.g2d.Batch;
import cz.nic.tablexia.game.GameDefinition;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.gamemenu.GameMenuAssets;
import cz.nic.tablexia.util.Log;
import cz.nic.tablexia.util.ui.ViewPager;
/**
* Representing one page in ViewPager with specific game
* Created by lhoracek on 3/4/15.
*/
public class GameMenuPage extends MenuPage {
public class GameMenuPage extends MenuPage implements ViewPager.ScrollListener {
private GameDefinition game;
public GameMenuPage(AbstractTablexiaScreen screen, GameDefinition game) {
......@@ -21,8 +23,6 @@ public class GameMenuPage extends MenuPage {
@Override
public void draw(Batch batch, float parentAlpha) {
// leave blending enabled for transparent images
// batch.disableBlending();
batch.draw(getScreen().getTexture(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.BACK)), getX(), getY(), getWidth(), getHeight());
batch.draw(getScreen().getTexture(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.MID)), getX(), getY(), getWidth(), getHeight());
batch.draw(getScreen().getTexture(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.FORE)), getX(), getY(), getWidth(), getHeight());
......@@ -37,7 +37,16 @@ public class GameMenuPage extends MenuPage {
batch.draw(title, getX() + titleX, getY() + titleY - titleHeight, titleWidth, titleHeight);
//batch.draw(getScreen().getTexture(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.FORE)), getX(), getY(), getWidth(), getHeight());
// batch.enableBlending();
}
@Override
public void onScroll(float offset) {
Log.info(((Object) this).getClass().getName(), "Scroll " + game.name() + ": " + offset);
}
@Override
public void onScrolledToPage() {
Log.info(((Object) this).getClass().getName(), "Scrolled to page: " + game.name());
}
}
......@@ -8,6 +8,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.utils.Array;
import cz.nic.tablexia.util.Log;
/**
* Created by lhoracek on 3/4/15.
*/
......@@ -79,6 +81,47 @@ public class ViewPager extends ScrollPane {
}
}
@Override
protected void scrollX(float pixelsX) {
super.scrollX(pixelsX);
final float width = getWidth();
final float scrollX = pixelsX;
final float maxX = getMaxX();
if (scrollX >= maxX || scrollX <= 0) return;
Array<Actor> pages = content.getChildren();
float pageX = 0;
float pageWidth = 0;
if (pages.size > 0) {
for (Actor a : pages) {
pageX = a.getX();
pageWidth = a.getWidth();
if (scrollX > pageX && scrollX < (pageX + pageWidth)) {
if (a instanceof ScrollListener) {
ScrollListener sl = (ScrollListener) a;
sl.onScroll(-(scrollX - pageX));
}
} else if (scrollX < (pageX) && (scrollX + pageWidth) > pageX) {
if (a instanceof ScrollListener) {
ScrollListener sl = (ScrollListener) a;
sl.onScroll(pageX - scrollX);
}
}
if(pageX == scrollX){
if (a instanceof ScrollListener) {
ScrollListener sl = (ScrollListener) a;
sl.onScrolledToPage();
}
}
}
}
Log.info(((Object) this).getClass().getName(), "ScrollX: " + pixelsX);
}
@Override
@Deprecated
public void setWidget(Actor widget) {
......@@ -127,4 +170,10 @@ public class ViewPager extends ScrollPane {
setScrollX(MathUtils.clamp(pageX - (width - pageWidth) / 2, 0, maxX));
}
}
public static interface ScrollListener {
public void onScroll(float offset);
public void onScrolledToPage();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment