package io.mazenmc.skypebot.game.uno;
import com.samczsun.skype4j.user.User;
import io.mazenmc.skypebot.utils.Resource;
import io.mazenmc.skypebot.utils.Utils;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class UnoGame {
private boolean finished;
private Map<String, Deck> decks = new LinkedHashMap<>(); // TODO change to queue
private int playerPosition = 0;
private Card topCard;
public UnoGame() {
topCard = randomCard();
}
public Deck deckFor(User user) {
return decks.get(user.getUsername());
}
public int position() {
return playerPosition;
}
public void next() {
if (playerPosition >= (decks.size() - 1)) {
playerPosition = 0;
return;
}
playerPosition++;
for (Map.Entry<String, Deck> entry : decks.entrySet()) {
try {
User user = Utils.getUser(entry.getKey());
user.getChat().sendMessage("Your deck:");
user.getChat().sendMessage(entry.getValue().toString());
} catch (Exception ignored) {
}
}
// TODO more messages
}
public Map.Entry<String, Deck> current() {
return new LinkedList<>(decks.entrySet()).get(playerPosition);
}
public Map.Entry<String, Deck> peek() {
return new LinkedList<>(decks.entrySet()).get((playerPosition >= (decks.size() - 1)) ? 0 : playerPosition + 1);
}
public void reverse() {
List<Map.Entry<String, Deck>> old = new LinkedList<>(decks.entrySet());
decks = new LinkedHashMap<>();
for (int i = old.size() - 1; i >= 0; i--) {
Map.Entry<String, Deck> entry = old.get(i);
decks.put(entry.getKey(), entry.getValue());
}
}
public Card topCard() {
return topCard;
}
public Card addCard(Card card) {
Card old = topCard;
topCard = card;
Resource.sendMessage("Card in play " + card.toString());
return old;
}
public Card randomCard() {
Color c = Color.randomColor();
return new Card(c, Face.randomFace(c));
}
}