package org.dieubware.etts.model; import java.util.HashMap; import java.util.Map; import org.dieubware.etts.Observable; import java.util.Set; import org.dieubware.etts.Constants; import com.badlogic.gdx.math.Rectangle; public class Borders extends Observable { private Map<Integer, Rectangle> rightRectangles; private Map<Integer, Rectangle> leftRectangles; private Rectangle lastBorder; private int lastRemovedId; private int lastBorderId; private boolean lastBorderSide; private static int ID = 1; public Borders() { rightRectangles = new HashMap<Integer, Rectangle>(); leftRectangles = new HashMap<Integer, Rectangle>(); } public void addBorder(float x, float y, float width,float height, boolean right) { Rectangle r = new Rectangle(x,y,width, height); int id = ID++; if(!right) { id = -id; } if(right) { rightRectangles.put(id, r); } else { leftRectangles.put(id, r); } lastBorder = r; lastBorderId = id; lastBorderSide = right; setChanged(); notifyObservers(); } public void scroll(float y) { for(Integer i : rightRectangles.keySet()) { Rectangle r = rightRectangles.get(i); r.y += y; } for(Integer i : leftRectangles.keySet()) { Rectangle r = leftRectangles.get(i); r.y += y; } setChanged(); notifyObservers(); } public Set<Integer> leftKeySet() { return leftRectangles.keySet(); } public Set<Integer> rightKeySet() { return rightRectangles.keySet(); } public Rectangle get(int i) { if(i > 0) return rightRectangles.get(i); else return leftRectangles.get(i); } public Rectangle getLastBorder() { return lastBorder; } public int getLastBorderId() { return lastBorderId; } public void clear() { rightRectangles.clear(); leftRectangles.clear(); } public void clearRight() { int toRm = 0; for(Integer i : rightRectangles.keySet()) { Rectangle r = rightRectangles.get(i); if(r.y + r.height < 0) { toRm = i; } } rightRectangles.remove(toRm); lastRemovedId = toRm; setChanged(); notifyObservers(); } public void clearLeft() { int toRm = 0; for(Integer i : leftRectangles.keySet()) { Rectangle r = leftRectangles.get(i); if(r.y + r.height < 0) { toRm = i; } } leftRectangles.remove(toRm); lastRemovedId = toRm; setChanged(); notifyObservers(); } public int getLastRemovedId() { return lastRemovedId; } public boolean getLastBorderSide() { return lastBorderSide; } }