package org.drooms.impl.logic.commands;
import org.drooms.api.Collectible;
import org.drooms.api.GameProgressListener;
import org.drooms.api.Player;
import org.drooms.impl.logic.*;
import org.drooms.impl.logic.events.CollectibleRewardEvent;
public class CollectCollectibleCommand implements Command, PlayerRelated,
CollectibleRelated, RewardRelated {
private final Collectible toCollect;
private final Player toReward;
private final CollectibleRewardEvent event;
public CollectCollectibleCommand(final Collectible c, final Player p) {
this.toCollect = c;
this.toReward = p;
this.event = new CollectibleRewardEvent(p, c);
}
@Override
public Collectible getCollectible() {
return this.toCollect;
}
@Override
public Player getPlayer() {
return this.toReward;
}
@Override
public int getPoints() {
return this.toCollect.getPoints();
}
@Override
public void perform(final PlayerLogic logic) {
logic.notifyOfCollectibleReward(this.event);
}
@Override
public void report(final GameProgressListener report) {
report.collectibleCollected(this.getCollectible(), this.getPlayer(), this.getPoints());
}
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append("CollectCollectibleCommand [toCollect=")
.append(this.toCollect).append(", toReward=")
.append(this.toReward).append("]");
return builder.toString();
}
}