/*
* Copyright (c) 2012 Felix Mo. All rights reserved.
*
* CitySim is published under the terms of the MIT License. See the LICENSE file for more information.
*
*/
import com.google.common.eventbus.Subscribe;
import greenfoot.*;
import java.awt.Point;
/**
* Write a description of class SelectionEventListener here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class SelectionEventListener extends CSEventListener
{
@Subscribe
public void listen(SelectionEvent event) {
CSLogger.sharedLogger().fine("Message received: " + event.message());
if (event.message() == SelectionEvent.TILES_SELECTED_FOR_ZONING) {
CSLogger.sharedLogger().fine("Pending zone op: " + Zone.pendingOp());
switch (Zone.pendingOp()) {
case ResidentialZone.TYPE_ID:
ResidentialZone.zoneTiles(event.tiles());
break;
case IndustrialZone.TYPE_ID:
IndustrialZone.zoneTiles(event.tiles());
break;
case CommercialZone.TYPE_ID:
CommercialZone.zoneTiles(event.tiles());
break;
case FireStation.TYPE_ID:
FireStation.build(event.tiles());
break;
case PoliceStation.TYPE_ID:
PoliceStation.build(event.tiles());
break;
case CoalPowerPlant.TYPE_ID:
CoalPowerPlant.build(event.tiles());
break;
case NuclearPowerPlant.TYPE_ID:
NuclearPowerPlant.build(event.tiles());
break;
case Stadium.TYPE_ID:
Stadium.build(event.tiles());
break;
default:
break;
}
}
else if (event.message() == SelectionEvent.TILE_SELECTED_FOR_POWERGRID) {
PowerLine.buildPowerLine(event.tile(), PowerGrid.activeType());
}
else if (event.message() == SelectionEvent.TILE_SELECTED_FOR_ROAD) {
Street.buildStreet(event.tile(), Road.activeType());
}
else if (event.message() == SelectionEvent.TILE_SELECTED_FOR_TOOL) {
switch (Tool.pendingOp()) {
case Bulldozer.TYPE_ID:
Bulldozer.bulldoze(event.tile());
break;
case Query.TYPE_ID:
Query.query(Data.zoneWithTile(event.tile()));
break;
default: break;
}
}
else if (event.message() == SelectionEvent.TILES_SELECTED_FOR_TOOLS) {
switch (Tool.pendingOp()) {
case Bulldozer.TYPE_ID:
Bulldozer.bulldoze(event.tiles());
break;
case Query.TYPE_ID:
Query.query(Data.zoneWithTile(event.tiles().get(0).get(0)));
break;
default: break;
}
}
else if (event.message() == SelectionEvent.TILE_SELECTED_FOR_RECREATION) {
Park.build(event.tile());
}
}
}