Code:
public int percentageCompleted;
public int percentageTotal;
public int percentageSpriteEmpty;
public int percentageSpriteFull;
public int percentageDimension;
public boolean verticleBar;
public static Widget addPercentageBar(int id, int percentageDimension, int percentageTotal,
int percentageSpriteEmpty, int percentageSpriteFull, boolean verticleBar) {
Widget rs = interfaceCache[id] = new Widget();
rs.id = id;
rs.parent = id;
rs.type = TYPE_PERCENTAGE;
rs.atActionType = 0;
rs.contentType = 0;
rs.opacity = 0;
rs.hoverType = 0;
rs.percentageCompleted = 0;
rs.percentageDimension = percentageDimension;
rs.percentageSpriteFull = percentageSpriteFull;
rs.percentageSpriteEmpty = percentageSpriteEmpty;
rs.percentageTotal = percentageTotal;
rs.verticleBar = verticleBar;
rs.width = 0;
rs.height = 0;
return rs;
}
In drawInterface
Code:
else if (childInterface.type == Widget.TYPE_PERCENTAGE) {
GameFont textDrawingArea = childInterface.textDrawingAreas;
RSFont font = newSmallFont;
int size = 2;
if (textDrawingArea == smallText) {
font = newSmallFont;
size = 3;
} else if (textDrawingArea == regularText) {
font = newRegularFont;
size = 3;
} else if (textDrawingArea == boldText) {
font = newBoldFont;
size = 0;
} else if (textDrawingArea == gameFont) {
font = newFancyFont;
size = 3;
}
int completed = childInterface.percentageCompleted;
int total = childInterface.percentageTotal;
int complete = (completed * childInterface.percentageDimension) / total;
int percentage = (completed * 100) / total;
boolean verticle = childInterface.verticleBar;
cacheSprite[childInterface.percentageSpriteEmpty].drawSprite(_x, currentY);
for (int i = 0; i < complete; i++) {
cacheSprite[childInterface.percentageSpriteFull].drawSprite(_x + 1 + (verticle ? 0 : i), currentY + 1 + (verticle ? i : 0));
}
if (verticle) {
int xWidth = cacheSprite[childInterface.percentageSpriteEmpty].myWidth;
font.drawCenteredString(percentage + "%", _x + (xWidth / 2),
currentY + 9 + size + (childInterface.percentageDimension) + 6,
0xffffff, 0);
} else {
font.drawCenteredString(percentage + "%",
_x + (childInterface.percentageDimension / 2) + 3, currentY + 9 + size,
0xffffff, 0);
}
}
Example:
Here's the sprites from the above. The full sprite needs to be 1 pixel.
There are other ways of doing it as well. This is one of them