/* * Iris is a World Generator for Minecraft Bukkit Servers * Copyright (c) 2021 Arcane Arts (Volmit Software) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ 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); } }