package com.clearlyspam23.GLE.basic.layers.tile.edit.commands;
import java.util.ArrayList;
import java.util.List;
import org.piccolo2d.PCamera;
import org.piccolo2d.event.PInputEvent;
import com.clearlyspam23.GLE.basic.layers.tile.TileData;
import com.clearlyspam23.GLE.basic.layers.tile.edit.TileLayerEditManager;
import com.clearlyspam23.GLE.basic.layers.tile.edit.actions.PlaceTileAction;
import com.clearlyspam23.GLE.basic.layers.tile.gui.TilePNode;
import com.clearlyspam23.GLE.util.Pair;
public class PlaceTileCommand extends TileDragCommand {
protected List<Pair<TilePNode, TileData>> replacedList;
public PlaceTileCommand(TileLayerEditManager data){
super(data);
}
protected void setTile(TilePNode tile, PCamera cam){
if(data.getSelectedTile()==null)
return;
replacedList.add(new Pair<TilePNode, TileData>(tile, tile.getTileData()));
tile.setTileset(data.getCurrentTileset(), data.getSelectedX(), data.getSelectedY());
}
private boolean aChangeExists(){
for(Pair<TilePNode, TileData> p : replacedList){
if(!p.second.equals(data.getCurrentTileset(), data.getSelectedX(), data.getSelectedY()))
return true;
}
return false;
}
@Override
protected void onFinish(PInputEvent event) {
if(aChangeExists()){
PlaceTileAction action = new PlaceTileAction(replacedList, new TileData(data.getCurrentTileset(), data.getSelectedX(), data.getSelectedY()));
data.registerEditAction(action);
}
}
@Override
protected boolean onStart(PInputEvent event) {
replacedList = new ArrayList<Pair<TilePNode, TileData>>();
return true;
}
}