fix log messages showing in the wrong order by remembering order of creation of messages

fixes issue 619
master
melvin 2014-07-15 11:32:20 +08:00
parent b0b65de65e
commit b3fa424278
1 changed files with 14 additions and 3 deletions

View File

@ -1,13 +1,18 @@
package magic.model;
import java.util.List;
import java.util.ArrayList;
public class MagicLogMessageBuilder {
private final MagicGame game;
private final StringBuilder[] messageBuilders;
private final List<MagicPlayer> order;
MagicLogMessageBuilder(final MagicGame game) {
this.game=game;
MagicLogMessageBuilder(final MagicGame aGame) {
game = aGame;
messageBuilders=new StringBuilder[]{new StringBuilder(),new StringBuilder()};
order = new ArrayList<MagicPlayer>(2);
}
void appendMessage(final MagicPlayer player,final String message) {
@ -16,20 +21,26 @@ public class MagicLogMessageBuilder {
messageBuilder.append(' ');
}
messageBuilder.append(message);
if (order.contains(player) == false) {
order.add(player);
}
}
void logMessages() {
for (final MagicPlayer player : game.getPlayers()) {
for (final MagicPlayer player : order) {
final StringBuilder messageBuilder=messageBuilders[player.getIndex()];
if (messageBuilder.length()>0) {
game.getLogBook().add(new MagicMessage(game,player,messageBuilder.toString()));
messageBuilder.setLength(0);
}
}
order.clear();
}
void clearMessages() {
messageBuilders[0].setLength(0);
messageBuilders[1].setLength(0);
order.clear();
}
}