diff --git a/data.mv.db b/data.mv.db
index 737ff65..c75a956 100644
Binary files a/data.mv.db and b/data.mv.db differ
diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Character.java b/src/main/java/com/bartlomiejpluta/demo/entity/Character.java
index 8755ab5..152e122 100644
--- a/src/main/java/com/bartlomiejpluta/demo/entity/Character.java
+++ b/src/main/java/com/bartlomiejpluta/demo/entity/Character.java
@@ -24,6 +24,9 @@ public abstract class Character extends EntityDelegate {
@Getter
protected boolean immortal = false;
+ @Getter
+ protected int maxHp;
+
@Getter
protected int hp;
diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java b/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java
index 4e7541b..e3fa059 100644
--- a/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java
+++ b/src/main/java/com/bartlomiejpluta/demo/entity/Enemy.java
@@ -31,6 +31,7 @@ public class Enemy extends Character implements NPC {
this.template = template;
name = template.getName();
hp = template.getHp();
+ maxHp = hp;
setSpeed(template.getSpeed());
setAnimationSpeed(template.getAnimationSpeed());
setBlocking(template.isBlocking());
diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Player.java b/src/main/java/com/bartlomiejpluta/demo/entity/Player.java
index b8e9eb4..1c9b825 100644
--- a/src/main/java/com/bartlomiejpluta/demo/entity/Player.java
+++ b/src/main/java/com/bartlomiejpluta/demo/entity/Player.java
@@ -10,6 +10,8 @@ public class Player extends Character {
public Player(@NonNull Context context, @NonNull Entity entity) {
super(context, entity);
+ this.hp = 100;
+ this.maxHp = 100;
}
@Override
diff --git a/src/main/java/com/bartlomiejpluta/demo/gui/Bar.java b/src/main/java/com/bartlomiejpluta/demo/gui/Bar.java
new file mode 100644
index 0000000..e047a17
--- /dev/null
+++ b/src/main/java/com/bartlomiejpluta/demo/gui/Bar.java
@@ -0,0 +1,65 @@
+package com.bartlomiejpluta.demo.gui;
+
+import lombok.*;
+
+import com.bartlomiejpluta.base.api.gui.*;
+import com.bartlomiejpluta.base.lib.gui.*;
+
+import com.bartlomiejpluta.base.api.screen.*;
+import com.bartlomiejpluta.base.api.context.Context;
+import com.bartlomiejpluta.base.api.input.*;
+
+public class Bar extends BaseComponent {
+
+ @Setter
+ private float value = 1.0f;
+ private float actualValue = 1.0f;
+ private float speed = 0.05f;
+ private final Color stroke;
+ private final Color fill;
+
+ public Bar(Context context, GUI gui) {
+ super(context, gui);
+
+ this.stroke = gui.createColor();
+ this.fill = gui.createColor();
+
+ stroke.setAlpha(1f);
+ fill.setAlpha(1f);
+ }
+
+ public void setStrokeColor(Integer hex) {
+ stroke.setRGB(hex);
+ }
+
+ public void setFillColor(Integer hex) {
+ fill.setRGB(hex);
+ }
+
+ @Override
+ public float getContentWidth() {
+ return width;
+ }
+
+ @Override
+ public float getContentHeight() {
+ return height;
+ }
+
+ @Override
+ public void draw(Screen screen, GUI gui) {
+ var remainingDistance = value - actualValue;
+ actualValue += remainingDistance * speed;
+
+ gui.beginPath();
+ gui.drawRectangle(x, y, Math.max(width * actualValue, 0), height);
+ gui.setFillColor(fill);
+ gui.fill();
+ gui.closePath();
+ gui.beginPath();
+ gui.drawRectangle(x, y, width, height);
+ gui.setStrokeColor(stroke);
+ gui.stroke();
+ gui.closePath();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java b/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java
index 1e411c2..8441a57 100644
--- a/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java
+++ b/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java
@@ -26,6 +26,9 @@ public class HUD extends BorderLayout {
private float logVisibilityDuration = 0f;
+ @Ref("hp")
+ private Bar hp;
+
@Ref("debug")
private Label debugLbl;
@@ -60,6 +63,8 @@ public class HUD extends BorderLayout {
public void update(float dt) {
super.update(dt);
+ hp.setValue((float) player.getHp() / (float) player.getMaxHp());
+
if(logVisibilityDuration > 0) {
logVisibilityDuration -= dt * 1000;
} else {
diff --git a/widgets/00bd0625-b3b8-4abf-97b7-91f42bce28ec.xml b/widgets/00bd0625-b3b8-4abf-97b7-91f42bce28ec.xml
index f767e3e..6daf65c 100644
--- a/widgets/00bd0625-b3b8-4abf-97b7-91f42bce28ec.xml
+++ b/widgets/00bd0625-b3b8-4abf-97b7-91f42bce28ec.xml
@@ -8,6 +8,20 @@
width="1f"
height="1f">
+
+
+
+
+
+