import jp.sfjp.jindolf.util.StringUtils;
import jp.sfjp.jindolf.view.AccountPanel;
import jp.sfjp.jindolf.view.ActionManager;
+import jp.sfjp.jindolf.view.AvatarPics;
import jp.sfjp.jindolf.view.FilterPanel;
import jp.sfjp.jindolf.view.FindPanel;
import jp.sfjp.jindolf.view.HelpFrame;
System.out.println(e);
return;
}
+ village.setLocalArchive(true);
+ AvatarPics avatarPics = village.getAvatarPics();
+ this.appSetting.applyLocalImage(avatarPics);
+ avatarPics.preload();
EventQueue.invokeLater(() -> {
- village.setLocalArchive(true);
selectedVillage(village);
});
}, "XML読み込み中", "XML読み込み完了");
import java.util.Map;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
+import jp.sfjp.jindolf.data.Avatar;
import jp.sfjp.jindolf.data.DialogPref;
import jp.sfjp.jindolf.glyph.Font2Json;
import jp.sfjp.jindolf.glyph.FontInfo;
import jp.sfjp.jindolf.net.ProxyInfo;
+import jp.sfjp.jindolf.view.AvatarPics;
import jp.sourceforge.jovsonz.JsBoolean;
import jp.sourceforge.jovsonz.JsObject;
import jp.sourceforge.jovsonz.JsPair;
}
/**
+ * ローカル代替イメージを画像キャッシュに反映させる。
+ *
+ * @param avatarPics 画像キャッシュ
+ */
+ public void applyLocalImage(AvatarPics avatarPics){
+ BufferedImage graveImage = this.avatarFaceMap.get("tomb");
+ BufferedImage graveBodyImage = this.avatarBodyMap.get("tomb");
+
+ avatarPics.setGraveImage(graveImage);
+ avatarPics.setGraveBodyImage(graveBodyImage);
+
+ for(Avatar avatar : Avatar.getPredefinedAvatarList()){
+ String avatarId = avatar.getIdentifier();
+
+ BufferedImage faceImage = this.avatarFaceMap.get(avatarId);
+ BufferedImage bodyImage = this.avatarBodyMap.get(avatarId);
+
+ avatarPics.setAvatarFaceImage(avatar, faceImage);
+ avatarPics.setAvatarBodyImage(avatar, bodyImage);
+ }
+
+ return;
+ }
+
+ /**
* ネットワーク設定をセーブする。
*/
private void saveNetConfig(){
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import jp.sfjp.jindolf.data.Avatar;
import jp.sfjp.jindolf.data.Land;
import jp.sfjp.jindolf.util.GUIUtils;
private final Land land;
- private final Map<Avatar, BufferedImage> faceImageMap =
- new HashMap<>();
- private final Map<Avatar, BufferedImage> bodyImageMap =
- new HashMap<>();
- private final Map<Avatar, BufferedImage> faceMonoImageMap =
- new HashMap<>();
- private final Map<Avatar, BufferedImage> bodyMonoImageMap =
- new HashMap<>();
+ private final Map<Avatar, BufferedImage> faceImageMap;
+ private final Map<Avatar, BufferedImage> bodyImageMap;
+ private final Map<Avatar, BufferedImage> faceMonoImageMap;
+ private final Map<Avatar, BufferedImage> bodyMonoImageMap;
+
+ private BufferedImage graveImage;
+ private BufferedImage graveBodyImage;
/**
- * COnstructor.
+ * Constructor.
*
* @param land 国
*/
public AvatarPics(Land land){
super();
+
+ Objects.nonNull(land);
this.land = land;
+
+ this.faceImageMap = new HashMap<>();
+ this.bodyImageMap = new HashMap<>();
+ this.faceMonoImageMap = new HashMap<>();
+ this.bodyMonoImageMap = new HashMap<>();
+
+ this.graveImage = null;
+ this.graveBodyImage = null;
+
return;
}
}
/**
+ * Avatarの顔イメージを設定する。
+ *
+ * @param avatar Avatar
+ * @param image イメージ
+ */
+ public void setAvatarFaceImage(Avatar avatar, BufferedImage image){
+ this.faceImageMap.remove(avatar);
+ this.faceMonoImageMap.remove(avatar);
+ this.faceImageMap.put(avatar, image);
+ return;
+ }
+
+ /**
* Avatarの全身像イメージを返す。
*
* @param avatar Avatar
}
/**
+ * Avatarの全身像イメージを設定する。
+ *
+ * @param avatar Avatar
+ * @param image イメージ
+ */
+ public void setAvatarBodyImage(Avatar avatar, BufferedImage image){
+ this.bodyImageMap.remove(avatar);
+ this.bodyMonoImageMap.remove(avatar);
+ this.bodyImageMap.put(avatar, image);
+ return;
+ }
+
+ /**
* 各国URLテンプレートと通し番号から
* イメージをダウンロードする。
*
}
/**
- * 国に登録された墓イメージを返す。
+ * 国別の墓イメージを返す。
*
* @return 墓イメージ
*/
public BufferedImage getGraveImage(){
+ if(this.graveImage != null) return this.graveImage;
+
BufferedImage result = this.land.getGraveIconImage();
+ this.graveImage = result;
+
return result;
}
/**
- * 国に登録された墓イメージ(大)を返す。
+ * 墓イメージを設定する。
+ *
+ * @param image イメージ
+ */
+ public void setGraveImage(BufferedImage image){
+ this.graveImage = image;
+ return;
+ }
+
+ /**
+ * 国別の墓イメージ(大)を返す。
*
* @return 墓イメージ(大)
*/
public BufferedImage getGraveBodyImage(){
+ if(this.graveBodyImage != null) return this.graveBodyImage;
+
BufferedImage result = this.land.getGraveBodyImage();
+ this.graveBodyImage = result;
+
return result;
}
+ /**
+ * 墓イメージ(大)を設定する。
+ *
+ * @param image イメージ
+ */
+ public void setGraveBodyImage(BufferedImage image){
+ this.graveBodyImage = image;
+ return;
+ }
+
+ /**
+ * 全画像のキャッシュへの格納を試みる。
+ */
+ public void preload(){
+ for(Avatar avatar : Avatar.getPredefinedAvatarList()){
+ getAvatarFaceImage(avatar);
+ getAvatarBodyImage(avatar);
+ getAvatarFaceMonoImage(avatar);
+ getAvatarBodyMonoImage(avatar);
+ getGraveImage();
+ getGraveBodyImage();
+ }
+ }
+
}