import java.util.ArrayList;
import java.util.Comparator;
+import com.codingame.gameengine.core.GameManager;
import com.codingame.gameengine.core.MultiplayerGameManager;
import com.codingame.gameengine.module.entities.GraphicEntityModule;
import com.codingame.gameengine.module.entities.Rectangle;
@Inject private GraphicEntityModule graphicEntityModule;
@Inject ToggleModule toggleModule;
+ enum Dir {
+ LEFT("walks left."),
+ STILL("stands still."),
+ RIGHT("walks right.");
+
+ String movement;
+ Dir(String mvt) { movement = mvt; }
+ }
+
class Player {
Model.Player model;
}
void animateStones(int stones) {
- String stonesString = new Integer(stones).toString();
+ String stonesString = Integer.valueOf(stones).toString();
stone.setX(castle.getX());
stone.setY(castle.getY() - 100);
stone.setText(stonesString);
}
void destroy() {
+ gameManager.addToGameSummary(GameManager.formatErrorMessage("Troll destroys " + nicknameToken + "."));
graphicEntityModule.commitEntityState(0.5, castle);
castle.setX(castle.getX(), Curve.ELASTIC);
castle.setScaleY(-0.2, Curve.EASE_IN);
stoneReminder.setAlpha(0);
graphicEntityModule.commitEntityState(0, stoneReminder);
}
+
+ void victory() {
+ gameManager.addToGameSummary(GameManager.formatSuccessMessage(nicknameToken + " wins."));
+ }
+
+ void throwStones(int stones) {
+ gameManager.addToGameSummary(String.format("%s throws %d stone%s at the troll.", nicknameToken, stones, stones == 1 ? "" : "s"));
+ }
+
+ void threwMoreStonesThanHad() {
+ gameManager.addToGameSummary(GameManager.formatErrorMessage(nicknameToken + " tried to throw more stones than they had. I'll let it slide for this time. (But not let them throw that much!)"));
+ }
+
+ void failedToThrowStonesAndShouldHave() {
+ gameManager.addToGameSummary(GameManager.formatErrorMessage(nicknameToken + " tried not throwing any stones. Fixing that for them because I'm in a good mood today."));
+ }
}
Model model;
Sprite troll;
Text trollPositionGauge;
Player p0 = new Player(), p1 = new Player();
+ Text turnCounter; int _turns = 0;
void init(Model m) {
model = m;
void startTurn() {
p0.startTurn();
p1.startTurn();
+
+ animateTurnCounter();
}
private class Pos {
moveTroll();
}
- void moveTroll() {
+ private void moveTroll() {
graphicEntityModule.commitEntityState(0.5, troll, trollPositionGauge);
int x0 = p0.castle.getX(), x1 = p1.castle.getX();
int y0 = p0.castle.getY(), y1 = p1.castle.getY();
trollPositionGauge.setX(troll.getX());
}
+ void moveTroll(Dir d) {
+ moveTroll();
+ gameManager.addToGameSummary("Troll " + d.movement);
+ }
+
+ void animateTurnCounter() {
+ for (int i = 0; i < 10; i++) {
+ turnCounter.setText("T" + _turns + "." + i);
+ // The following line is likely not a bug.
+ graphicEntityModule.commitEntityState((double) i/9, turnCounter);
+ }
+ _turns++;
+ }
+
void drawDebug() {
String[] debugModePngs = graphicEntityModule.createSpriteSheetSplitter()
.setSourceImage("debug.png")
.setAnchorX(0.5)
.setLoop(true);
toggleModule.displayOnToggleState(debugMode, "debug", true);
+
+ turnCounter = graphicEntityModule.createText()
+ .setAnchorX(0.5)
+ .setAnchorY(0)
+ .setX(1920 / 2)
+ .setY(280)
+ .setStrokeColor(0xff0080)
+ .setFillColor(0xff0080)
+ .setFontFamily("monospace")
+ .setFontWeight(Text.FontWeight.BOLD)
+ .setFontSize(100);
+ toggleModule.displayOnToggleState(turnCounter, "debug", true);
+ animateTurnCounter();
+ }
+
+ void doubleDefeat() {
+ gameManager.addToGameSummary(GameManager.formatErrorMessage("Everybody loses!"));
+ }
+
+ void draw() {
+ gameManager.addToGameSummary("Draw.");
}
}