4 * License : The MIT License
5 * Copyright(c) 2020 olyutorskii
8 package jp.sfjp.jindolf.view;
10 import java.awt.image.BufferedImage;
11 import java.text.MessageFormat;
12 import java.util.Collections;
13 import java.util.HashMap;
15 import jp.sfjp.jindolf.ResourceManager;
16 import jp.sfjp.jindolf.data.Avatar;
19 * 人狼BBSサーバにアクセスできなくなる将来に備えた代替イメージの諸々。
21 * <p>リソースに格納した代替Avatarイメージへのアクセスを提供する。
23 * <p>2020-04現在、凪庵氏作の新旧Avatarイメージは
26 * @see <a href="http://ninjinix.com/">NINJINIX.COM</a>
27 * @see <a href="http://yoroz.jp/">路地裏萬亭</a>
29 public final class LocalAvatarImg {
31 private static final String IMGDIR = "resources/image/avatar";
32 private static final String TEMPLATE_FACE =
33 IMGDIR + "/face{0,number,#00}.png";
34 private static final String TEMPLATE_BODY =
35 IMGDIR + "/body{0,number,#00}.png";
36 private static final String RES_GRAVE = IMGDIR + "/face99.png";
37 private static final String RES_GRAVEBODY = IMGDIR + "/body99.png";
39 private static final Map<String, BufferedImage> FACE_MAP;
40 private static final Map<String, BufferedImage> BODY_MAP;
42 private static final BufferedImage GRAVE_IMAGE;
43 private static final BufferedImage GRAVEBODY_IMAGE;
46 FACE_MAP = loadTemplateResImg(TEMPLATE_FACE);
47 BODY_MAP = loadTemplateResImg(TEMPLATE_BODY);
49 GRAVE_IMAGE = ResourceManager.getBufferedImage(RES_GRAVE);
50 GRAVEBODY_IMAGE = ResourceManager.getBufferedImage(RES_GRAVEBODY);
57 private LocalAvatarImg(){
63 * リソース名テンプレートにAvatarIdNumを適用して得られたリソースから
66 * @param resForm リソース名テンプレート
67 * @return AvatarIdとリソースイメージからなるマップ
69 private static Map<String, BufferedImage> loadTemplateResImg(String resForm){
70 Map<String, BufferedImage> result = new HashMap<>();
72 Avatar.getPredefinedAvatarList().forEach(avatar -> {
73 String avatarId = avatar.getIdentifier();
74 int idNum = avatar.getIdNum();
75 String res = MessageFormat.format(resForm, idNum);
77 BufferedImage img = ResourceManager.getBufferedImage(res);
79 result.put(avatarId, img);
82 return Collections.unmodifiableMap(result);
89 * @param avatarId AvatarId
92 public static BufferedImage getAvatarFaceImage(String avatarId){
93 BufferedImage result = FACE_MAP.get(avatarId);
98 * Avatarの代替全身像イメージを返す。
100 * @param avatarId AvatarId
103 public static BufferedImage getAvatarBodyImage(String avatarId){
104 BufferedImage result = BODY_MAP.get(avatarId);
113 public static BufferedImage getGraveImage(){
122 public static BufferedImage getGraveBodyImage(){
123 return GRAVEBODY_IMAGE;