package com.cardshifter.gdx.ui.zones;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.IntSet;
import com.cardshifter.api.outgoing.CardInfoMessage;
import com.cardshifter.api.outgoing.ZoneMessage;
import com.cardshifter.gdx.ui.cards.CardView;
public abstract class ZoneView {
protected final IntSet entities = new IntSet();
private final int id;
private final int owner;
private final String name;
public ZoneView(ZoneMessage message) {
this.id = message.getId();
this.entities.addAll(message.getEntities());
this.owner = message.getOwner();
this.name = message.getName();
}
public final CardView addCard(CardInfoMessage message) {
this.entities.add(message.getId());
return onAddCard(message);
}
protected abstract CardView onAddCard(CardInfoMessage message);
protected void onRemoveCard(int id) { }
public abstract Actor getActor();
public final void removeCard(int id) {
this.entities.remove(id);
this.onRemoveCard(id);
}
public boolean hasCard(int id) {
return entities.contains(id);
}
}