Render pellets on menu screen.
Add Level object which contains level data (in the form of an 2D array of stateless LevelComponents), LevelLoader which loads level data from a txt file.
This commit is contained in:
parent
e031cb4400
commit
eae226b5bb
@ -6,6 +6,7 @@ import com.badlogic.gdx.assets.AssetManager;
|
||||
import com.badlogic.gdx.graphics.GL20;
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
import com.badlogic.gdx.utils.viewport.FitViewport;
|
||||
import com.badlogic.gdx.utils.viewport.Viewport;
|
||||
import com.me.pacman.state.MenuState;
|
||||
@ -20,6 +21,7 @@ public class PacDude extends Game {
|
||||
|
||||
public AssetManager assets;
|
||||
public SpriteBatch batch;
|
||||
public ShapeRenderer sr;
|
||||
|
||||
public OrthographicCamera cam;
|
||||
public Viewport viewport;
|
||||
@ -32,6 +34,7 @@ public class PacDude extends Game {
|
||||
|
||||
assets = new AssetManager();
|
||||
batch = new SpriteBatch();
|
||||
sr = new ShapeRenderer();
|
||||
|
||||
setScreen(new MenuState(this));
|
||||
}
|
||||
@ -41,9 +44,7 @@ public class PacDude extends Game {
|
||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||
|
||||
batch.begin();
|
||||
super.render();
|
||||
batch.end();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -51,6 +52,7 @@ public class PacDude extends Game {
|
||||
viewport.update(width, height);
|
||||
|
||||
batch.setProjectionMatrix(cam.combined);
|
||||
sr.setProjectionMatrix(cam.combined);
|
||||
|
||||
super.resize(width, height);
|
||||
}
|
||||
|
36
core/src/com/me/pacman/level/Level.java
Normal file
36
core/src/com/me/pacman/level/Level.java
Normal file
@ -0,0 +1,36 @@
|
||||
package com.me.pacman.level;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||
|
||||
public class Level {
|
||||
|
||||
// Grid of components, [rows][columns]
|
||||
public LevelComponent[][] components;
|
||||
|
||||
public Level(String level) {
|
||||
LevelLoader loader = new LevelLoader(level);
|
||||
components = loader.loadLevel();
|
||||
}
|
||||
|
||||
public void render(SpriteBatch batch, ShapeRenderer sr, int offsetX, int offsetY) {
|
||||
sr.begin(ShapeRenderer.ShapeType.Filled);
|
||||
sr.setColor(Color.valueOf("#f8b090"));
|
||||
|
||||
for (int i = 0; i < components.length; i++) {
|
||||
LevelComponent[] row = components[i];
|
||||
for (int j = 0; j < row.length; j++) {
|
||||
LevelComponent component = row[j];
|
||||
switch (component) {
|
||||
case PELLET:
|
||||
sr.rect((j * 8) + (offsetX-1), (i * 8) + (offsetY-1), 2, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sr.end();
|
||||
}
|
||||
|
||||
}
|
13
core/src/com/me/pacman/level/LevelComponent.java
Normal file
13
core/src/com/me/pacman/level/LevelComponent.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.me.pacman.level;
|
||||
|
||||
public enum LevelComponent {
|
||||
|
||||
PELLET,
|
||||
POWER_PELLET,
|
||||
HALLWAY,
|
||||
WALL,
|
||||
GHOST_CHAMBER,
|
||||
GHOST_GATE,
|
||||
EMPTY,
|
||||
|
||||
}
|
54
core/src/com/me/pacman/level/LevelLoader.java
Normal file
54
core/src/com/me/pacman/level/LevelLoader.java
Normal file
@ -0,0 +1,54 @@
|
||||
package com.me.pacman.level;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
|
||||
public class LevelLoader {
|
||||
|
||||
private FileHandle levelFile;
|
||||
|
||||
public LevelLoader(String level) {
|
||||
levelFile = Gdx.files.internal("data/" + level + ".txt");
|
||||
}
|
||||
|
||||
public LevelComponent[][] loadLevel() {
|
||||
String levelData = levelFile.readString();
|
||||
String[] lines = levelData.split("\n");
|
||||
int rows = lines.length;
|
||||
LevelComponent[][] components = new LevelComponent[rows][lines[0].length()];
|
||||
|
||||
for (int i = 0; i < rows; i++) {
|
||||
String line = lines[i];
|
||||
for (int j = 0; j < line.length(); j++) {
|
||||
char c = line.charAt(j);
|
||||
|
||||
int row = rows - i - 1;
|
||||
switch(c) {
|
||||
case '*':
|
||||
components[row][j] = LevelComponent.PELLET;
|
||||
break;
|
||||
case '%':
|
||||
components[row][j] = LevelComponent.POWER_PELLET;
|
||||
break;
|
||||
case '#':
|
||||
components[row][j] = LevelComponent.WALL;
|
||||
break;
|
||||
case '^':
|
||||
components[row][j] = LevelComponent.GHOST_CHAMBER;
|
||||
break;
|
||||
case '_':
|
||||
components[row][j] = LevelComponent.GHOST_GATE;
|
||||
break;
|
||||
case '-':
|
||||
components[row][j] = LevelComponent.HALLWAY;
|
||||
break;
|
||||
default:
|
||||
components[row][j] = LevelComponent.EMPTY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return components;
|
||||
}
|
||||
|
||||
}
|
@ -2,12 +2,15 @@ package com.me.pacman.state;
|
||||
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.me.pacman.PacDude;
|
||||
import com.me.pacman.level.Level;
|
||||
|
||||
public class MenuState extends State {
|
||||
|
||||
private Texture level;
|
||||
private Texture levelBackground;
|
||||
private Texture logo;
|
||||
|
||||
private Level level;
|
||||
|
||||
public MenuState(PacDude game) {
|
||||
super(game);
|
||||
}
|
||||
@ -18,15 +21,21 @@ public class MenuState extends State {
|
||||
game.assets.load("logo.png", Texture.class);
|
||||
game.assets.finishLoading();
|
||||
|
||||
level = game.assets.get("level.png", Texture.class);
|
||||
levelBackground = game.assets.get("level.png", Texture.class);
|
||||
logo = game.assets.get("logo.png", Texture.class);
|
||||
logo.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
|
||||
|
||||
level = new Level("level");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
game.batch.draw(level, 0, 0);
|
||||
level.render(game.batch, game.sr, 12, 12);
|
||||
|
||||
game.batch.begin();
|
||||
game.batch.draw(levelBackground, 0, 0);
|
||||
game.batch.draw(logo, 0, 124, 224, 120);
|
||||
game.batch.end();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,7 +10,7 @@ public class DesktopLauncher {
|
||||
config.title = PacDude.TITLE + " - " + PacDude.VERSION;
|
||||
config.width = (224 * 2);
|
||||
config.height = (248 * 2);
|
||||
config.resizable = true;
|
||||
config.resizable = false;
|
||||
new LwjglApplication(new PacDude(), config);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user