Package ch.fusun.baron.city.ui

Source Code of ch.fusun.baron.city.ui.CityDynastyTileChildrenProvider

package ch.fusun.baron.city.ui;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import ch.fusun.baron.city.City;
import ch.fusun.baron.city.api.CityService;
import ch.fusun.baron.core.injection.Inject;
import ch.fusun.baron.data.DataListener;
import ch.fusun.baron.data.DataUpdate;
import ch.fusun.baron.map.Tile;
import ch.fusun.baron.map.ui.gef.editpart.TileChild;
import ch.fusun.baron.map.ui.gef.editpart.TileChildrenProvider;
import ch.fusun.baron.player.Dynasty;
import ch.fusun.baron.player.Player;
import ch.fusun.baron.player.api.Country;
import ch.fusun.baron.player.api.PlayerService;
import ch.fusun.baron.property.api.PropertyService;

/**
* Adds a little flag to the city, corresponding to the coat of arms of the
* dynasty
*/
public class CityDynastyTileChildrenProvider implements TileChildrenProvider {

  private final transient List<DataListener> listeners = new LinkedList<DataListener>();
  private transient CityService cityService;
  @Inject
  private transient PropertyService propertyService;
  @Inject
  private transient PlayerService playerService;

  /**
   * Injection constructor
   */
  public CityDynastyTileChildrenProvider() {
  }

  /**
   * @param cityService
   *            The injected service
   */
  @Inject
  public void setCityService(CityService cityService) {
    this.cityService = cityService;
    this.cityService.addDataListener(this);
  }

  @SuppressWarnings("rawtypes")
  @Override
  public Collection<TileChild> getChildren(Tile tile) {
    City city = cityService.getCity(tile);
    Collection<TileChild> children = new ArrayList<TileChild>();
    Country country = (Country) propertyService.getOwnership(tile);
    Dynasty dynasty = playerService.getDynasty((Player) propertyService
        .getOwnership(country));
    if (city != null) {
      children.add(new CityDynastyTileChild(dynasty));
    }
    return children;
  }

  @Override
  public void addListener(DataListener listener) {
    this.listeners.add(listener);
  }

  @Override
  public void dataChanged(DataUpdate update) {
    for (DataListener listener : listeners) {
      listener.dataChanged(update);
    }
  }
}
TOP

Related Classes of ch.fusun.baron.city.ui.CityDynastyTileChildrenProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.