added shitty healthbar to the GUI.

This commit is contained in:
Andrew Lalis 2022-07-25 15:13:49 +02:00
parent e1456707dd
commit 4e0e1a32fa
7 changed files with 40 additions and 0 deletions

View File

@ -169,6 +169,8 @@ public class Client implements Runnable {
projectiles.remove(p.getId()); projectiles.remove(p.getId());
} }
} }
} else if (msg instanceof ClientHealthMessage healthMessage) {
myPlayer.setHealth(healthMessage.health());
} }
} }

View File

@ -9,12 +9,14 @@ import java.util.ArrayList;
public class ClientPlayer extends Player { public class ClientPlayer extends Player {
private final Inventory inventory; private final Inventory inventory;
private float health;
private final Matrix4f heldItemTransform = new Matrix4f(); private final Matrix4f heldItemTransform = new Matrix4f();
private final float[] heldItemTransformData = new float[16]; private final float[] heldItemTransformData = new float[16];
public ClientPlayer(int id, String username) { public ClientPlayer(int id, String username) {
super(id, username); super(id, username);
this.health = 1;
this.inventory = new Inventory(new ArrayList<>(), 0); this.inventory = new Inventory(new ArrayList<>(), 0);
} }
@ -28,6 +30,14 @@ public class ClientPlayer extends Player {
this.inventory.setSelectedIndex(inv.getSelectedIndex()); this.inventory.setSelectedIndex(inv.getSelectedIndex());
} }
public float getHealth() {
return health;
}
public void setHealth(float health) {
this.health = health;
}
public void updateHeldItemTransform(Camera cam) { public void updateHeldItemTransform(Camera cam) {
heldItemTransform.identity() heldItemTransform.identity()
.translate(cam.getPosition()) .translate(cam.getPosition())

View File

@ -51,6 +51,8 @@ public class GameRenderer {
private GUITexture crosshairTexture; private GUITexture crosshairTexture;
private GUITexture clipTexture; private GUITexture clipTexture;
private GUITexture bulletTexture; private GUITexture bulletTexture;
private GUITexture healthBarRedTexture;
private GUITexture healthBarGreenTexture;
private long windowHandle; private long windowHandle;
private int screenWidth = 800; private int screenWidth = 800;
@ -123,9 +125,13 @@ public class GameRenderer {
crosshairTexture = new GUITexture("gui/crosshair.png"); crosshairTexture = new GUITexture("gui/crosshair.png");
clipTexture = new GUITexture("gui/clip.png"); clipTexture = new GUITexture("gui/clip.png");
bulletTexture = new GUITexture("gui/bullet.png"); bulletTexture = new GUITexture("gui/bullet.png");
healthBarRedTexture = new GUITexture("gui/health-red.png");
healthBarGreenTexture = new GUITexture("gui/health-green.png");
guiRenderer.addTexture("crosshair", crosshairTexture); guiRenderer.addTexture("crosshair", crosshairTexture);
guiRenderer.addTexture("clip", clipTexture); guiRenderer.addTexture("clip", clipTexture);
guiRenderer.addTexture("bullet", bulletTexture); guiRenderer.addTexture("bullet", bulletTexture);
guiRenderer.addTexture("health-red", healthBarRedTexture);
guiRenderer.addTexture("health-green", healthBarGreenTexture);
log.debug("Initialized GUI renderer."); log.debug("Initialized GUI renderer.");
this.modelRenderer = new ModelRenderer(); this.modelRenderer = new ModelRenderer();
@ -255,6 +261,21 @@ public class GameRenderer {
); );
} }
} }
// Render the player's health.
guiRenderer.draw(
healthBarRedTexture,
healthBarRedTexture.getIdealScaleX(64, screenWidth),
healthBarRedTexture.getIdealScaleY(16, screenHeight),
-0.90f,
-0.90f
);
guiRenderer.draw(
healthBarGreenTexture,
healthBarGreenTexture.getIdealScaleX(64 * client.getMyPlayer().getHealth(), screenWidth),
healthBarGreenTexture.getIdealScaleY(16, screenHeight),
-0.90f,
-0.90f
);
guiRenderer.end(); guiRenderer.end();
glfwSwapBuffers(windowHandle); glfwSwapBuffers(windowHandle);

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

View File

@ -76,6 +76,10 @@ public class PlayerManager {
return clientHandlers.get(id); return clientHandlers.get(id);
} }
public ClientCommunicationHandler getHandler(ServerPlayer player) {
return clientHandlers.get(player.getId());
}
public Collection<ClientCommunicationHandler> getHandlers() { public Collection<ClientCommunicationHandler> getHandlers() {
return Collections.unmodifiableCollection(clientHandlers.values()); return Collections.unmodifiableCollection(clientHandlers.values());
} }

View File

@ -6,6 +6,7 @@ import nl.andrewl.aos_core.Directions;
import nl.andrewl.aos_core.model.Player; import nl.andrewl.aos_core.model.Player;
import nl.andrewl.aos_core.model.Projectile; import nl.andrewl.aos_core.model.Projectile;
import nl.andrewl.aos_core.model.world.Hit; import nl.andrewl.aos_core.model.world.Hit;
import nl.andrewl.aos_core.net.client.ClientHealthMessage;
import nl.andrewl.aos_core.net.world.ChunkUpdateMessage; import nl.andrewl.aos_core.net.world.ChunkUpdateMessage;
import org.joml.Matrix4f; import org.joml.Matrix4f;
import org.joml.Vector3f; import org.joml.Vector3f;
@ -122,6 +123,8 @@ public class ProjectileManager {
if (hitPlayer.getHealth() == 0) { if (hitPlayer.getHealth() == 0) {
System.out.println("Player killed!!!"); System.out.println("Player killed!!!");
server.getPlayerManager().playerKilled(hitPlayer); server.getPlayerManager().playerKilled(hitPlayer);
} else {
server.getPlayerManager().getHandler(hitPlayer).sendDatagramPacket(new ClientHealthMessage(hitPlayer.getHealth()));
} }
deleteProjectile(projectile); deleteProjectile(projectile);
} else { } else {