mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
Code clean
This commit is contained in:
parent
1dea98cf1f
commit
6882a9a49e
6 changed files with 56 additions and 33 deletions
|
|
@ -280,27 +280,37 @@ public enum TokenRepository {
|
|||
/**
|
||||
* Try to find random image info by related set code
|
||||
*
|
||||
* @param className full class name of the token or other object
|
||||
* @param setCode primary set code for possible image
|
||||
* @param possibleList all possible tokens e.g. by clas name
|
||||
* @param preferredSetCode primary set code for possible image (if not found then will use any set)
|
||||
* @return
|
||||
*/
|
||||
public TokenInfo generateTokenInfoBySetCode(String className, String setCode) {
|
||||
private TokenInfo findPreferredTokenInfo(List<TokenInfo> possibleList, String preferredSetCode) {
|
||||
// search by set code
|
||||
List<TokenInfo> possibleInfo = TokenRepository.instance.getByClassName(className)
|
||||
.stream()
|
||||
.filter(info -> info.getSetCode().equals(setCode))
|
||||
List<TokenInfo> needList = possibleList.stream()
|
||||
.filter(info -> info.getSetCode().equals(preferredSetCode))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// search by random set
|
||||
if (possibleInfo.isEmpty()) {
|
||||
possibleInfo = new ArrayList<>(TokenRepository.instance.getByClassName(className));
|
||||
// search by all sets
|
||||
if (needList.isEmpty()) {
|
||||
needList = possibleList;
|
||||
}
|
||||
|
||||
// also weill return diff image number for tokens
|
||||
if (possibleInfo.size() > 0) {
|
||||
return RandomUtil.randomFromCollection(possibleInfo);
|
||||
// also will return diff image number for tokens
|
||||
if (needList.size() > 0) {
|
||||
return RandomUtil.randomFromCollection(needList);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to find random image info by related set code
|
||||
*
|
||||
* @param className full class name of the token or other object
|
||||
* @param preferredSetCode primary set code for possible image (if not found then will use any set)
|
||||
* @return
|
||||
*/
|
||||
public TokenInfo findPreferredTokenInfoForClass(String className, String preferredSetCode) {
|
||||
return findPreferredTokenInfo(TokenRepository.instance.getByClassName(className), preferredSetCode);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public abstract class Emblem extends CommandObjectImpl {
|
|||
this.sourceObject = sourceObject;
|
||||
|
||||
// choose set code due source
|
||||
TokenInfo foundInfo = TokenRepository.instance.generateTokenInfoBySetCode(this.getClass().getName(), sourceObject.getExpansionSetCode());
|
||||
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForClass(this.getClass().getName(), sourceObject.getExpansionSetCode());
|
||||
if (foundInfo != null) {
|
||||
this.setExpansionSetCode(foundInfo.getSetCode());
|
||||
this.setCardNumber("");
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public abstract class Plane extends CommandObjectImpl {
|
|||
this.sourceObject = null;
|
||||
|
||||
// choose set code due source
|
||||
TokenInfo foundInfo = TokenRepository.instance.generateTokenInfoBySetCode(this.getClass().getName(), null);
|
||||
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForClass(this.getClass().getName(), null);
|
||||
if (foundInfo != null) {
|
||||
this.setExpansionSetCode(foundInfo.getSetCode());
|
||||
this.setCardNumber("");
|
||||
|
|
|
|||
|
|
@ -21,9 +21,11 @@ import mage.game.events.CreatedTokensEvent;
|
|||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.PermanentToken;
|
||||
import mage.game.permanent.token.custom.CreatureToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
|
|
@ -175,12 +177,16 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
}
|
||||
|
||||
// search by set code
|
||||
TokenInfo foundInfo = TokenRepository.instance.generateTokenInfoBySetCode(token.getClass().getName(), setCode);
|
||||
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForClass(token.getClass().getName(), setCode);
|
||||
if (foundInfo != null) {
|
||||
return foundInfo;
|
||||
}
|
||||
|
||||
// TODO: implement auto-generate images for CreatureToken (search public tokens for same characteristics)
|
||||
// auto-image for creature token (it's a private token without official image, so try to find same paper image)
|
||||
if (token instanceof CreatureToken) {
|
||||
// TODO: return default creature token image
|
||||
}
|
||||
|
||||
// TODO: implement Copy image
|
||||
// TODO: implement Manifest image
|
||||
// TODO: implement Morph image
|
||||
|
|
@ -605,4 +611,18 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
public boolean isEntersTransformed() {
|
||||
return this.entersTransformed && this.backFace != null;
|
||||
}
|
||||
|
||||
public static TokenImpl createTokenByClassName(String fullClassName) {
|
||||
try {
|
||||
Class<?> c = Class.forName(fullClassName);
|
||||
Constructor<?> cons = c.getConstructor();
|
||||
Object newToken = cons.newInstance();
|
||||
if (newToken instanceof Token) {
|
||||
return (TokenImpl) newToken;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// ignore error
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue