diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java index 66449d11bf9896836dc33b33f3b0ff7c543bdd8e..c11823516432d9da826a701934b890e00de503cb 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java @@ -3,6 +3,7 @@ package cz.nic.tablexia.screen.gamemenu; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.scenes.scene2d.Touchable; +import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.Image; import net.engio.mbassy.listener.Handler; @@ -15,6 +16,7 @@ import cz.nic.tablexia.bus.ApplicationBus; import cz.nic.tablexia.game.GameDefinition; import cz.nic.tablexia.model.User; import cz.nic.tablexia.screen.AbstractTablexiaScreen; +import cz.nic.tablexia.screen.gamemenu.actions.ScrollHomeAction; import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent; import cz.nic.tablexia.screen.gamemenu.pages.GameMenuPage; import cz.nic.tablexia.screen.gamemenu.pages.OfficeMenuPage; @@ -99,13 +101,19 @@ public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> { vp.scrollToPage(Integer.valueOf(screenState.get(GameMenuScreen.SCREEN_STATE_PAGE_NUMBER)), false); } - + // show intro and disable it afterwards if (getSelectedUser().isIntro()) { - // TODO disable touch - // TODO game intro - // TODO enable touch - getSelectedUser().setIntro(false); - User.updateUser(getSelectedUser()); + vp.setTouchable(Touchable.disabled); + vp.scrollToPage(vp.getChildren().size - 1, false); + float initScroll = vp.getScrollX(); + vp.addAction(Actions.sequence(ScrollHomeAction.createInstace(), Actions.run(new Runnable() { + @Override + public void run() { + vp.setTouchable(Touchable.enabled); + getSelectedUser().setIntro(false); + User.updateUser(getSelectedUser()); + } + }))); } } diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/actions/ScrollHomeAction.java b/core/src/cz/nic/tablexia/screen/gamemenu/actions/ScrollHomeAction.java new file mode 100644 index 0000000000000000000000000000000000000000..ad514644bdc58359660eebad171b70170b6e122e --- /dev/null +++ b/core/src/cz/nic/tablexia/screen/gamemenu/actions/ScrollHomeAction.java @@ -0,0 +1,36 @@ +package cz.nic.tablexia.screen.gamemenu.actions; + +import com.badlogic.gdx.scenes.scene2d.actions.Actions; +import com.badlogic.gdx.scenes.scene2d.actions.TemporalAction; + +import cz.nic.tablexia.util.ui.ViewPager; + +/** + * Created by lhoracek on 11/4/15. + */ +public class ScrollHomeAction extends TemporalAction { + private static final float DURATION = 3; + private float startX; + + private ViewPager getTargetPager(){ + return (ViewPager) target; + } + + protected void begin() { + startX = getTargetPager().getScrollX(); + } + + protected void update(float percent) { + getTargetPager().setScrollX(startX * percent); + } + + public void reset() { + super.reset(); + } + + public static ScrollHomeAction createInstace(){ + ScrollHomeAction action = Actions.action(ScrollHomeAction.class); + action.setDuration(DURATION); + return action; + } +} diff --git a/core/src/cz/nic/tablexia/util/ui/ViewPager.java b/core/src/cz/nic/tablexia/util/ui/ViewPager.java index 2ab1e19387a4825529c82f6ba927a5a24ff2b3a6..c65d43d55adfd58e7824dd52cee4141b2e03e93a 100644 --- a/core/src/cz/nic/tablexia/util/ui/ViewPager.java +++ b/core/src/cz/nic/tablexia/util/ui/ViewPager.java @@ -82,7 +82,7 @@ public class ViewPager extends ScrollPane { public void act(float delta) { if (wasPanDragFling && !isPanning() && !isDragging() && !isFlinging()) { wasPanDragFling = false; - scrollToPage(); + smoothScrollToCurrentPage(); } else { if (isPanning() || isDragging() || isFlinging()) { wasPanDragFling = true; @@ -173,7 +173,7 @@ public class ViewPager extends ScrollPane { } } - private void scrollToPage() { + private void smoothScrollToCurrentPage() { final float width = getWidth(); final float scrollX = getScrollX(); final float maxX = getMaxX();