Since there is no default progressbar widget in the tripleplay gui framework, I've build my own one. Feel free to use, improvements are appreciated. I use it for the visualization of creature's lifeenergy in my game.
package de.creaturewars.client.gui; import tripleplay.ui.Background; import tripleplay.ui.SizableGroup; import tripleplay.ui.Style; import tripleplay.ui.layout.AxisLayout; /** * * @author Paul Weibert * */ public class ProgressBar extends SizableGroup { private final int BAR_COLOR = 0xff379aff; private final int EMPTY_COLOR = 0xff000000; private float maxValue = 100; private float value = 0; private SizableGroup bar; private float barHeight = 10; public ProgressBar(float width, float height) { super(AxisLayout.horizontal()); this.preferredSize.update(width, height); this.addStyles(Style.HALIGN.left); this.bar = new SizableGroup(AxisLayout.horizontal()); this.addStyles(Style.BACKGROUND.is(Background.solid(EMPTY_COLOR))); this.bar.setStyles(Style.BACKGROUND.is(Background.solid(BAR_COLOR))); this.bar.addStyles(Style.HALIGN.left); add(bar); } public void setValue(float value) { this.value = value; dataChanged(); } public void setMaxValue(float maxValue) { this.maxValue = maxValue; dataChanged(); } private void dataChanged() { float w = this.preferredSize.get().width(); float qoutient = w / maxValue; float barWidth = qoutient * value; final float maxWidth = this.preferredSize.get().width(); if(barWidth > maxWidth){ barWidth = maxWidth; } bar.preferredSize.update(barWidth, barHeight); } public void setBarHeight(float barHeight) { this.barHeight = barHeight; } }
No comments:
Post a Comment