Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package org.mafagafogigante.dungeon.achievements;

import org.mafagafogigante.dungeon.date.Date;
import org.mafagafogigante.dungeon.game.DungeonString;
import org.mafagafogigante.dungeon.game.Id;
import org.mafagafogigante.dungeon.io.Version;
import org.mafagafogigante.dungeon.io.Writer;
import org.mafagafogigante.dungeon.logging.DungeonLogger;
import org.mafagafogigante.dungeon.stats.Statistics;
import org.mafagafogigante.dungeon.util.StandardRichTextBuilder;

import org.jetbrains.annotations.NotNull;

Expand Down Expand Up @@ -34,7 +34,7 @@ public AchievementTracker(@NotNull Statistics statistics) {
/**
* Writes an achievement unlocked message with some information about the unlocked achievement.
*/
private static void writeAchievementUnlock(Achievement achievement, DungeonString builder) {
private static void writeAchievementUnlock(Achievement achievement, StandardRichTextBuilder builder) {
String format = "You unlocked the achievement %s because you %s.";
builder.append(String.format(format, achievement.getName(), achievement.getText()));
}
Expand All @@ -53,7 +53,7 @@ int getUnlockedCount() {
*
* @param achievement the Achievement to be unlocked.
*/
private void unlock(Achievement achievement, Date date, DungeonString builder) {
private void unlock(Achievement achievement, Date date, StandardRichTextBuilder builder) {
if (hasNotBeenUnlocked(achievement)) {
unlockedAchievements.put(achievement.getId(), new UnlockedAchievement(achievement, date));
writeAchievementUnlock(achievement, builder);
Expand Down Expand Up @@ -98,20 +98,20 @@ public boolean hasNotBeenUnlocked(@NotNull Achievement achievement) {
* <p>Before writing the first achievement unlock message, if there is one, a new line is written.
*/
public void update(AchievementStore achievementStore, Date date) {
DungeonString dungeonString = new DungeonString();
StandardRichTextBuilder builder = new StandardRichTextBuilder();
boolean wroteNewLine = false; // If we are going to write anything at all, we must start with a blank line.
for (Achievement achievement : achievementStore.getAchievements()) {
if (hasNotBeenUnlocked(achievement) && achievement.isFulfilled(statistics)) {
if (!wroteNewLine) {
dungeonString.append("\n");
builder.append("\n");
wroteNewLine = true;
}
unlock(achievement, date, dungeonString);
dungeonString.append("\n");
unlock(achievement, date, builder);
builder.append("\n");
}
}
if (dungeonString.getLength() != 0) {
Writer.getDefaultWriter().write(dungeonString);
if (builder.getLength() != 0) {
Writer.getDefaultWriter().write(builder.toRichText());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import org.mafagafogigante.dungeon.achievements.comparators.UnlockedAchievementComparators;
import org.mafagafogigante.dungeon.date.Date;
import org.mafagafogigante.dungeon.date.Duration;
import org.mafagafogigante.dungeon.game.DungeonString;
import org.mafagafogigante.dungeon.game.Game;
import org.mafagafogigante.dungeon.io.Writer;
import org.mafagafogigante.dungeon.util.StandardRichTextBuilder;

import java.awt.Color;
import java.util.Comparator;
Expand Down Expand Up @@ -57,27 +57,27 @@ private static Comparator<UnlockedAchievement> getComparator(String[] arguments)
private static void writeAchievementTracker(AchievementTracker tracker, Comparator<UnlockedAchievement> comparator) {
List<UnlockedAchievement> unlockedAchievements = tracker.getUnlockedAchievements(comparator);
Date now = Game.getGameState().getWorld().getWorldDate();
DungeonString string = new DungeonString();
StandardRichTextBuilder builder = new StandardRichTextBuilder();
for (UnlockedAchievement unlockedAchievement : unlockedAchievements) {
Duration sinceUnlock = new Duration(unlockedAchievement.getDate(), now);
string.setColor(Color.ORANGE);
string.append(String.format("%s (%s ago)%n", unlockedAchievement.getName(), sinceUnlock));
string.setColor(Color.YELLOW);
string.append(String.format(" %s%n", unlockedAchievement.getInfo()));
builder.setColor(Color.ORANGE);
builder.append(String.format("%s (%s ago)%n", unlockedAchievement.getName(), sinceUnlock));
builder.setColor(Color.YELLOW);
builder.append(String.format(" %s%n", unlockedAchievement.getInfo()));
}
int total = AchievementStoreFactory.getDefaultStore().getAchievements().size();
string.setColor(Color.CYAN);
string.append(String.format("Progress: %d/%d", tracker.getUnlockedCount(), total));
Writer.getDefaultWriter().write(string);
builder.setColor(Color.CYAN);
builder.append(String.format("Progress: %d/%d", tracker.getUnlockedCount(), total));
Writer.getDefaultWriter().write(builder.toRichText());
}

/**
* Writes a listing of valid UnlockedAchievement orderings to the screen.
*/
private static void writeValidOrderings() {
Writer.getDefaultWriter().write("Valid orderings:");
Writer.getDefaultWriter().write(new StandardRichTextBuilder().append("Valid orderings:").toRichText());
for (String comparatorName : UnlockedAchievementComparators.getComparatorMap().keySet()) {
Writer.getDefaultWriter().write(" " + comparatorName);
Writer.getDefaultWriter().write(new StandardRichTextBuilder().append(" ").append(comparatorName).toRichText());
}
}

Expand Down
24 changes: 13 additions & 11 deletions src/main/java/org/mafagafogigante/dungeon/commands/CommandSet.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.mafagafogigante.dungeon.commands;

import org.mafagafogigante.dungeon.game.DungeonString;
import org.mafagafogigante.dungeon.io.Writer;
import org.mafagafogigante.dungeon.util.StandardRichTextBuilder;

import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -34,28 +34,30 @@ static CommandSet emptyCommandSet() {
public void execute(@NotNull String[] arguments) {
String filter = arguments.length == 0 ? null : arguments[0];
List<CommandDescription> descriptions = commandSet.getCommandDescriptions();
DungeonString dungeonString = new DungeonString();
StandardRichTextBuilder builder = new StandardRichTextBuilder();
int count = 0;
for (CommandDescription description : descriptions) {
if (filter == null || StringUtils.startsWithIgnoreCase(description.getName(), filter)) {
count++;
dungeonString.append(StringUtils.rightPad(description.getName(), COMMAND_NAME_COLUMN_WIDTH));
dungeonString.append(description.getInfo());
dungeonString.append("\n");
builder.append(StringUtils.rightPad(description.getName(), COMMAND_NAME_COLUMN_WIDTH));
builder.append(description.getInfo());
builder.append("\n");
}
}
if (count == 0 && filter != null) {
Writer.getDefaultWriter().write("No command starts with '" + filter + "'.");
builder.append("No command starts with '").append(filter).append("'.");
Writer.getDefaultWriter().write(builder.toRichText());
} else {
if (count > 1) {
dungeonString.append("\nListed ");
dungeonString.append(String.valueOf(count));
dungeonString.append(" commands.");
builder.append("\nListed ");
builder.append(String.valueOf(count));
builder.append(" commands.");
if (filter == null) {
dungeonString.append("\nYou can filter the output of this command by typing the beginning of a command.");
String string = "\nYou can filter the output of this command by typing the beginning of a command.";
builder.append(string);
}
}
Writer.getDefaultWriter().write(dungeonString);
Writer.getDefaultWriter().write(builder.toRichText());
}
}
});
Expand Down
Loading