package com.volmit.iris.util; public class ShurikenQueue implements Queue { private KList queue; private boolean randomPop; private boolean reversePop; public ShurikenQueue() { clear(); } public ShurikenQueue responsiveMode() { reversePop = true; return this; } public ShurikenQueue randomMode() { randomPop = true; return this; } @Override public ShurikenQueue queue(T t) { queue.add(t); return this; } @Override public ShurikenQueue queue(KList t) { queue.add(t); return this; } @Override public boolean hasNext(int amt) { return queue.size() >= amt; } @Override public boolean hasNext() { return !queue.isEmpty(); } @Override public T next() { return reversePop ? queue.popLast() : randomPop ? queue.popRandom() : queue.pop(); } @Override public KList next(int amt) { KList t = new KList<>(); for(int i = 0; i < amt; i++) { if(!hasNext()) { break; } t.add(next()); } return t; } @Override public ShurikenQueue clear() { queue = new KList(); return this; } @Override public int size() { return queue.size(); } @Override public boolean contains(T p) { return queue.contains(p); } }