Improve HUD log and debug functions

This commit is contained in:
2022-08-19 11:32:35 +02:00
parent 0f365410b0
commit f98806f2f9
2 changed files with 16 additions and 12 deletions

View File

@@ -57,7 +57,6 @@ public abstract class Character extends EntityDelegate {
return;
}
log.info(toString() + " received " + dmg + " damage");
hp -= dmg;
}
@@ -76,7 +75,7 @@ public abstract class Character extends EntityDelegate {
}
protected void die() {
log.info(getName() + " died with HP = " + hp);
}
public abstract String getName();

View File

@@ -1,5 +1,7 @@
package com.bartlomiejpluta.demo.gui;
import lombok.extern.slf4j.Slf4j;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
@@ -15,6 +17,7 @@ import com.bartlomiejpluta.demo.util.LimitedQueue;
import java.util.stream.Collectors;
@Slf4j
public class HUD extends BorderLayout {
private static final int MAX_LOG_SIZE = 10;
private static final float LOG_VISIBILITY_DURATION = 8000f;
@@ -22,7 +25,7 @@ public class HUD extends BorderLayout {
private final DemoRunner runner;
private final Player player;
private final Runtime runtime;
private LimitedQueue<String> log = new LimitedQueue<>(MAX_LOG_SIZE);
private LimitedQueue<String> logger = new LimitedQueue<>(MAX_LOG_SIZE);
private float logVisibilityDuration = 0f;
@@ -45,18 +48,18 @@ public class HUD extends BorderLayout {
}
private void logHitEvent(HitEvent event) {
log.add(String.format("%s hits %s with damage = %d", event.getAttacker().getName(), event.getTarget().getName(), event.getDamage()));
updateLog();
log(String.format("%s hits %s with damage = %d", event.getAttacker().getName(), event.getTarget().getName(), event.getDamage()));
}
private void updateLog() {
logLbl.setText(log.stream().collect(Collectors.joining("\n")));
private void log(String message) {
logger.add(message);
log.info(message);
logLbl.setText(logger.stream().collect(Collectors.joining("\n")));
logVisibilityDuration = LOG_VISIBILITY_DURATION;
}
private void logEnemyDiedEvent(EnemyDiedEvent event) {
log.add(String.format("%s has died with HP = %d", event.getEnemy().getName(), event.getEnemy().getHp()));
updateLog();
log(String.format("%s has died with HP = %d", event.getEnemy().getName(), event.getEnemy().getHp()));
}
@Override
@@ -80,13 +83,15 @@ public class HUD extends BorderLayout {
"FPS: %.2f\n" +
"Mem: %.2f / %.2f [MB]\n" +
"Coords: %d : %d\n" +
"Pos: %.2f : %.2f",
"Pos: %.2f : %.2f\n" +
"Entities: %d",
runner.instantFPS(),
runtime.totalMemory() / 1024f / 1024f,
runtime.maxMemory() / 1024f / 1024f,
coords.x(), coords.y(),
pos.x(), pos.y())
);
pos.x(), pos.y(),
player.getLayer().getEntities().size() - 1
));
logLbl.setAlpha(Math.min(1f, logVisibilityDuration / LOG_VISIBILITY_FADING_OUT));