package rts.core.engine.ingamegui; import java.util.ArrayList; import org.luaj.vm2.lib.OneArgFunction; import org.luaj.vm2.LuaValue; import org.luaj.vm2.LuaError; import org.luawars.Log; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; public class GuiPanel { private ArrayList<GuiButton> buttons; private ArrayList<GuiButton> waitingList; private GuiMenu menu; private int id; private int buildLimit; private int x; private int y; public GuiPanel(GuiMenu menu, int id) { this.menu = menu; this.id = id; buttons = new ArrayList<GuiButton>(); waitingList = new ArrayList<GuiButton>(); } // TRUNG NGUYEN public ArrayList<GuiButton> getButtons() { return buttons; } public void setLocation(int x, int y) { this.x = x; this.y = y; for (int i = 0; i < buttons.size(); i++) { buttons.get(i).setLocation(x + ((i % 3) * 60), y + ((i / 3) * 60)); } } // TO ADD MOUSE PRESSES BACK UNCOMMENT THIS public void mousePressed(int x, int y) { for (int i = 0; i < buttons.size(); i++) { if (buttons.get(i).isMouseOver(x, y) && buttons.get(i).isEnable()) { //buttons.get(i).launchCreateEntityProcess(); } } } public void addButton(GuiButton button) { button.setPanel(this); button.setLocation(x + ((buttons.size() % 3) * 60), y + ((buttons.size() / 3) * 60)); buttons.add(button); } public void addButtonToWait(GuiButton button) { waitingList.add(button); } public void render(GameContainer container, Graphics g) { for (int i = 0; i < buttons.size(); i++) { buttons.get(i).render(container, g); } for (int i = 0; i < buttons.size(); i++) { buttons.get(i).renderInfo(container, g); } } @Override public String toString() { return "GuiPanel{" + "id=" + id + '}'; } public void update(ArrayList<Integer> buildingList, int delta, boolean visible) { boolean oneProcessReady = false; for (int i = 0; i < buttons.size(); i++) { buttons.get(i).checkEnable(buildingList, delta, visible); if (visible) buttons.get(i).checkCancelProcess(); if (!oneProcessReady && buttons.get(i).hasProcessReady()) { oneProcessReady = true; } } // update only the waiting process for (int i = 0; i < buildLimit; i++) { if (i < waitingList.size()) { if (waitingList.get(i).update(delta)) { waitingList.remove(i); } } else { break; } } if (oneProcessReady) { menu.blinkButton(id, delta); } else { menu.stopBlinkButton(id); } } public void increaseBuildLimit(int increase) { buildLimit += increase; } public void decreaseBuildLimit(int decrease) { buildLimit -= decrease; } public void clear() { buildLimit = 0; waitingList.clear(); for (int i = 0; i < buttons.size(); i++) { buttons.get(i).clear(); } } }