Functional menu

This commit is contained in:
Matt Low 2019-12-29 12:24:51 +04:00
parent 30962673d5
commit bf0d5e041b
6 changed files with 66 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

View File

@ -38,6 +38,7 @@ public class Assets {
public void loadAssets() { public void loadAssets() {
manager.load("level_background.png", Texture.class); manager.load("level_background.png", Texture.class);
manager.load("menu_background.png", Texture.class);
manager.load("logo.png", Texture.class); manager.load("logo.png", Texture.class);
manager.load("sprites/level.png", Texture.class); manager.load("sprites/level.png", Texture.class);
@ -104,6 +105,10 @@ public class Assets {
return manager.get("level_background.png", Texture.class); return manager.get("level_background.png", Texture.class);
} }
public Texture getMenuBackground() {
return manager.get("menu_background.png", Texture.class);
}
public Texture getLogo() { public Texture getLogo() {
return manager.get("logo.png", Texture.class); return manager.get("logo.png", Texture.class);
} }

View File

@ -8,6 +8,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.utils.viewport.FitViewport; import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport; import com.badlogic.gdx.utils.viewport.Viewport;
import com.me.pacman.state.MenuState;
import com.me.pacman.state.PlayState; import com.me.pacman.state.PlayState;
public class PacDude extends Game { public class PacDude extends Game {
@ -39,7 +40,7 @@ public class PacDude extends Game {
batch = new SpriteBatch(); batch = new SpriteBatch();
sr = new ShapeRenderer(); sr = new ShapeRenderer();
setScreen(new PlayState(this)); setScreen(new MenuState(this));
} }
@Override @Override

View File

@ -1,9 +1,12 @@
package com.me.pacman.state; package com.me.pacman.state;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.me.pacman.PacDude; import com.me.pacman.PacDude;
import com.me.pacman.level.Level;
public class MenuState extends LevelState { public class MenuState extends LevelState {
@ -11,30 +14,80 @@ public class MenuState extends LevelState {
private Texture logo; private Texture logo;
private BitmapFont font; private BitmapFont font;
public static final int NEW_GAME = 0;
public static final int HIGH_SCORES = 1;
private static final int MENU_PADDING = 24;
private static final int MENU_X = 84;
private static final int MENU_Y = 85;
private int selectedOption;
private static final String[] options = {
"New Game",
"High Scores",
};
public MenuState(PacDude game) { public MenuState(PacDude game) {
super(game); super(game);
} }
@Override @Override
public void setup() { public void setup() {
levelBackground = game.assets.getLevelBackground(); levelBackground = game.assets.getMenuBackground();
logo = game.assets.getLogo(); logo = game.assets.getLogo();
logo.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); logo.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
font = game.assets.getFont(); font = game.assets.getFont();
level = new Level(game,"level"); Gdx.input.setInputProcessor(this.new Controller());
} }
@Override @Override
public void render() { public void render() {
game.batch.draw(levelBackground, 0, 16); game.batch.draw(levelBackground, 0, 16);
level.render(0, 16); game.batch.draw(logo, 0, 140, 224, 120);
game.batch.draw(logo, 0, 124, 224, 120);
for (int i = 0; i < options.length; i++) {
font.setColor(i == selectedOption? Color.BLUE : Color.WHITE);
font.draw(game.batch, options[i], MENU_X, MENU_Y - (i * MENU_PADDING), 56, 1, true);
}
} }
@Override @Override
public void update(float dt) { public void update(float dt) {}
private final class Controller extends InputAdapter {
@Override
public boolean keyDown(int keycode) {
switch (keycode) {
case Input.Keys.UP:
selectedOption = selectedOption > 0 ? --selectedOption : options.length - 1;
break;
case Input.Keys.DOWN:
selectedOption = selectedOption < options.length - 1 ? ++selectedOption : 0;
break;
case Input.Keys.ENTER:
switch (selectedOption) {
case NEW_GAME:
game.setScreen(new PlayState(game));
break;
case HIGH_SCORES:
// game.setScreen(new HighScores(game));
break;
}
break;
}
return super.keyDown(keycode);
}
}
@Override
public void dispose() {
Gdx.input.setInputProcessor(null);
} }
} }