public ShipStrategyType getOutputShipStrategy(int outputNum) { // check how many outputs are encoded in the config final int outputCnt = this.config.getInteger(OUTPUTS_NUM, -1); if (outputCnt < 1) { throw new CorruptConfigurationException( "No output ship strategies are specified in the configuration."); } // sanity range checks if (outputNum < 0 || outputNum >= outputCnt) { throw new IllegalArgumentException("Invalid index for output shipping strategy."); } final int strategy = this.config.getInteger(OUTPUT_SHIP_STRATEGY_PREFIX + outputNum, -1); if (strategy == -1) { throw new CorruptConfigurationException( "No output shipping strategy in configuration for output " + outputNum); } else if (strategy < 0 || strategy >= ShipStrategyType.values().length) { throw new CorruptConfigurationException( "Illegal output shipping strategy in configuration for output " + outputNum + ": " + strategy); } else { return ShipStrategyType.values()[strategy]; } }
public void addOutputShipStrategy(ShipStrategyType strategy) { final int outputCnt = this.config.getInteger(OUTPUTS_NUM, 0); this.config.setInteger(OUTPUT_SHIP_STRATEGY_PREFIX + outputCnt, strategy.ordinal()); this.config.setInteger(OUTPUTS_NUM, outputCnt + 1); }