package com.cardshifter.modapi.cards; import com.cardshifter.modapi.base.ComponentRetriever; import com.cardshifter.modapi.base.ECSGame; import com.cardshifter.modapi.base.ECSSystem; import com.cardshifter.modapi.base.Entity; import com.cardshifter.modapi.base.PlayerComponent; public class DrawStartCards implements ECSSystem { private final int count; public DrawStartCards(int i) { this.count = i; } @Override public void startGame(ECSGame game) { for (Entity entity : game.getEntitiesWithComponent(PlayerComponent.class)) { for (int i = 0; i < this.count; i++) { drawCard(entity); } } } private static final ComponentRetriever<DeckComponent> decks = ComponentRetriever.retreiverFor(DeckComponent.class); private static final ComponentRetriever<HandComponent> hands = ComponentRetriever.retreiverFor(HandComponent.class); private static final ComponentRetriever<CardComponent> card = ComponentRetriever.retreiverFor(CardComponent.class); public static void drawCard(Entity entity) { DeckComponent deck = decks.get(entity); HandComponent hand = hands.get(entity); if (deck.isEmpty()) { entity.getGame().getEvents().executePostEvent(new DrawCardFailedEvent(entity)); } else { Entity cardToDraw = deck.getTopCard(); CardComponent topCard = card.get(deck.getTopCard()); entity.getGame().executeCancellableEvent(new DrawCardEvent(cardToDraw, entity, deck, hand), () -> topCard.moveToBottom(hand)); } } }