package handling.world.exped;
import client.MapleCharacter;
import client.MapleClient;
import handling.world.MapleParty;
import handling.world.MaplePartyCharacter;
import handling.world.World;
import java.util.ArrayList;
import java.util.List;
public class MapleExpedition {
private final List<Integer> parties;
private final ExpeditionType et;
private int leaderId, id;
public MapleExpedition(ExpeditionType ett, int leaderId, int id) {
this.et = ett;
this.id = id;
this.leaderId = leaderId;
this.parties = new ArrayList<>(ett.maxParty);
}
public ExpeditionType getType() {
return et;
}
public int getLeader() {
return leaderId;
}
public List<Integer> getParties() {
return parties;
}
public int getId() {
return id;
}
public int getAllMembers() {
int ret = 0;
for (int i = 0; i < parties.size(); i++) {
MapleParty pp = World.Party.getParty(parties.get(i));
if (pp == null) {
parties.remove(i);
} else {
ret += pp.getMembers().size();
}
}
return ret;
}
public final ArrayList<MapleCharacter> getExpeditionMembers(final MapleClient c) {
ArrayList<MapleCharacter> chars = new ArrayList<>();
for (int i = 0; i < parties.size(); i++) {
MapleParty pp = World.Party.getParty(parties.get(i));
if (pp == null) {
parties.remove(i);
} else {
for (MaplePartyCharacter chr : pp.getMembers()) {
chars.add(c.getChannelServer().getPlayerStorage().getCharacterById(chr.getId()));
}
}
}
return chars;
}
public int getFreeParty() {
for (int i = 0; i < parties.size(); i++) {
MapleParty pp = World.Party.getParty(parties.get(i));
if (pp == null) {
parties.remove(i);
} else if (pp.getMembers().size() < 6) {
return pp.getId();
}
}
if (parties.size() < et.maxParty) {
return 0;
}
return -1;
}
public int getIndex(final int partyId) {
for (int i = 0; i < parties.size(); i++) {
if (parties.get(i) == partyId) {
return i;
}
}
return -1;
}
public void setLeader(int newLead) {
this.leaderId = newLead;
}
}