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