Skip to content
Snippets Groups Projects
Commit 891b2213 authored by Sander Østrem Fagernes's avatar Sander Østrem Fagernes
Browse files

feat: Skeleton controller and screen, FontGeneratorTTF

Issue #19
parent eb8693e2
No related branches found
No related tags found
1 merge request!16Resolve "Login screen setup (without backend)"
Pipeline #204482 passed
......@@ -15,43 +15,15 @@ import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.ScreenUtils;
import com.game.tankwars.model.Tank;
import com.game.tankwars.view.LoginScreen;
import com.game.tankwars.view.MainMenuScreen;
public class TankWarsGame extends Game {
private SpriteBatch batch;
private BitmapFont font;
private OrthographicCamera camera;
@Override
public void create() {
batch = new SpriteBatch();
// Font from https://www.fontspace.com/roll-accurate-font-f32330
font = generateFontFromTTFFile("RollAccurate-mvrx.ttf");
// Camera size set to main menu dimensions: portrait mode
camera = new OrthographicCamera(224f,
224f * Gdx.graphics.getHeight() / Gdx.graphics.getWidth());
MainMenuScreen mainMenuScreen = new MainMenuScreen(this, batch, font, camera);
this.setScreen(mainMenuScreen);
}
/**
* Generates a BitmapFont from a .ttf font file with higher scaling than the original
* to allow for better font resolution.
*
* @param internalPath file path to the .ttf file relative to assets folder
* @return BitmapFont
*/
private BitmapFont generateFontFromTTFFile(String internalPath) {
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal(internalPath));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 32; // Set max font size
BitmapFont font = generator.generateFont(parameter);
generator.dispose();
return font;
this.setScreen(new LoginScreen(this));
}
@Override
......
package com.game.tankwars.controller;
import com.badlogic.gdx.math.Vector3;
import com.game.tankwars.TankWarsGame;
public class LoginController {
private final TankWarsGame tankWarsGame;
public LoginController(final TankWarsGame tankWarsGame) {
this.tankWarsGame = tankWarsGame;
}
public void handleInput(Vector3 touchPos) {
System.out.println("Touched");
}
}
package com.game.tankwars.model;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
public class FontGeneratorTTF {
/**
* Generates a BitmapFont from a .ttf font file with higher scaling than the original
* to allow for better font resolution.
*
* @param internalPath file path to the .ttf file relative to assets folder
* @return BitmapFont
*/
public static BitmapFont generate(String internalPath) {
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal(internalPath));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 32; // Set max font size
BitmapFont font = generator.generateFont(parameter);
generator.dispose();
return font;
}
}
package com.game.tankwars.view;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.game.tankwars.TankWarsGame;
import com.game.tankwars.controller.LoginController;
import com.game.tankwars.model.FontGeneratorTTF;
public class LoginScreen extends InputAdapter implements Screen {
private final TankWarsGame tankWarsGame;
private final SpriteBatch batch;
private final BitmapFont font;
private final Viewport viewport;
private final LoginController controller;
private final Vector3 touchPos;
public LoginScreen(final TankWarsGame tankWarsGame) {
this.tankWarsGame = tankWarsGame;
batch = new SpriteBatch();
// Font from https://www.fontspace.com/roll-accurate-font-f32330
font = FontGeneratorTTF.generate("RollAccurate-mvrx.ttf");
// Camera size set to main menu dimensions: portrait mode
viewport = new FitViewport(220f, 220f * Gdx.graphics.getHeight() / Gdx.graphics.getWidth());
controller = new LoginController(tankWarsGame);
touchPos = new Vector3();
}
@Override
public void show() {
}
@Override
public void render(float delta) {
}
@Override
public void resize(int width, int height) {
viewport.update(width, height);
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
touchPos.set(screenX, screenY, 0);
viewport.unproject(touchPos);
controller.handleInput(touchPos);
return true;
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
batch.dispose();
font.dispose();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment