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"> + + + + + +