move StatementManager parameter handling to use getUniqueTag, for #2107

This commit is contained in:
asiekierka 2014-10-28 07:22:43 +01:00
parent 56dd1a6bdd
commit 489a3cc6f7
4 changed files with 16 additions and 18 deletions

View file

@ -22,8 +22,7 @@ import buildcraft.api.transport.IPipeTile;
public final class StatementManager {
public static Map<String, IStatement> statements = new HashMap<String, IStatement>();
public static Map<String, Class<? extends IStatementParameter>> idToParameter = new HashMap<String, Class<? extends IStatementParameter>>();
public static Map<Class<? extends IStatementParameter>, String> parameterToId = new HashMap<Class<? extends IStatementParameter>, String>();
public static Map<String, Class<? extends IStatementParameter>> parameters = new HashMap<String, Class<? extends IStatementParameter>>();
private static List<ITriggerProvider> triggerProviders = new LinkedList<ITriggerProvider>();
private static List<IActionProvider> actionProviders = new LinkedList<IActionProvider>();
@ -49,9 +48,8 @@ public final class StatementManager {
statements.put(statement.getUniqueTag(), statement);
}
public static void registerParameterClass(String name, Class<? extends IStatementParameter> param) {
idToParameter.put(name, param);
parameterToId.put(param, name);
public static void registerParameterClass(Class<? extends IStatementParameter> param) {
parameters.put(createParameter(param).getUniqueTag(), param);
}
public static List<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity entity) {
@ -126,13 +124,13 @@ public final class StatementManager {
return result;
}
public static String getParameterKind(IStatementParameter param) {
return parameterToId.get(param.getClass());
}
public static IStatementParameter createParameter(String kind) {
return createParameter(parameters.get(kind));
}
private static IStatementParameter createParameter(Class<? extends IStatementParameter> param) {
try {
return idToParameter.get(kind).newInstance();
return param.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {

View file

@ -344,10 +344,10 @@ public class BuildCraftCore extends BuildCraftMod {
NetworkIdRegistry.instance = new NetworkIdRegistry();
StatementManager.registerParameterClass("buildcraft:stackTrigger", TriggerParameterItemStack.class);
StatementManager.registerParameterClass("buildcraft:stackAction", ActionParameterItemStack.class);
StatementManager.registerParameterClass("buildcraft:pipeActionDirection", StatementParameterDirection.class);
StatementManager.registerParameterClass("buildcraft:redstoneGateSideOnly", StatementParameterRedstoneGateSideOnly.class);
StatementManager.registerParameterClass(TriggerParameterItemStack.class);
StatementManager.registerParameterClass(ActionParameterItemStack.class);
StatementManager.registerParameterClass(StatementParameterDirection.class);
StatementManager.registerParameterClass(StatementParameterRedstoneGateSideOnly.class);
StatementManager.registerTriggerProvider(new DefaultTriggerProvider());
StatementManager.registerActionProvider(new DefaultActionProvider());

View file

@ -484,8 +484,8 @@ public class BuildCraftTransport extends BuildCraftMod {
new BptItemPipeFilters(pipeItemsDiamond);
StatementManager.registerParameterClass("buildcraft:pipeWireTrigger", TriggerParameterSignal.class);
StatementManager.registerParameterClass("buildcraft:pipeWireAction", ActionParameterSignal.class);
StatementManager.registerParameterClass(TriggerParameterSignal.class);
StatementManager.registerParameterClass(ActionParameterSignal.class);
StatementManager.registerTriggerProvider(new PipeTriggerProvider());
StatementManager.registerActionProvider(new PipeActionProvider());

View file

@ -149,7 +149,7 @@ public final class Gate implements IGate {
for (int j = 0; j < material.numTriggerParameters; ++j) {
if (triggerParameters[i][j] != null) {
NBTTagCompound cpt = new NBTTagCompound();
cpt.setString("kind", StatementManager.getParameterKind(triggerParameters[i][j]));
cpt.setString("kind", triggerParameters[i][j].getUniqueTag());
triggerParameters[i][j].writeToNBT(cpt);
data.setTag("triggerParameters[" + i + "][" + j + "]", cpt);
}
@ -158,7 +158,7 @@ public final class Gate implements IGate {
for (int j = 0; j < material.numActionParameters; ++j) {
if (actionParameters[i][j] != null) {
NBTTagCompound cpt = new NBTTagCompound();
cpt.setString("kind", StatementManager.getParameterKind(actionParameters[i][j]));
cpt.setString("kind", actionParameters[i][j].getUniqueTag());
actionParameters[i][j].writeToNBT(cpt);
data.setTag("actionParameters[" + i + "][" + j + "]", cpt);
}