package gr.sullenart.games.fruitcatcher.view; import gr.sullenart.games.fruitcatcher.images.ImageProvider; import gr.sullenart.games.fruitcatcher.models.FallingObjectType; import gr.sullenart.games.fruitcatcher.models.FruitType; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.MathUtils; public class FallingObjectFactory { private ImageProvider imageProvider; private int season = 0; public void setSeason(int season) { this.season = season; } public FallingObjectFactory(ImageProvider imageProvider) { this.imageProvider = imageProvider; } public FallingObject getStar() { TextureRegion [] textureRegions = new TextureRegion[2]; textureRegions[0] = imageProvider.getStarFrame(2); textureRegions[1] = imageProvider.getStarFrame(3); FallingObjectState model = new FallingObjectState(); model.setType(FallingObjectType.BonusObject); return new FallingObject(imageProvider, textureRegions, model); } public FallingObject getBadObject() { TextureRegion [] textureRegions = new TextureRegion[2]; textureRegions[0] = imageProvider.getBadAppleFrame(1); textureRegions[1] = imageProvider.getBadAppleFrame(2); FallingObjectState model = new FallingObjectState(); model.setType(FallingObjectType.BadFruit); return new FallingObject(imageProvider, textureRegions, model); } public FallingObject getFruit() { TextureRegion [] textureRegions = new TextureRegion[1]; int fruitType = MathUtils.random(0, imageProvider.getFruitsCount() - 1); textureRegions[0] = imageProvider.getFruit(fruitType); boolean inSeason = FruitType.isInSeason(fruitType, season); FallingObjectState state = new FallingObjectState(); if (inSeason) { state.setType(FallingObjectType.SeasonalFruit); } else { state.setType(FallingObjectType.Fruit); } state.setIndex(fruitType); return new FallingObject(imageProvider, textureRegions, state); } public FallingObject getObjectFromState(FallingObjectState foState) { FallingObjectType type = foState.getType(); TextureRegion [] textureRegions = null; switch(type) { case Fruit: case SeasonalFruit: textureRegions = new TextureRegion[1]; textureRegions[0] = imageProvider.getFruit(foState.getIndex()); break; case BadFruit: textureRegions = new TextureRegion[2]; textureRegions[0] = imageProvider.getBadAppleFrame(1); textureRegions[1] = imageProvider.getBadAppleFrame(2); break; case BonusObject: textureRegions = new TextureRegion[2]; textureRegions[0] = imageProvider.getStarFrame(2); textureRegions[1] = imageProvider.getStarFrame(3); break; } return new FallingObject(imageProvider, textureRegions, foState); } }