package com.tacoid.pweek.actors; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Button; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.tacoid.pweek.IGameLoginListener; import com.tacoid.pweek.IGameService; import com.tacoid.pweek.Pweek; import com.tacoid.pweek.SoundPlayer; import com.tacoid.pweek.IGameService.LeaderboardType; import com.tacoid.pweek.SoundPlayer.SoundType; public class GooglePlayActor extends Group implements IGameLoginListener { public class AchievementButtonActor extends Button { public AchievementButtonActor(TextureRegion regionUp, TextureRegion regionDown, TextureRegion regionChecked) { super(new TextureRegionDrawable(regionUp), new TextureRegionDrawable(regionDown), new TextureRegionDrawable(regionChecked)); this.addListener(new com.badlogic.gdx.scenes.scene2d.utils.ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { SoundPlayer.getInstance().playSound(SoundType.TOUCH_MENU, 0.5f, true); Pweek.getInstance().getGameService().showAchievements(); } }); } } public class LeaderboardButtonActor extends Button { private LeaderboardButtonActor(final LeaderboardType type, TextureRegion regionUp, TextureRegion regionDown, TextureRegion regionChecked) { super(new TextureRegionDrawable(regionUp), new TextureRegionDrawable(regionDown), new TextureRegionDrawable(regionChecked)); this.addListener(new com.badlogic.gdx.scenes.scene2d.utils.ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { SoundPlayer.getInstance().playSound(SoundType.TOUCH_MENU, 0.5f, true); Pweek.getInstance().getGameService().showLeaderboard(type); } }); } } public class LogoutButtonActor extends Button { private LogoutButtonActor(TextureRegion regionUp, TextureRegion regionDown, TextureRegion regionChecked) { super(new TextureRegionDrawable(regionUp), new TextureRegionDrawable(regionDown), new TextureRegionDrawable(regionChecked)); this.addListener(new com.badlogic.gdx.scenes.scene2d.utils.ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { SoundPlayer.getInstance().playSound(SoundType.TOUCH_MENU, 0.5f, true); Pweek.getInstance().getGameService().logout(); } }); } } private final IGameService gs; private final LeaderboardType type; private final TextureAtlas atlasButtons; private final TextureAtlas atlasGoogle; private boolean isSignedIn; public GooglePlayActor(IGameService gs, LeaderboardType type, TextureAtlas atlasButtons, TextureAtlas atlasGoogle) { this.gs = gs; this.type = type; this.atlasButtons = atlasButtons; this.atlasGoogle = atlasGoogle; this.isSignedIn = gs.getSignedIn(); if (isSignedIn) { login(); } else { logout(); } } @Override public void act(float arg0) { super.act(arg0); boolean cur = gs.getSignedIn(); if (isSignedIn && !cur) { logout(); } else if (!isSignedIn && cur) { login(); } isSignedIn = cur; } @Override public void login() { clear(); if (type == LeaderboardType.ALL) { TextureRegion onRegionA = new TextureRegion(atlasButtons.findRegion("achievement")); addActor(new AchievementButtonActor(onRegionA, onRegionA, onRegionA)); } TextureRegion onRegionL = new TextureRegion(atlasButtons.findRegion("leaderboard")); LeaderboardButtonActor l = new LeaderboardButtonActor(type, onRegionL, onRegionL, onRegionL); if (type == LeaderboardType.ALL) { l.setX(90); } if (type == LeaderboardType.ALL) { TextureRegion onRegionLogout = new TextureRegion(atlasButtons.findRegion("logout_button")); LogoutButtonActor logoutActor = new LogoutButtonActor(onRegionLogout, onRegionLogout, onRegionLogout); logoutActor.setX(180); addActor(logoutActor); } addActor(l); } @Override public void logout() { clear(); addActor(SignInButton.create(gs, atlasGoogle, false, type != LeaderboardType.ALL)); } }