00001 /* $Id: ai_tilelist.hpp 16531 2009-06-07 15:26:33Z rubidium $ */ 00002 00005 #ifndef AI_TILELIST_HPP 00006 #define AI_TILELIST_HPP 00007 00008 #include "ai_abstractlist.hpp" 00009 #include "ai_station.hpp" 00010 00015 class AITileList : public AIAbstractList { 00016 public: 00017 static const char *GetClassName() { return "AITileList"; } 00018 00019 private: 00026 void FixRectangleSpan(TileIndex &t1, TileIndex &t2); 00027 00028 public: 00036 void AddRectangle(TileIndex tile_from, TileIndex tile_to); 00037 00043 void AddTile(TileIndex tile); 00044 00052 void RemoveRectangle(TileIndex tile_from, TileIndex tile_to); 00053 00059 void RemoveTile(TileIndex tile); 00060 }; 00061 00067 class AITileList_IndustryAccepting : public AITileList { 00068 public: 00069 static const char *GetClassName() { return "AITileList_IndustryAccepting"; } 00070 00077 AITileList_IndustryAccepting(IndustryID industry_id, int radius); 00078 }; 00079 00085 class AITileList_IndustryProducing : public AITileList { 00086 public: 00087 static const char *GetClassName() { return "AITileList_IndustryProducing"; } 00088 00095 AITileList_IndustryProducing(IndustryID industry_id, int radius); 00096 }; 00097 00103 class AITileList_StationType : public AITileList { 00104 public: 00105 static const char *GetClassName() { return "AITileList_StationType"; } 00106 00111 AITileList_StationType(StationID station_id, AIStation::StationType station_type); 00112 }; 00113 00114 #endif /* AI_TILELIST_HPP */