2011-05-13 04:24:42 -04:00
|
|
|
package org.moparscape.msc.gs.model;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.ListIterator;
|
|
|
|
|
2012-04-24 20:10:43 -04:00
|
|
|
import org.moparscape.msc.config.Config;
|
|
|
|
|
2011-04-27 01:44:26 -04:00
|
|
|
public class Bank {
|
2011-06-25 01:44:53 -04:00
|
|
|
/**
|
|
|
|
* The maximum size of a bank
|
|
|
|
*/
|
2012-04-24 20:10:43 -04:00
|
|
|
public static int BANK_SIZE = Config.members == true ? 198 : 48;
|
|
|
|
|
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
private ArrayList<InvItem> list = new ArrayList<InvItem>();
|
|
|
|
|
|
|
|
public Bank() {
|
|
|
|
}
|
|
|
|
|
|
|
|
public int add(InvItem item) {
|
|
|
|
if (item.getAmount() <= 0) {
|
|
|
|
return -1;
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|
2011-06-25 01:44:53 -04:00
|
|
|
for (int index = 0; index < list.size(); index++) {
|
|
|
|
if (item.equals(list.get(index))) {
|
|
|
|
list.get(index).setAmount(
|
|
|
|
list.get(index).getAmount() + item.getAmount());
|
|
|
|
return index;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
list.add(item);
|
|
|
|
return list.size() - 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean canHold(ArrayList<InvItem> items) {
|
2012-04-24 20:10:43 -04:00
|
|
|
return (BANK_SIZE - list.size()) >= getRequiredSlots(items);
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
public boolean canHold(InvItem item) {
|
2012-04-24 20:10:43 -04:00
|
|
|
return (BANK_SIZE - list.size()) >= getRequiredSlots(item);
|
2011-06-25 01:44:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean contains(InvItem i) {
|
|
|
|
return list.contains(i);
|
|
|
|
}
|
|
|
|
|
|
|
|
public int countId(int id) {
|
|
|
|
for (InvItem i : list) {
|
|
|
|
if (i.getID() == id) {
|
|
|
|
return i.getAmount();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean full() {
|
2012-04-24 20:10:43 -04:00
|
|
|
return list.size() >= BANK_SIZE;
|
2011-06-25 01:44:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
public InvItem get(int index) {
|
|
|
|
if (index < 0 || index >= list.size()) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return list.get(index);
|
|
|
|
}
|
|
|
|
|
|
|
|
public InvItem get(InvItem item) {
|
|
|
|
for (InvItem i : list) {
|
|
|
|
if (item.equals(i)) {
|
|
|
|
return i;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getFirstIndexById(int id) {
|
|
|
|
for (int index = 0; index < list.size(); index++) {
|
|
|
|
if (list.get(index).getID() == id) {
|
|
|
|
return index;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
public ArrayList<InvItem> getItems() {
|
|
|
|
return list;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getRequiredSlots(InvItem item) {
|
|
|
|
return (list.contains(item) ? 0 : 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getRequiredSlots(List<InvItem> items) {
|
|
|
|
int requiredSlots = 0;
|
|
|
|
for (InvItem item : items) {
|
|
|
|
if (list.contains(item)) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
requiredSlots++;
|
|
|
|
}
|
|
|
|
return requiredSlots;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean hasItemId(int id) {
|
|
|
|
for (InvItem i : list) {
|
|
|
|
if (i.getID() == id)
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ListIterator<InvItem> iterator() {
|
|
|
|
return list.listIterator();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void remove(int index) {
|
|
|
|
InvItem item = get(index);
|
|
|
|
if (item == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
remove(item.getID(), item.getAmount());
|
|
|
|
}
|
|
|
|
|
|
|
|
public int remove(int id, int amount) {
|
|
|
|
Iterator<InvItem> iterator = list.iterator();
|
|
|
|
for (int index = 0; iterator.hasNext(); index++) {
|
|
|
|
InvItem i = iterator.next();
|
|
|
|
if (id == i.getID()) {
|
|
|
|
if (amount < i.getAmount()) {
|
|
|
|
i.setAmount(i.getAmount() - amount);
|
|
|
|
} else {
|
|
|
|
iterator.remove();
|
|
|
|
}
|
|
|
|
return index;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int remove(InvItem item) {
|
|
|
|
return remove(item.getID(), item.getAmount());
|
|
|
|
}
|
|
|
|
|
|
|
|
public int size() {
|
|
|
|
return list.size();
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
}
|