package magic.model.player; import java.util.Properties; import magic.ai.MagicAIImpl; import magic.translate.StringContext; import magic.translate.MText; import magic.utility.SortedProperties; public class AiProfile extends PlayerProfile { // translatable strings @StringContext(eg = "AI: minimax") private static final String _S1 = "AI : %s"; private static final String _S2 = "Level: %d Extra Life: %d"; @StringContext(eg = "Mini Max, level 6 AI (MMAB)") private static final String _S3 = "%s, level %d AI (%s)"; private static final String PLAYER_TYPE = "ai"; private static final String KEY_EXTRA_LIFE = "extraLife"; private static final String KEY_AI_LEVEL = "aiLevel"; private static final String KEY_AI_TYPE = "aiType"; private static final int DEFAULT_EXTRA_LIFE = 0; private static final int DEFAULT_AI_LEVEL = 6; private static final MagicAIImpl DEFAULT_AI_TYPE = MagicAIImpl.MMAB; private int extraLife = DEFAULT_EXTRA_LIFE; private int aiLevel = DEFAULT_AI_LEVEL; private MagicAIImpl aiType = DEFAULT_AI_TYPE; public AiProfile(final String profileId) { super(profileId); loadProperties(); } public AiProfile() { loadProperties(); } public static AiProfile create(final MagicAIImpl aiImpl, final int level) { return create(aiImpl.name(), aiImpl, level); } public static AiProfile create(final String name, final MagicAIImpl aiImpl, final int level) { final AiProfile ap = new AiProfile(); ap.setPlayerName(name); ap.setAiType(aiImpl); ap.setAiLevel(level); return ap; } public int getExtraLife() { return extraLife; } public void setExtraLife(final int value) { extraLife = value; } public int getAiLevel() { return aiLevel; } public void setAiLevel(final int value) { aiLevel = value; } public MagicAIImpl getAiType() { return aiType; } public void setAiType(final MagicAIImpl value) { aiType = value; } @Override public void save() { final Properties properties = new SortedProperties(); properties.setProperty(KEY_EXTRA_LIFE, String.valueOf(getExtraLife())); properties.setProperty(KEY_AI_LEVEL, String.valueOf(getAiLevel())); properties.setProperty(KEY_AI_TYPE, getAiType().name()); saveProperties(properties); } @Override protected void loadProperties() { final Properties properties = loadPlayerProperties(); extraLife = Integer.parseInt(properties.getProperty(KEY_EXTRA_LIFE, Integer.toString(DEFAULT_EXTRA_LIFE))); aiLevel = Integer.parseInt(properties.getProperty(KEY_AI_LEVEL, Integer.toString(DEFAULT_AI_LEVEL))); aiType = MagicAIImpl.valueOf(properties.getProperty(KEY_AI_TYPE, DEFAULT_AI_TYPE.name())); } @Override protected String getPlayerType() { return PLAYER_TYPE; } @Override public String getPlayerTypeLabel() { return MText.get(_S1, getAiType()); } @Override public String getPlayerAttributeLabel() { return MText.get(_S2, getAiLevel(), getExtraLife()); } @Override public String getPlayerLabel() { return MText.get(_S3, getPlayerName(), getAiLevel(), getAiType().name()); } }