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

View File

@ -51,6 +51,8 @@ public class GameRenderer {
private GUITexture crosshairTexture;
private GUITexture clipTexture;
private GUITexture bulletTexture;
private GUITexture healthBarRedTexture;
private GUITexture healthBarGreenTexture;
private long windowHandle;
private int screenWidth = 800;
@ -123,9 +125,13 @@ public class GameRenderer {
crosshairTexture = new GUITexture("gui/crosshair.png");
clipTexture = new GUITexture("gui/clip.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("clip", clipTexture);
guiRenderer.addTexture("bullet", bulletTexture);
guiRenderer.addTexture("health-red", healthBarRedTexture);
guiRenderer.addTexture("health-green", healthBarGreenTexture);
log.debug("Initialized GUI renderer.");
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();
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);
}
public ClientCommunicationHandler getHandler(ServerPlayer player) {
return clientHandlers.get(player.getId());
}
public Collection<ClientCommunicationHandler> getHandlers() {
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.Projectile;
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 org.joml.Matrix4f;
import org.joml.Vector3f;
@ -122,6 +123,8 @@ public class ProjectileManager {
if (hitPlayer.getHealth() == 0) {
System.out.println("Player killed!!!");
server.getPlayerManager().playerKilled(hitPlayer);
} else {
server.getPlayerManager().getHandler(hitPlayer).sendDatagramPacket(new ClientHealthMessage(hitPlayer.getHealth()));
}
deleteProjectile(projectile);
} else {