package com.igorcrevar.goingunder; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.igorcrevar.goingunder.statemachine.GeneratorStateMachine; import com.igorcrevar.goingunder.statemachine.IGeneratorStateMachine; public class GameDataLevelFactory { private static class GameLevel0 extends GameLevel1 { public GameLevel0() { super(); emptySpaceSizeInTheMiddle = 1.35f; emptySpaceSizeOnTheEnd = 1.31f; endOnScore = 4; } } private static class GameLevel1 extends AGameLevel { public GameLevel1() { friction = 3.5f; velocityX = 1.8f; velocityY = -2.4f; obstacleGeneratorDistance = 5.359f; emptySpaceSizeInTheMiddle = 1.22f; emptySpaceSizeOnTheEnd = 1.16f; boundariesBouncingFactor = 0.5f; endOnScore = 30; } @Override protected IGeneratorStateMachine createGeneratorMachine() { return new GeneratorStateMachine(true); } @Override public void resolveObstacleTexture(Sprite part, GameManager gameManager) { TextureAtlas atlas = gameManager.getTextureAtlas("game"); if (part.getWidth() > 2.0f) { part.setRegion(atlas.findRegion("obstacle1")); } else { part.setRegion(atlas.findRegion("obstacle1_small")); } } } private static class GameLevel2 extends AGameLevel { public GameLevel2() { friction = 3.5f; velocityX = 1.8f; velocityY = -2.5f; obstacleGeneratorDistance = 5.259f; emptySpaceSizeInTheMiddle = 1.22f; emptySpaceSizeOnTheEnd = 1.16f; boundariesBouncingFactor = 0.5f; endOnScore = 60; } @Override protected IGeneratorStateMachine createGeneratorMachine() { return new GeneratorStateMachine(true); } @Override public void resolveObstacleTexture(Sprite part, GameManager gameManager) { part.setRegion(gameManager.getTextureAtlas("game").findRegion("obstacle2")); } } private static class GameLevel3 extends AGameLevel { public GameLevel3() { friction = 3.5f; velocityX = 1.8f; velocityY = -2.55f; obstacleGeneratorDistance = 5.259f; emptySpaceSizeInTheMiddle = 1.22f; emptySpaceSizeOnTheEnd = 1.16f; boundariesBouncingFactor = 0.5f; endOnScore = 90; } @Override protected IGeneratorStateMachine createGeneratorMachine() { return new GeneratorStateMachine(false); } @Override public void resolveObstacleTexture(Sprite part, GameManager gameManager) { part.setRegion(gameManager.getTextureAtlas("game").findRegion("obstacle3")); } } private static class GameLevel4 extends AGameLevel { public GameLevel4() { friction = 3.5f; velocityX = 1.8f; velocityY = -2.6f; obstacleGeneratorDistance = 5.159f; emptySpaceSizeInTheMiddle = 1.21f; emptySpaceSizeOnTheEnd = 1.15f; boundariesBouncingFactor = 0.4f; endOnScore = 120; } @Override protected IGeneratorStateMachine createGeneratorMachine() { return new GeneratorStateMachine(false); } @Override public void resolveObstacleTexture(Sprite part, GameManager gameManager) { part.setRegion(gameManager.getTextureAtlas("game").findRegion("obstacle4")); } } private static class GameLevel5 extends AGameLevel { public GameLevel5() { friction = 3.5f; velocityX = 1.8f; velocityY = -2.7f; obstacleGeneratorDistance = 5.05f; emptySpaceSizeInTheMiddle = 1.20f; emptySpaceSizeOnTheEnd = 1.14f; boundariesBouncingFactor = 0.4f; endOnScore = 0; } @Override protected IGeneratorStateMachine createGeneratorMachine() { return new GeneratorStateMachine(false); } @Override public void resolveObstacleTexture(Sprite part, GameManager gameManager) { part.setRegion(gameManager.getTextureAtlas("game").findRegion("obstacle5")); } } public static AGameLevel[] createLevels() { return new AGameLevel[] { new GameLevel0(), new GameLevel1(), new GameLevel2(), new GameLevel3(), new GameLevel4(), new GameLevel5() }; } }