class Countdown implements Entity { int timeStart, duration; float x, y; int scale; boolean disabled; String message; Countdown(String message, int timeStart, int duration, float x, float y, int scale) { this.message = message; this.timeStart = timeStart; this.duration = duration; this.x = x; this.y = y; this.scale = scale; } Countdown(int timeStart, int duration) { this("Remaining: ", timeStart, duration, (arenaWidth - leftBorder - rightBorder) / 2, (mouseMaxY + arenaHeight) / 2 , 2); } void disable() { disabled = true; } void enable() { disabled = false; timeStart = millis(); } void doPhysics0() { } void doPhysics1() { } void draw() { if (disabled) return; int timeLeft = (duration - (millis()-timeStart)/1000); if (timeLeft < 0) timeLeft = 0; String msg = message + timeLeft; float ox = x - font.w * scale * msg.length() / 2.0; font.Draw(ox, y, msg, scale); //println(message); } void levelStart() { x += leftBorder; } void addToLevel() { theEntities.add(this); } } class LevelMessage implements Entity { String message; float x, y; int scale; LevelMessage(String message, float x, float y, int scale) { this.message = message; this.x = x - font.w * scale * message.length() / 2.0; this.y = y; this.scale = scale; } LevelMessage(String message) { this(message, 0, mouseMaxY, 2); centre(); x -= leftBorder; } void centre() { x = (arenaWidth - leftBorder - rightBorder) / 2 - font.w * scale * message.length() / 2.0 + leftBorder; } void doPhysics0() { } void doPhysics1() { } void draw() { font.Draw(x, y, message, scale); } void levelStart() { x += leftBorder; } void addToLevel() { theEntities.add(this); } }