package net.scapeemulator.game.model.player.bank;
import static net.scapeemulator.game.model.player.bank.BankTab.TAB_ALL;
import static net.scapeemulator.game.model.player.bank.BankTab.TAB_NINE;
import static net.scapeemulator.game.model.player.bank.BankTab.TAB_TWO;
public class BankSettings {
private BankTab openTab = TAB_ALL;
private int[] tabStarts;
private int lastX;
public BankSettings() {
tabStarts = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
lastX = 1;
}
public BankTab getOpenTab() {
return openTab;
}
public void setOpenTab(BankTab openTab) {
this.openTab = openTab;
}
public void setTabStarts(int[] tabStarts) {
if (tabStarts.length != this.tabStarts.length) {
throw new IllegalArgumentException("illegal amount of tab start ids for bank settings");
}
this.tabStarts = tabStarts;
}
public void setLastX(int lastX) {
this.lastX = lastX;
}
public int getLastX() {
return lastX;
}
BankTab getTab(int index) {
for (int i = 1; i < tabStarts.length; i++) {
if (tabStarts[i] > index) {
return BankTab.forIndex(i - 1);
}
}
return TAB_ALL;
}
void incrementTabStarts(BankTab from) {
if (from == TAB_ALL) {
return;
}
for (int i = from.index() + 1; i < tabStarts.length; i++) {
tabStarts[i]++;
}
}
void decrementTabStarts(BankTab from) {
if (from == TAB_ALL) {
return;
}
for (int i = from.index() + 1; i < tabStarts.length; i++) {
tabStarts[i]--;
}
if (getTabSize(from) == 0) {
for (int i = from.index(); i < TAB_NINE.index(); i++) {
tabStarts[i] = tabStarts[i + 1];
}
tabStarts[TAB_NINE.index()] = tabStarts[TAB_ALL.index()];
}
}
BankTab createTab() {
for (int tab = TAB_TWO.index(); tab < TAB_ALL.index(); tab++) {
if (tabStarts[tab] == tabStarts[TAB_ALL.index()]) {
tabStarts[tab] = (tab == TAB_TWO.index()) ? 0 : tabStarts[tab - 1] + getTabSize(BankTab.forIndex(tab - 1));
return BankTab.forIndex(tab);
}
}
return null;
}
int getTabStart(BankTab tab) {
return tabStarts[tab.index()];
}
int getTabSize(BankTab tab) {
if (tab == TAB_ALL) {
throw new IndexOutOfBoundsException("Cannot get tab size for main tab");
}
return tabStarts[tab.index() + 1] - tabStarts[tab.index()];
}
}