initialize mandatory parameters properly, fix bug with not removing certain unusable gate types when minParameters() is above 1

This commit is contained in:
asiekierka 2014-10-30 20:06:02 +01:00
parent b997871f9a
commit 02bb70ec53
2 changed files with 20 additions and 16 deletions

View file

@ -100,30 +100,26 @@ public class ContainerGateInterface extends BuildCraftContainer {
potentialTriggers.addAll(gate.getAllValidTriggers()); potentialTriggers.addAll(gate.getAllValidTriggers());
potentialActions.addAll(gate.getAllValidActions()); potentialActions.addAll(gate.getAllValidActions());
if (gate.material.numTriggerParameters == 0) {
Iterator<IStatement> it = potentialTriggers.iterator(); Iterator<IStatement> it = potentialTriggers.iterator();
while (it.hasNext()) { while (it.hasNext()) {
IStatement trigger = it.next(); IStatement trigger = it.next();
if (trigger.minParameters() > 0) { if (trigger.minParameters() > gate.material.numTriggerParameters) {
it.remove(); it.remove();
} }
} }
}
if (gate.material.numActionParameters == 0) { it = potentialActions.iterator();
Iterator<IStatement> it = potentialActions.iterator();
while (it.hasNext()) { while (it.hasNext()) {
IStatement action = it.next(); IStatement action = it.next();
if (action.minParameters() > 0) { if (action.minParameters() > gate.material.numActionParameters) {
it.remove(); it.remove();
} }
} }
} }
}
if (gateCallback != null) { if (gateCallback != null) {
gateCallback.setGate(gate); gateCallback.setGate(gate);
} }

View file

@ -412,7 +412,11 @@ public class GuiGateInterface extends GuiAdvancedInterface {
} }
for (StatementParameterSlot p : triggerSlot.parameters) { for (StatementParameterSlot p : triggerSlot.parameters) {
container.setTriggerParameter(triggerSlot.slot, p.slot, null, true); IStatementParameter parameter = null;
if (changed != null && p.slot < changed.minParameters()) {
parameter = changed.createParameter(p.slot);
}
container.setTriggerParameter(triggerSlot.slot, p.slot, parameter, true);
} }
} else if (slot instanceof ActionSlot) { } else if (slot instanceof ActionSlot) {
ActionSlot actionSlot = (ActionSlot) slot; ActionSlot actionSlot = (ActionSlot) slot;
@ -451,7 +455,11 @@ public class GuiGateInterface extends GuiAdvancedInterface {
} }
for (StatementParameterSlot p : actionSlot.parameters) { for (StatementParameterSlot p : actionSlot.parameters) {
container.setActionParameter(actionSlot.slot, p.slot, null, true); IStatementParameter parameter = null;
if (changed != null && p.slot < changed.minParameters()) {
parameter = changed.createParameter(p.slot);
}
container.setActionParameter(actionSlot.slot, p.slot, parameter, true);
} }
} else if (slot instanceof StatementParameterSlot) { } else if (slot instanceof StatementParameterSlot) {
StatementParameterSlot paramSlot = (StatementParameterSlot) slot; StatementParameterSlot paramSlot = (StatementParameterSlot) slot;