package com.xenoage.zong.symbols.common;
import static com.xenoage.utils.collections.CollectionUtils.alist;
import java.util.List;
import lombok.Getter;
import com.xenoage.zong.symbols.Symbol;
import com.xenoage.zong.symbols.SymbolPool;
import com.xenoage.zong.symbols.WarningSymbol;
/**
* This class manages an array of all symbols
* that are part of the {@link CommonSymbol} enumeration,
* allowing access to them in constant time.
*
* @author Andreas Wenger
*/
public class CommonSymbolPool {
private List<Symbol> symbols;
/** The warning symbol. */
@Getter public static WarningSymbol warningSymbol;
public CommonSymbolPool(SymbolPool pool) {
symbols = alist();
for (CommonSymbol commonSymbol : CommonSymbol.values()) {
symbols.add(pool.getSymbol(commonSymbol.getID()));
}
warningSymbol = new WarningSymbol();
}
/**
* Gets the symbol belonging to the given CommonSymbol.
*/
public Symbol getSymbol(CommonSymbol commonSymbol) {
if (commonSymbol.ordinal() < symbols.size()) {
return symbols.get(commonSymbol.ordinal());
}
else {
return warningSymbol;
}
}
}