00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef fieldmarkerH
00023 #define fieldmarkerH
00024
00025 #include "../paradialog.h"
00026
00027 class MapDisplayPG;
00028 class OverviewMapPanel;
00029 class GameMap;
00030
00031 class SelectFromMap : public ASC_PG_Dialog{
00032 private:
00033 MapDisplayPG* md;
00034 OverviewMapPanel* omp;
00035
00036 PG_ListBox* listbox;
00037 bool justOne;
00038 bool readOnly;
00039
00040 bool markField2( const MapCoordinate& pos, const SPoint& mouse, bool cursorChanged, int button, int prio );
00041 int oldprio;
00042
00043 public:
00044 typedef vector<MapCoordinate> CoordinateList;
00045 protected:
00046 GameMap* actmap;
00047 CoordinateList& coordinateList;
00048
00049 bool ProcessEvent ( const SDL_Event * event,bool bModal = false );
00050 virtual bool accept( const MapCoordinate& pos );
00051 virtual void showFieldMarking( const CoordinateList& coordinateList );
00052 virtual bool mark();
00053 virtual bool markField( const MapCoordinate& pos );
00054 bool eventKeyDown (const SDL_KeyboardEvent *key);
00055 void updateList();
00056 bool listItemClicked( PG_ListBoxBaseItem* item );
00057 virtual bool isOk() { return true; };
00058 bool closeDialog() { if ( isOk()) QuitModal(); return true; };
00059 public:
00060 SelectFromMap( CoordinateList& list, GameMap* map, bool justOne = false, bool readOnly = false );
00061 void Show( bool fade = false );
00062 ~SelectFromMap();
00063
00064 };
00065
00066
00067 class SelectBuildingFromMap : public SelectFromMap {
00068 protected:
00069 virtual bool accept( const MapCoordinate& pos );
00070 virtual bool isOk() { return !coordinateList.empty(); };
00071 public:
00072 SelectBuildingFromMap ( CoordinateList& list, GameMap* map ) : SelectFromMap ( list, map, true ) {};
00073 };
00074
00075 class SelectUnitFromMap : public SelectFromMap {
00076 protected:
00077 virtual bool accept( const MapCoordinate& pos );
00078 virtual bool isOk() { return !coordinateList.empty(); };
00079 public:
00080 SelectUnitFromMap ( CoordinateList& list, GameMap* map ) : SelectFromMap ( list, map, true ) {};
00081 };
00082
00083
00084
00085
00086 #endif
00087