From 03df8ca91b4d3d7e3df10eaeaa40c6b73f48bb27 Mon Sep 17 00:00:00 2001 From: magnsskj <magnsskj@stud.ntnu.no> Date: Wed, 22 Mar 2023 12:09:41 +0100 Subject: [PATCH] (#18): add simple screen class for gameplay --- .../com/game/tankwars/view/GameScreen.java | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/frontend/core/src/com/game/tankwars/view/GameScreen.java b/frontend/core/src/com/game/tankwars/view/GameScreen.java index d92f2fb..377c038 100644 --- a/frontend/core/src/com/game/tankwars/view/GameScreen.java +++ b/frontend/core/src/com/game/tankwars/view/GameScreen.java @@ -1,39 +1,62 @@ package com.game.tankwars.view; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Input; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.ScreenUtils; +import com.badlogic.gdx.utils.viewport.FitViewport; +import com.badlogic.gdx.utils.viewport.Viewport; import com.game.tankwars.TankWarsGame; +import com.game.tankwars.controller.GameController; import com.game.tankwars.model.Tank; public class GameScreen implements Screen { - final TankWarsGame tankWarsGame; - OrthographicCamera camera; - SpriteBatch batch; - Tank tank; - - public GameScreen(final TankWarsGame tankWarsGame){ - this.tankWarsGame = tankWarsGame; - camera = new OrthographicCamera(); - + private TankWarsGame game; + private OrthographicCamera camera; + private SpriteBatch batch; + private BitmapFont font; + private Viewport viewport; + private GameController controller; + private GameHud hud; + private Tank tank; + + public GameScreen(final TankWarsGame game){ + this.game = game; batch = new SpriteBatch(); + font = game.getFont(); + font.getData().setScale(0.55f); + camera = game.getCamera(); + tank = new Tank(new Vector2(50, 50), new Texture("tank-khaki.png")); + + viewport = new FitViewport(TankWarsGame.SCREEN_WIDTH, TankWarsGame.SCREEN_HEIGHT, camera); + + hud = new GameHud(viewport, batch); + + controller = new GameController(this.game, this.hud, this.tank); + + Gdx.input.setInputProcessor(hud.getStage()); + controller.handleHudEvents(); } @Override public void render(float delta) { - if(Gdx.input.isKeyPressed(Input.Keys.D)) { + if(controller.isMoveRightTouched()) { tank.moveRight(); } - if(Gdx.input.isKeyPressed(Input.Keys.A)) { + if(controller.isMoveLeftTouched()) { tank.moveLeft(); } ScreenUtils.clear(0, 0, 0, 1); + + batch.setProjectionMatrix(viewport.getCamera().combined); + + hud.getStage().draw(); + batch.begin(); batch.draw(tank.getTexture(), tank.getPosition().x, tank.getPosition().y, Tank.TANK_WIDTH, Tank.TANK_HEIGHT); batch.end(); @@ -45,7 +68,7 @@ public class GameScreen implements Screen { } @Override public void resize(int width, int height) { - + viewport.update(width, height); } @Override @@ -65,6 +88,7 @@ public class GameScreen implements Screen { @Override public void dispose() { - + hud.getStage().dispose(); + batch.dispose(); } } -- GitLab