LibGDX – Liczenie punktów i naprawa gita
W tym odcinku napisaliśmy liczenie punktów w grze i popsuliśmy branch w gicie… 😉 przy okazji pokazałem jak to później naprawić.
Kod źródłowy odcinka: https://github.com/JavaDevMatt/tutorialclicker/tree/tut5
Klasa TutorialClickerGame
package pl.javadevmatt.tutorialclicker;
import pl.javadevmatt.tutorialclicker.screens.SplashScreen;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
public class TutorialClickerGame extends Game {
public final static String GAME_PREFS = "pl.javadevmatt.preclicker.prefs";
public final static String GAME_SCORE = "pl.javadevmatt.preclicker.prefs.score";
public final static String GAME_NAME = "Tutorial Clicker";
public final static int WIDTH = 480;
public final static int HEIGHT = 700;
private boolean paused;
private Preferences prefs;
private int points;
@Override
public void create () {
init();
this.setScreen(new SplashScreen(this));
}
private void init() {
prefs = Gdx.app.getPreferences(GAME_PREFS);
loadScore();
}
private void loadScore() {
points = prefs.getInteger(GAME_SCORE);
}
public void addPoint(){
points++;
updateSavedScoreInPrefs();
}
public void resetGameScore() {
points = 0;
updateSavedScoreInPrefs();
}
private void updateSavedScoreInPrefs() {
prefs.putInteger(GAME_SCORE, points);
prefs.flush();
}
/**
* ---------------------
* getters and setters
*
*/
public boolean isPaused() {
return paused;
}
public void setPaused(boolean paused) {
this.paused = paused;
}
public int getPoints() {
return points;
}
}
Klasa GameplayScreen
package pl.javadevmatt.tutorialclicker.screens;
import pl.javadevmatt.tutorialclicker.TutorialClickerGame;
import pl.javadevmatt.tutorialclicker.entities.Player;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
public class GameplayScreen extends AbstractScreen{
private Player player;
private Button playerButton, resetScoreButton;
private Label scoreLabel;
public GameplayScreen(TutorialClickerGame game) {
super(game);
}
@Override
protected void init() {
initPlayer();
initPlayerButton();
initResetScoreButton();
initScoreLabel();
}
private void initResetScoreButton() {
resetScoreButton = new Button(new ButtonStyle());
resetScoreButton.setWidth(100);
resetScoreButton.setHeight(100);
resetScoreButton.setX(330);
resetScoreButton.setY(560);
resetScoreButton.setDebug(true);
stage.addActor(resetScoreButton);
resetScoreButton.addListener(new ClickListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
game.resetGameScore();
return super.touchDown(event, x, y, pointer, button);
}
});
}
private void initScoreLabel() {
LabelStyle labelStyle = new LabelStyle();
labelStyle.font = new BitmapFont();
scoreLabel = new Label("", labelStyle);
scoreLabel.setX(20);
scoreLabel.setY(650);
stage.addActor(scoreLabel);
}
private void initPlayerButton() {
playerButton = new Button(new ButtonStyle());
playerButton.setWidth(460);
playerButton.setHeight(360);
playerButton.setX(10);
playerButton.setY(170);
playerButton.setDebug(true);
stage.addActor(playerButton);
playerButton.addListener(new ClickListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
player.reactOnClick();
game.addPoint();
return super.touchDown(event, x, y, pointer, button);
}
});
}
private void initPlayer() {
player = new Player();
stage.addActor(player);
}
@Override
public void render(float delta) {
super.render(delta);
update();
spriteBatch.begin();
stage.draw();
spriteBatch.end();
}
private void update() {
scoreLabel.setText("Score: " + game.getPoints());
stage.act();
}
}
