src/main/java/stellics/transfer/DirectShipTransfer.java
package stellics.transfer;
import java.util.ArrayList;
import java.util.List;
import com.fs.starfarer.api.campaign.FleetDataAPI;
import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
import com.fs.starfarer.api.fleet.FleetMemberAPI;
import stellics.helper.MonthlyReportHelper;
public class DirectShipTransfer extends IntelAwareTransfer implements ShipTransferAction {
private FleetDataAPI sourceFleet;
private FleetDataAPI targetFleet;
private SubmarketAPI storage;
public DirectShipTransfer(FleetDataAPI sourceFleet, FleetDataAPI targetFleet, SubmarketAPI storage) {
this.sourceFleet = sourceFleet;
this.targetFleet = targetFleet;
this.storage = storage;
}
@Override
public List<FleetMemberAPI> getSource() {
return sourceFleet.getMembersInPriorityOrder();
}
@Override
public void transfer(List<FleetMemberAPI> fleet) {
List<FleetMemberAPI> fleetCopy = filterFlagship(fleet);
if (fleetCopy.isEmpty()) {
return;
}
MonthlyReportHelper.registerShipsTransfer(storage.getMarket(), fleetCopy);
transferShips(fleetCopy);
fireIntel(fleetCopy, storage.getMarket());
}
private List<FleetMemberAPI> filterFlagship(List<FleetMemberAPI> fleet) {
List<FleetMemberAPI> fleetCopy = new ArrayList<FleetMemberAPI>(fleet);
for (FleetMemberAPI f : fleet) {
if (f.getCaptain().isPlayer()) {
fleetCopy.remove(f);
}
}
return fleetCopy;
}
private void transferShips(List<FleetMemberAPI> fleetMembers) {
for (FleetMemberAPI fleetMember : fleetMembers) {
fleetMember.setCaptain(null);
sourceFleet.removeFleetMember(fleetMember);
targetFleet.addFleetMember(fleetMember);
}
}
protected String getToOrFrom() {
FleetDataAPI storageFleet = storage.getCargo().getMothballedShips();
if (storageFleet == targetFleet) {
return "to";
}
return "from";
}
}