#ifndef _CITYDISPLAY_H
#define _CITYDISPLAY_H

#include "display.h"
#include "list.h"

class City;
class Player;
class Unit;

class CityDisplay : public WDisplay {
public:
  CityDisplay(City *c, Player *p);
  virtual ~CityDisplay();

  City *CurrCity() {return city;}

  void Update();
  void GetEvent(EventType event, int x, int y, char *data); 

  virtual void ShowPeople(int happy, int content, int goondas, int elvi, int taxmen, int scientists);
  virtual void ShowEcon(int food, int prod, int trade, int corruption, int lux, int gold, int sci);
  virtual void ShowOwnUnit(int n, Unit* unit, int food, int prod, int unhappy);
  virtual void ShowStationedUnits(Lister<ulong> units);
  virtual void ShowWorkInProgress(char *text);
  virtual void ShowBuildingProgress(char *text);
  virtual void ShowFood(char *text);
  virtual void ShowBuildings(List<charp> buildings);
  virtual void ShowSmokeStacks(int number);
  virtual void ShowResources(MapCoord coord, int food, int prod, int trade);

  friend void AllocColors(class Graphics *screen);
  friend void CityReport(Player *player);

  static int red;

protected:
  City *city;
  struct CityDisplayData *cityDisplayData;

  virtual void Setup();
  void CreateButtons();
  
  virtual ScreenCoord TranslateScreen(MapCoord coord);
  void PutIcon(CPixmap *handle,int n, int &xc, int &yc, int inc, int xlim, int xl);

  static int back, gray;
};

#endif
