/* * Copyright (c) 2012. HappyDroids LLC, All rights reserved. */ package com.happydroids.droidtowers.scenes; import aurelienribon.tweenengine.Tween; import aurelienribon.tweenengine.TweenEquations; import com.badlogic.gdx.Application; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.happydroids.HappyDroidConsts; import com.happydroids.droidtowers.DebugUtils; import com.happydroids.droidtowers.TowerConsts; import com.happydroids.droidtowers.gamestate.server.TowerGameService; import com.happydroids.droidtowers.gui.FontManager; import com.happydroids.droidtowers.gui.VibrateClickListener; import com.happydroids.droidtowers.gui.WidgetAccessor; import com.happydroids.droidtowers.gui.dialogs.ReviewDroidTowersPrompt; import com.happydroids.droidtowers.platform.Display; import com.happydroids.droidtowers.scenes.components.MainMenuButtonPanel; import com.happydroids.droidtowers.tween.TweenSystem; import com.happydroids.platform.Platform; import com.happydroids.security.SecurePreferences; import com.happydroids.server.HappyDroidService; import static com.happydroids.droidtowers.TowerAssetManager.preloadFinished; import static com.happydroids.droidtowers.TowerAssetManager.textureAtlas; import static com.happydroids.droidtowers.gui.dialogs.ReviewDroidTowersPrompt.RATING_TIMES_SINCE_PROMPTED; public class MainMenuScene extends SplashScene { private static final String TAG = MainMenuScene.class.getSimpleName(); public static final int BUTTON_WIDTH = Display.devicePixel(280); public static final int BUTTON_SPACING = Display.devicePixel(16); private boolean builtOutMenu; @Override public void create(Object... args) { super.create(args); Label versionLabel = FontManager.Default .makeLabel(String.format("v%s (%s, %s)", HappyDroidConsts.VERSION, HappyDroidConsts.GIT_SHA .substring(0, 8), HappyDroidService .getDeviceOSMarketName())); versionLabel.setColor(Color.LIGHT_GRAY); versionLabel.setX(getStage().getWidth() - versionLabel.getWidth() - 5); versionLabel.setY(getStage().getHeight() - versionLabel.getHeight() - 5); addActor(versionLabel); } @Override public void pause() { } @Override public void resume() { } @Override public void render(float deltaTime) { super.render(deltaTime); if (!builtOutMenu && preloadFinished()) { builtOutMenu = true; buildMenuComponents(textureAtlas("hud/menus.txt")); SecurePreferences preferences = TowerGameService.instance().getPreferences(); if (!preferences.getBoolean(ReviewDroidTowersPrompt.RATING_ADDED, false) && !preferences.getBoolean(ReviewDroidTowersPrompt.RATING_NEVER_ASK_AGAIN, false)) { int timesSincePrompt = preferences.incrementInt(RATING_TIMES_SINCE_PROMPTED); preferences.flush(); if (timesSincePrompt >= 3 && !Gdx.app.getType().equals(Application.ApplicationType.Desktop)) { new ReviewDroidTowersPrompt(getStage()).show(); } } if (Display.isInCompatibilityMode()) { if (!preferences.getBoolean("ANDROID_WARNED_ABOUT_DISPLAY_MODE", false)) { preferences.putBoolean("ANDROID_WARNED_ABOUT_DISPLAY_MODE", true); Platform.getDialogOpener().showAlert("Compatibility Mode", "Hello,\n\nWe're sorry but this game is designed for a device with a higher resolution screen. " + "It is impossible for us to restrict these devices from the market, so we have " + "designed a compatability mode as a work around.\n\nYou can continue to play the game, " + "but please understand your experience will be degraded. Most commonly the text will be rather difficult to read.\n\n" + "Thank you,\nDroid Towers Team"); } } // DebugUtils.loadGameByFilename("d955373bf7864c3a92dbfa0410f7ddf5.json"); DebugUtils.loadFirstGameFound(); // DebugUtils.createNonSavableGame(false); // DebugUtils.loadGameFromCloud(41); // new GridObjectDesigner(getStage()).show(); } } private void buildMenuComponents(final TextureAtlas menuButtonAtlas) { if (progressPanel != null) { progressPanel.remove(); } addActor(makeLibGDXLogo(menuButtonAtlas)); addActor(makeHappyDroidsLogo(menuButtonAtlas)); if (!Platform.getPurchaseManager().hasPurchasedUnlimitedVersion()) { makeUpgradeToUnlimitedButton(menuButtonAtlas); } MainMenuButtonPanel menuButtonPanel = new MainMenuButtonPanel(); menuButtonPanel.pack(); menuButtonPanel.setY(droidTowersLogo.getY() - menuButtonPanel.getHeight()); menuButtonPanel.setX(-droidTowersLogo.getImageWidth()); addActor(menuButtonPanel); Tween.to(menuButtonPanel, WidgetAccessor.POSITION, CAMERA_PAN_DOWN_DURATION) .target(50 + (45 * (droidTowersLogo.getImageWidth() / droidTowersLogo.getWidth())), menuButtonPanel.getY()) .ease(TweenEquations.easeInOutExpo) .start(TweenSystem.manager()); } private void makeUpgradeToUnlimitedButton(TextureAtlas buttonAtlas) { Image upgradeToUnlimited = new Image(buttonAtlas.findRegion("upgrade-to-unlimited")); upgradeToUnlimited.pack(); upgradeToUnlimited.setY(getStage().getHeight() / 2 - (upgradeToUnlimited.getImageHeight() / 2)); upgradeToUnlimited.setX(getStage().getWidth() - (upgradeToUnlimited.getWidth() + Display.devicePixel(50))); upgradeToUnlimited.setOriginX(upgradeToUnlimited.getWidth() / 2); upgradeToUnlimited.setOriginY(upgradeToUnlimited.getHeight() / 2); addActor(upgradeToUnlimited); Tween.to(upgradeToUnlimited, WidgetAccessor.SCALE, 2000) .target(0.75f, 0.75f) .delay(1.5f) .repeatYoyo(Tween.INFINITY, 50) .ease(TweenEquations.easeInElastic) .start(TweenSystem.manager()); upgradeToUnlimited.addListener(new VibrateClickListener() { @Override public void onClick(InputEvent event, float x, float y) { Platform.getPurchaseManager().requestPurchaseForUnlimitedVersion(); } }); } @Override public void dispose() { } private Image makeHappyDroidsLogo(TextureAtlas atlas) { Image happyDroidsLogo = new Image(atlas.findRegion("happy-droids-logo")); happyDroidsLogo.getColor().a = 0f; happyDroidsLogo.addAction(Actions.fadeIn(0.125f)); happyDroidsLogo.setX(getStage().getWidth() - happyDroidsLogo.getWidth() - Display.devicePixel(5)); happyDroidsLogo.setY(Display.devicePixel(5)); happyDroidsLogo.addListener(new VibrateClickListener() { @Override public void onClick(InputEvent event, float x, float y) { Platform.getBrowserUtil().launchWebBrowser(TowerConsts.HAPPYDROIDS_URI); } }); return happyDroidsLogo; } private Image makeLibGDXLogo(TextureAtlas atlas) { Image libGdxLogo = new Image(atlas.findRegion("powered-by-libgdx")); libGdxLogo.getColor().a = 0f; libGdxLogo.addAction(Actions.fadeIn(0.125f)); libGdxLogo.setY(Display.devicePixel(5)); libGdxLogo.setX(Display.devicePixel(5)); libGdxLogo.addListener(new VibrateClickListener() { @Override public void onClick(InputEvent event, float x, float y) { Platform.getBrowserUtil().launchWebBrowser("http://libgdx.badlogicgames.com"); } }); return libGdxLogo; } }