@Override public boolean hasDoubleHeatSinks() { return aero.getHeatType() == Aero.HEAT_DOUBLE; }
/** * Checks that the heatsink assignment is legal. Conventional fighters must * have enough heatsinks to dissipate heat from all of their energy weapons * and they may only mount standard heatsinks. * Aerospace fighters must have at least 10 heatsinks. * * @param buff * @return */ public boolean correctHeatSinks(StringBuffer buff) { if ((aero.getHeatType() != Aero.HEAT_SINGLE) && (aero.getHeatType() != Aero.HEAT_DOUBLE)) { buff.append("Invalid heatsink type! Valid types are " + Aero.HEAT_SINGLE + " and " + Aero.HEAT_DOUBLE + ". Found " + aero.getHeatType() + "."); return false; } return true; }
@Override public int getHeatCapacity(boolean includeRadicalHeatSink) { int capacity = (getHeatSinks() * (getHeatType() + 1)); if (includeRadicalHeatSink && hasWorkingMisc(MiscType.F_RADICAL_HEATSINK)) { capacity += Math.ceil(getHeatSinks() * 0.4); } return capacity; }
/** * Creates an independent heat sink part appropriate to the unit that can be used to track * needed and leftover parts for heat sinks that are not actually tracked by the unit. * * @param entity Either the original or the new unit. * @return The part corresponding to the type of heat sink for the unit. */ private Part heatSinkPart(Entity entity) { if (entity instanceof Aero) { return new AeroHeatSink(0, ((Aero) entity).getHeatType(), false, campaign); } else if (entity instanceof Mech) { Optional<Mounted> mount = entity.getMisc().stream() .filter(m -> m.getType().hasFlag(MiscType.F_HEAT_SINK) || m.getType().hasFlag(MiscType.F_DOUBLE_HEAT_SINK)) .findAny(); if (mount.isPresent()) { return new HeatSink(0, mount.get().getType(), -1, false, campaign); } } return new HeatSink(0, EquipmentType.get("Heat Sink"), -1, false, campaign); }
setModelData("si", aero.get0SI()); setModelData("hsCount", aero.getHeatType() == Aero.HEAT_DOUBLE ? aero.getOHeatSinks() + " [" + (aero.getOHeatSinks() * 2) + "]" : aero.getOHeatSinks()); setModelData("fuelPoints", aero.getFuel());
int sinkCost = 2000 + (4000 * getHeatType());// == HEAT_DOUBLE ? 6000:
while(hsinks > 0) { AeroHeatSink aHeatSink = new AeroHeatSink((int)entity.getWeight(), ((Aero)entity).getHeatType(), podhsinks > 0, campaign); addPart(aHeatSink); partsToAdd.add(aHeatSink);
blk.writeBlockData("sink_type", ((Aero)t).getHeatType()); if (((Aero)t).getPodHeatSinks() > 0) { blk.writeBlockData("omnipodheatsinks", ((Aero)t).getPodHeatSinks());