From a18c1027ae2ca4480bb4fe6e9ca3cae111d6f0b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Thu, 2 Nov 2023 11:22:07 +0100 Subject: [PATCH] Create PrintedTextView component which displays text in time intervals --- .../base/lib/gui/PrintedTextView.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 api/src/main/java/com/bartlomiejpluta/base/lib/gui/PrintedTextView.java diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/gui/PrintedTextView.java b/api/src/main/java/com/bartlomiejpluta/base/lib/gui/PrintedTextView.java new file mode 100644 index 00000000..f60630ad --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/gui/PrintedTextView.java @@ -0,0 +1,48 @@ +package com.bartlomiejpluta.base.lib.gui; + +import com.bartlomiejpluta.base.api.context.Context; +import com.bartlomiejpluta.base.api.gui.Component; +import com.bartlomiejpluta.base.api.gui.GUI; +import lombok.Setter; + +import java.util.Map; + +public class PrintedTextView extends TextView { + + @Setter + private Float duration; + + private float acc; + + private String originalText; + + public PrintedTextView(Context context, GUI gui, Map refs) { + super(context, gui, refs); + } + + public void start() { + acc = 0f; + } + + public boolean isPrinting() { + return originalText.length() != super.getText().length(); + } + + public void printAll() { + acc = originalText.length() * duration; + } + + @Override + public void setText(String text) { + super.setText(""); + this.originalText = text; + } + + @Override + public void update(float dt) { + super.update(dt); + + acc += dt; + super.setText(originalText.substring(0, Math.min(originalText.length(), (int) (acc / duration)))); + } +} \ No newline at end of file