Add preferences for card text rendering

This commit is contained in:
Lyu Zong-Hong
2021-07-29 21:47:09 +09:00
parent 69a65da77c
commit 72e734faba
10 changed files with 56 additions and 3 deletions

View File

@@ -155,6 +155,8 @@ public enum CSubmenuPreferences implements ICDoc {
lstControls.add(Pair.of(view.getCbCompactPrompt(), FPref.UI_COMPACT_PROMPT));
lstControls.add(Pair.of(view.getCbHideReminderText(), FPref.UI_HIDE_REMINDER_TEXT));
lstControls.add(Pair.of(view.getCbCardTextUseSansSerif(), FPref.UI_CARD_IMAGE_RENDER_USE_SANS_SERIF_FONT));
lstControls.add(Pair.of(view.getCbCardTextHideReminder(), FPref.UI_CARD_IMAGE_RENDER_HIDE_REMINDER_TEXT));
lstControls.add(Pair.of(view.getCbOpenPacksIndiv(), FPref.UI_OPEN_PACKS_INDIV));
lstControls.add(Pair.of(view.getCbTokensInSeparateRow(), FPref.UI_TOKENS_IN_SEPARATE_ROW));
lstControls.add(Pair.of(view.getCbStackCreatures(), FPref.UI_STACK_CREATURES));

View File

@@ -115,6 +115,8 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
private final JCheckBox cbEscapeEndsTurn = new OptionsCheckBox(localizer.getMessage("cbEscapeEndsTurn"));
private final JCheckBox cbPreselectPrevAbOrder = new OptionsCheckBox(localizer.getMessage("cbPreselectPrevAbOrder"));
private final JCheckBox cbHideReminderText = new OptionsCheckBox(localizer.getMessage("cbHideReminderText"));
private final JCheckBox cbCardTextUseSansSerif = new OptionsCheckBox(localizer.getMessage("lblCardTextUseSansSerif"));
private final JCheckBox cbCardTextHideReminder = new OptionsCheckBox(localizer.getMessage("lblCardTextHideReminder"));
private final JCheckBox cbOpenPacksIndiv = new OptionsCheckBox(localizer.getMessage("cbOpenPacksIndiv"));
private final JCheckBox cbTokensInSeparateRow = new OptionsCheckBox(localizer.getMessage("cbTokensInSeparateRow"));
private final JCheckBox cbStackCreatures = new OptionsCheckBox(localizer.getMessage("cbStackCreatures"));
@@ -368,6 +370,12 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
pnlPrefs.add(cbHideReminderText, titleConstraints);
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlHideReminderText")), descriptionConstraints);
pnlPrefs.add(cbCardTextUseSansSerif, titleConstraints);
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlCardTextUseSansSerif")), descriptionConstraints);
pnlPrefs.add(cbCardTextHideReminder, titleConstraints);
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlCardTextHideReminder")), descriptionConstraints);
pnlPrefs.add(cbOpenPacksIndiv, titleConstraints);
pnlPrefs.add(new NoteLabel(localizer.getMessage("nlOpenPacksIndiv")), descriptionConstraints);
@@ -847,6 +855,14 @@ public enum VSubmenuPreferences implements IVSubmenu<CSubmenuPreferences> {
return cbHideReminderText;
}
public JCheckBox getCbCardTextUseSansSerif() {
return cbCardTextUseSansSerif;
}
public final JCheckBox getCbCardTextHideReminder() {
return cbCardTextHideReminder;
}
public final JCheckBox getCbOpenPacksIndiv() {
return cbOpenPacksIndiv;
}

View File

@@ -52,6 +52,7 @@ public class FCardImageRenderer {
private static BreakIterator boundary;
private static Pattern linebreakPattern;
private static Pattern reminderPattern;
private static Pattern reminderHidePattern;
private static Pattern symbolPattern;
private static Map<Font, Font[]> shrinkFonts;
@@ -60,6 +61,7 @@ public class FCardImageRenderer {
boundary = BreakIterator.getLineInstance(locale);
linebreakPattern = Pattern.compile("(\r\n\r\n)|(\n)");
reminderPattern = Pattern.compile("\\((.+?)\\)");
reminderHidePattern = Pattern.compile(" \\((.+?)\\)");
symbolPattern = Pattern.compile("\\{([A-Z0-9]+)\\}|\\{([A-Z0-9]+)/([A-Z0-9]+)\\}");
NAME_FONT = new Font(Font.SERIF, Font.BOLD, 26);
@@ -67,10 +69,15 @@ public class FCardImageRenderer {
if ("ja-JP".equals(FModel.getPreferences().getPref(FPref.UI_LANGUAGE)) || "zh-CN".equals(FModel.getPreferences().getPref(FPref.UI_LANGUAGE))) {
TEXT_FONT = new Font(Font.SANS_SERIF, Font.PLAIN, 24);
REMINDER_FONT = new Font(Font.SANS_SERIF, Font.PLAIN, 22);
} else {
if (FModel.getPreferences().getPrefBoolean(FPref.UI_CARD_IMAGE_RENDER_USE_SANS_SERIF_FONT)) {
TEXT_FONT = new Font(Font.SANS_SERIF, Font.PLAIN, 24);
REMINDER_FONT = new Font(Font.SANS_SERIF, Font.ITALIC, 24);
} else {
TEXT_FONT = new Font(Font.SERIF, Font.PLAIN, 24);
REMINDER_FONT = new Font(Font.SERIF, Font.ITALIC, 24);
}
}
PT_FONT = NAME_FONT;
shrinkFonts = new HashMap<>();
@@ -966,10 +973,12 @@ public class FCardImageRenderer {
}
}
private static void drawTextBoxText(Graphics2D g, final String text, int x, int y, int w, int h, int flagPTBox) {
private static void drawTextBoxText(Graphics2D g, String text, int x, int y, int w, int h, int flagPTBox) {
boolean hasPTBox = (flagPTBox & 1) == 1;
boolean isLevelup = (flagPTBox & 2) == 2;
boolean isLevelBox = (flagPTBox & 4) == 4;
if (FModel.getPreferences().getPrefBoolean(FPref.UI_CARD_IMAGE_RENDER_HIDE_REMINDER_TEXT))
text = reminderHidePattern.matcher(text).replaceAll("");
String [] paragraphs = isLevelBox ? text.split(" ") : linebreakPattern.split(text);
List<Paragraph> pgList = new ArrayList<>();
for (String pg : paragraphs) {

View File

@@ -1039,6 +1039,10 @@ lblEnableCustomCards=Erlaube benutzerdefinierte Karten
nlEnableCustomCards=Aktivieren Sie die Verwendung von benutzerdefinierten Karten für das Spielen. (Erfordert Neustart)
lblDisableCardImages=Kartenbilder abschalten
nlDisableCardImages=Wenn aktiviert, zeigt Forge keine Kartenbilder mehr.
lblCardTextUseSansSerif=Use Sans-serif Font for Card Text Renderer
nlCardTextUseSansSerif=Render card images by using Sans-serif font for card text. (Requires restart)
lblCardTextHideReminder=Hide Reminder Text for Card Text Renderer
nlCardTextHideReminder=When render card images, skip rendering reminder text.
lblExperimentalNetworkCompatibility=Experimentelle Netzwerkkompatibilität
nlExperimentalNetworkCompatibility=Forge wechselt auf kompatiblen Netzwerk-Stream. (Im Zweifel bitte ausschalten)
lblDisposeTextures=Texturen anordnen

View File

@@ -1039,6 +1039,10 @@ lblEnableCustomCards=Enable Custom Cards
nlEnableCustomCards=Enable Custom Cards to be used in decks for Game play. (Requires restart)
lblDisableCardImages=Disable Card Images
nlDisableCardImages=When enabled, Forge will not display card images.
lblCardTextUseSansSerif=Use Sans-serif Font for Card Text Renderer
nlCardTextUseSansSerif=Render card images by using Sans-serif font for card text. (Requires restart)
lblCardTextHideReminder=Hide Reminder Text for Card Text Renderer
nlCardTextHideReminder=When render card images, skip rendering reminder text.
lblExperimentalNetworkCompatibility=Experimental Network Compatibility
nlExperimentalNetworkCompatibility=Forge switches to compatible network stream. (If unsure, turn OFF this option)
lblDisposeTextures=Dispose Textures

View File

@@ -1038,6 +1038,10 @@ lblEnableCustomCards=Habilitar cartas personalizadas
nlEnableCustomCards=Habilita el uso de cartas personalizadas en mazos para jugar. (Requiere reinicio)
lblDisableCardImages=Desactivar imágenes de cartas
nlDisableCardImages=Cuando está habilitado, Forge no mostrará imágenes de tarjetas.
lblCardTextUseSansSerif=Use Sans-serif Font for Card Text Renderer
nlCardTextUseSansSerif=Render card images by using Sans-serif font for card text. (Requires restart)
lblCardTextHideReminder=Hide Reminder Text for Card Text Renderer
nlCardTextHideReminder=When render card images, skip rendering reminder text.
lblExperimentalNetworkCompatibility=Compatibilidad de red experimental
nlExperimentalNetworkCompatibility=Forge cambia a un flujo de red compatible. (Si no estás seguro, deshabilita esta opción)
lblDisposeTextures=Desechar texturas

View File

@@ -1038,6 +1038,10 @@ lblEnableCustomCards=Abilita carte personalizzate
nlEnableCustomCards=Abilita le partite con mazzi che contengono carte personalizzate. (richiede riavvio)
lblDisableCardImages=Disabilita le immagini delle carte
nlDisableCardImages=Se abilitato, Forge non mostrerà alcuna immagine per le carte.
lblCardTextUseSansSerif=Use Sans-serif Font for Card Text Renderer
nlCardTextUseSansSerif=Render card images by using Sans-serif font for card text. (Requires restart)
lblCardTextHideReminder=Hide Reminder Text for Card Text Renderer
nlCardTextHideReminder=When render card images, skip rendering reminder text.
lblExperimentalNetworkCompatibility=Compatibilità di rete sperimentale
nlExperimentalNetworkCompatibility=Forge passa a un flusso di rete compatibile. (Nel dubbio, DISABILITARE questa opzione)
lblDisposeTextures=Rimuovi Texture

View File

@@ -1039,6 +1039,10 @@ lblEnableCustomCards=カスタムカードを有効にする
nlEnableCustomCards=カスタムカードをゲームプレイのデッキで使用できるようにします。(再起動必須)
lblDisableCardImages=カード画像を無効にする
nlDisableCardImages=これを有効にすると、Forgeはカード画像を描画しません。
lblCardTextUseSansSerif=カードの文章欄にゴシック体を使います
nlCardTextUseSansSerif=カードを描画する時、文章欄の文字はゴシック体で描画します。(非アジア言語だけに影響します、再起動必須)
lblCardTextHideReminder=カードの文章欄のリマインダーテキストを非表示
nlCardTextHideReminder=カードを描画する時、文章欄のリマインダーテキストを非表示にします。
lblExperimentalNetworkCompatibility=実験的なネットワークコンパチビリティ
nlExperimentalNetworkCompatibility=Forge がコンパチブルネットワークストリーミに切り替えます。 (分からない場合はオフにしてください)
lblDisposeTextures=テキスチャー廃棄

View File

@@ -1039,6 +1039,10 @@ lblEnableCustomCards=启用自定义卡
nlEnableCustomCards=启用自定义卡以用于游戏的甲板。 (需要重启)
lblDisableCardImages=禁用卡图
nlDisableCardImages=如果启用forge将不会显示卡图。
lblCardTextUseSansSerif=Use Sans-serif Font for Card Text Renderer
nlCardTextUseSansSerif=Render card images by using Sans-serif font for card text. (Requires restart, only has effects on non-Asian languages)
lblCardTextHideReminder=Hide Reminder Text for Card Text Renderer
nlCardTextHideReminder=When render card images, skip rendering reminder text.
lblExperimentalNetworkCompatibility=实验性网络兼容
nlExperimentalNetworkCompatibility=Forge将切换为兼容性的网络流。如果不清楚此选项的作用请关闭此选项
lblDisposeTextures=释放纹理

View File

@@ -86,6 +86,8 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
UI_IMAGE_CACHE_MAXIMUM("400"),
UI_OVERLAY_FOIL_EFFECT ("true"),
UI_HIDE_REMINDER_TEXT ("false"),
UI_CARD_IMAGE_RENDER_USE_SANS_SERIF_FONT ("true"),
UI_CARD_IMAGE_RENDER_HIDE_REMINDER_TEXT ("true"),
UI_SR_OPTIMIZE ("false"),
UI_OPEN_PACKS_INDIV ("false"),
UI_STACK_CREATURES ("false"),