Added all drawables for IcyMountains
Added snow particle system World on StartScene is randomly chosen Last-level onGoalScreen shows "toNextWorld"
This commit is contained in:
@ -168,6 +168,10 @@ public class ParticleSource {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public Vector getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public void setDelayMS(float delay) {
|
||||
currentDelay = delay;
|
||||
delayManuallySet = true;
|
||||
|
@ -20,6 +20,7 @@ public class ParticleSystem {
|
||||
public final ParticleEffect energyCollect;
|
||||
public final ParticleEffect firework;
|
||||
public final ParticleEffect superPower;
|
||||
public final ParticleEffect snow;
|
||||
private ParticleEffect[] effects;
|
||||
|
||||
private TextureLoader textureLoader;
|
||||
@ -36,8 +37,9 @@ public class ParticleSystem {
|
||||
energyCollect = reader.read("particleEffects/collectEnergy.pe");
|
||||
firework = reader.read("particleEffects/firework.pe");
|
||||
superPower = reader.read("particleEffects/superPower.pe");
|
||||
snow = reader.read("particleEffects/snow.pe");
|
||||
|
||||
effects = new ParticleEffect[]{stasis, testFire,colorChange, explosion, magnet, starCollect, energyCollect, firework, superPower};
|
||||
effects = new ParticleEffect[]{stasis, testFire,colorChange, explosion, magnet, starCollect, energyCollect, firework, superPower, snow};
|
||||
}
|
||||
|
||||
public void update(Timer timer) {
|
||||
|
@ -12,9 +12,8 @@ import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||
|
||||
public enum World {
|
||||
|
||||
GRASSLANDS("Grasslands", R.drawable.world_previews_grass, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass),
|
||||
TESTCAVE("Testcave", R.drawable.world_previews_grass, R.drawable.backgrounds_game_cave, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass),
|
||||
ICY_MOUNTAINS("Icy Mountains", R.drawable.world_previews_grass, R.drawable.backgrounds_game_mountains, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass);
|
||||
GRASSLANDS("Grasslands", R.drawable.world_previews_grasslands, R.drawable.backgrounds_game_grass, R.drawable.terrain_t_grass, R.drawable.terrain_c_grass, R.drawable.obstacles_grass),
|
||||
ICY_MOUNTAINS("Icy Mountains", R.drawable.world_previews_icymountains, R.drawable.backgrounds_game_snow, R.drawable.terrain_t_ice, R.drawable.terrain_c_ice, R.drawable.obstacles_snow);
|
||||
|
||||
private String name;
|
||||
@DrawableRes
|
||||
|
@ -7,6 +7,7 @@ import de.frajul.endlessroll.entities.Obstacle;
|
||||
import de.frajul.endlessroll.entities.collectables.Energy;
|
||||
import de.frajul.endlessroll.entities.collectables.Star;
|
||||
import de.frajul.endlessroll.entities.collision.CollisionDetector;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
||||
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
||||
import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||
@ -37,14 +38,14 @@ public class GameScene extends Scene {
|
||||
goal = new Goal(textures.goal);
|
||||
}
|
||||
|
||||
public void loadLevel(Level level, World world, PlayerShape playerPlayerShape) throws Exception {
|
||||
public void loadLevel(Level level, World world, PlayerShape playerShape) throws Exception {
|
||||
this.currentWorld = world;
|
||||
super.reset();
|
||||
background.changeTexture(world.getBackgroundTexture());
|
||||
terrain.loadData(world, level.getTerrainEdge(), level.getTerrainTiles());
|
||||
ceiling.loadData(world, level.getCeilingEdge(), level.getCeilingTiles());
|
||||
uncategorizedEntities.add(goal);
|
||||
player.init(playerPlayerShape, terrain.getEdge(), level.getStartSpeed(),
|
||||
player.init(playerShape, terrain.getEdge(), level.getStartSpeed(),
|
||||
level.getEndSpeed(), particleSystem);
|
||||
uncategorizedEntities.add(player);
|
||||
collectables.init(level, textures);
|
||||
@ -53,6 +54,13 @@ public class GameScene extends Scene {
|
||||
|
||||
goalX = level.getGoalX();
|
||||
goal.setGoalX(goalX);
|
||||
|
||||
if(world == World.ICY_MOUNTAINS){
|
||||
enviromentParticles = new ParticleSource(new Vector(), particleSystem.snow);
|
||||
enviromentParticles.start();
|
||||
}else if(enviromentParticles != null){
|
||||
enviromentParticles.kill();
|
||||
}
|
||||
GameLog.d("Level " + level.getId() + " successfully loaded");
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import de.frajul.endlessroll.entities.Entity;
|
||||
import de.frajul.endlessroll.entities.Obstacle;
|
||||
import de.frajul.endlessroll.entities.Player;
|
||||
import de.frajul.endlessroll.entities.collectables.Collectables;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
||||
import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||
import de.frajul.endlessroll.entities.tileLists.Ceiling;
|
||||
@ -37,6 +38,7 @@ public abstract class Scene {
|
||||
protected Terrain terrain;
|
||||
protected Ceiling ceiling;
|
||||
protected Player player;
|
||||
protected ParticleSource enviromentParticles;
|
||||
|
||||
protected List<Entity> uncategorizedEntities = Collections
|
||||
.synchronizedList(new ArrayList<Entity>());
|
||||
@ -82,6 +84,9 @@ public abstract class Scene {
|
||||
}
|
||||
} else
|
||||
uncategorizedEntities.remove(playerArrow);
|
||||
|
||||
if (enviromentParticles != null)
|
||||
enviromentParticles.getPosition().setX(camera.getX() + 1.5f);
|
||||
}
|
||||
|
||||
private void updateEntityList(List<? extends Entity> list, Timer timer) {
|
||||
|
@ -1,5 +1,9 @@
|
||||
package de.frajul.endlessroll.main.game;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import de.frajul.endlessroll.data.Vector;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSource;
|
||||
import de.frajul.endlessroll.entities.particles.ParticleSystem;
|
||||
import de.frajul.endlessroll.entities.shapes.PlayerShape;
|
||||
import de.frajul.endlessroll.entities.textures.TexturePack;
|
||||
@ -7,11 +11,37 @@ import de.frajul.endlessroll.levels.worlds.World;
|
||||
|
||||
public class StartScene extends Scene {
|
||||
|
||||
private final float TERRAIN_EDGE = -0.8f;
|
||||
private Random random;
|
||||
private World currentWorld = World.GRASSLANDS;
|
||||
|
||||
public StartScene(TexturePack texturePack, ParticleSystem particleSystem) {
|
||||
super(texturePack, particleSystem);
|
||||
terrain.createEndless(World.ICY_MOUNTAINS, -.8f);
|
||||
player.init(PlayerShape.BALL, terrain.getEdge(), 0.5f, 0.5f, null);
|
||||
player.init(PlayerShape.BALL, TERRAIN_EDGE, 0.5f, 0.5f, null);
|
||||
uncategorizedEntities.add(player);
|
||||
|
||||
random = new Random();
|
||||
randomizeWorld();
|
||||
loadTexturesForCurrentWorld();
|
||||
}
|
||||
|
||||
public void randomizeWorld() {
|
||||
int worldId = random.nextInt(World.values().length);
|
||||
currentWorld = World.values()[worldId];
|
||||
if (currentWorld == World.ICY_MOUNTAINS) {
|
||||
enviromentParticles = new ParticleSource(new Vector(), particleSystem.snow);
|
||||
enviromentParticles.start();
|
||||
} else {
|
||||
if (enviromentParticles != null)
|
||||
enviromentParticles.kill();
|
||||
particleSystem.deleteAllSources();
|
||||
}
|
||||
}
|
||||
|
||||
public void loadTexturesForCurrentWorld() {
|
||||
terrain.clear();
|
||||
terrain.createEndless(currentWorld, TERRAIN_EDGE);
|
||||
background.changeTexture(currentWorld.getBackgroundTexture());
|
||||
}
|
||||
|
||||
}
|
@ -10,7 +10,7 @@ import android.widget.RelativeLayout;
|
||||
import de.frajul.endlessroll.R;
|
||||
import de.frajul.endlessroll.main.GameActivity;
|
||||
import de.frajul.endlessroll.main.MyGlSurfaceView;
|
||||
import de.frajul.endlessroll.rendering.Rendering;
|
||||
import de.frajul.endlessroll.main.game.StartScene;
|
||||
import de.frajul.endlessroll.sqlDatabase.MyDatabase;
|
||||
import de.frajul.endlessroll.views.ConfirmDialog;
|
||||
|
||||
@ -22,7 +22,7 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
|
||||
private final int CALL_ID_CONFIRM_EXIT = 1;
|
||||
private final int CALL_ID_CONFIRM_FINISH_WORLD = 2;
|
||||
|
||||
private Rendering rendering;
|
||||
private StartScreenRendering rendering;
|
||||
|
||||
private Button play;
|
||||
private Button unlockLevels;
|
||||
@ -62,6 +62,8 @@ public class StartScreen extends GLScreen<RelativeLayout> implements View.OnClic
|
||||
@Override
|
||||
public void prepareToBeShown() {
|
||||
glView.setCurrentRendering(rendering);
|
||||
((StartScene) rendering.getScene()).randomizeWorld();
|
||||
((StartScene) rendering.getScene()).loadTexturesForCurrentWorld();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -30,8 +30,9 @@ public class StartScreenRendering extends Rendering<StartScene> {
|
||||
this.timer = timer;
|
||||
if (isFirstTime)
|
||||
scene = new StartScene(texturePack, particleSystem);
|
||||
else
|
||||
else {
|
||||
scene.setTexturePack(texturePack);
|
||||
}
|
||||
try {
|
||||
particleSystem.loadTextures();
|
||||
} catch (Exception e) {
|
||||
|
@ -57,11 +57,15 @@ public class GoalMessage implements GoalMessageLevelButtonOnClickListener, View.
|
||||
|
||||
topBar.update();
|
||||
restart.init(R.string.goal_message_restart_format_d, level);
|
||||
boolean nextLevelVisible = !levelPack.isLastLevel(level);
|
||||
nextLevel.setVisible(nextLevelVisible);
|
||||
if (nextLevelVisible)
|
||||
boolean isLastLevel = levelPack.isLastLevel(level);
|
||||
boolean hasNextWorld = gameActivity.getLevelManager().getNextLevelPack(levelPack) != null;
|
||||
nextLevel.setVisible(!isLastLevel || hasNextWorld);
|
||||
if (!isLastLevel)
|
||||
nextLevel
|
||||
.init(R.string.goal_message_next_level_format_d, levelPack.getNextLevel(level));
|
||||
else if (hasNextWorld) {
|
||||
nextLevel.initShowToNextWorld(true, levelPack);
|
||||
}
|
||||
|
||||
layout.postDelayed(new Runnable() {
|
||||
@Override
|
||||
@ -96,7 +100,10 @@ public class GoalMessage implements GoalMessageLevelButtonOnClickListener, View.
|
||||
@Override
|
||||
public void onClick(GoalMessageLevelButton goalMessageLevelButton) {
|
||||
hide();
|
||||
gameActivity.startGame(levelPack, goalMessageLevelButton.getLevel());
|
||||
if (goalMessageLevelButton.isShowingToNextWorld()) {
|
||||
gameActivity.flipToScreen(Screen.ScreenType.WORLDS);
|
||||
} else
|
||||
gameActivity.startGame(levelPack, goalMessageLevelButton.getLevel());
|
||||
}
|
||||
|
||||
public void onKeyBack() {
|
||||
|
@ -1,14 +1,13 @@
|
||||
package de.frajul.endlessroll.views;
|
||||
|
||||
import android.support.annotation.LayoutRes;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import de.frajul.endlessroll.R;
|
||||
import de.frajul.endlessroll.levels.Level;
|
||||
import de.frajul.endlessroll.levels.LevelPack;
|
||||
import de.frajul.endlessroll.main.GameActivity;
|
||||
|
||||
/**
|
||||
@ -19,6 +18,7 @@ public class GoalMessageLevelButton implements View.OnClickListener {
|
||||
private GameActivity gameActivity;
|
||||
private GoalMessageLevelButtonOnClickListener clickListener;
|
||||
private Level level;
|
||||
private boolean showingToNextWorld = false;
|
||||
|
||||
private View layout;
|
||||
private TextView text;
|
||||
@ -26,6 +26,7 @@ public class GoalMessageLevelButton implements View.OnClickListener {
|
||||
private ImageView star2;
|
||||
private ImageView star3;
|
||||
private ImageView energy;
|
||||
private View bottomLayout;
|
||||
|
||||
public GoalMessageLevelButton(GameActivity gameActivity, GoalMessageLevelButtonOnClickListener clickListener, View layout) {
|
||||
this.gameActivity = gameActivity;
|
||||
@ -42,18 +43,31 @@ public class GoalMessageLevelButton implements View.OnClickListener {
|
||||
star2 = (ImageView) layout.findViewById(R.id.goal_message_levelbutton_star2);
|
||||
star3 = (ImageView) layout.findViewById(R.id.goal_message_levelbutton_star3);
|
||||
energy = (ImageView) layout.findViewById(R.id.goal_message_levelbutton_energy);
|
||||
bottomLayout = layout.findViewById(R.id.goal_message_bottom_layout);
|
||||
}
|
||||
|
||||
public void setVisible(boolean visible){
|
||||
public void setVisible(boolean visible) {
|
||||
layout.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
|
||||
public void init(@StringRes int textId, Level level) {
|
||||
this.level = level;
|
||||
initShowToNextWorld(false, null);
|
||||
text.setText(gameActivity.getString(textId, level.getId()));
|
||||
showCollectedCurrency(level.getCollectedStars(), level.isEnergyCollected());
|
||||
}
|
||||
|
||||
public void initShowToNextWorld(boolean show, LevelPack currentLevelPack) {
|
||||
showingToNextWorld = show;
|
||||
bottomLayout.setVisibility(show ? View.GONE : View.VISIBLE);
|
||||
if (show) {
|
||||
String nextWorld = gameActivity.getLevelManager().getNextLevelPack(currentLevelPack)
|
||||
.getName();
|
||||
text.setText(
|
||||
gameActivity.getString(R.string.goal_message_next_world_format_s, nextWorld));
|
||||
}
|
||||
}
|
||||
|
||||
private void showCollectedCurrency(boolean[] stars, boolean energy) {
|
||||
if (stars[0])
|
||||
this.star1.setImageResource(R.drawable.currency_star);
|
||||
@ -69,10 +83,14 @@ public class GoalMessageLevelButton implements View.OnClickListener {
|
||||
return level;
|
||||
}
|
||||
|
||||
public View getView(){
|
||||
public View getView() {
|
||||
return layout;
|
||||
}
|
||||
|
||||
public boolean isShowingToNextWorld() {
|
||||
return showingToNextWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
clickListener.onClick(this);
|
||||
|
Reference in New Issue
Block a user