truelight@9592: #include "ai_tilelist.hpp" truelight@9592: truelight@9592: void AITileList::FixRectangleSpan(TileIndex &t1, TileIndex &t2) truelight@9592: { truelight@9592: uint x1 = ::TileX(t1); truelight@9592: uint x2 = ::TileX(t2); truelight@9592: truelight@9592: uint y1 = ::TileY(t1); truelight@9592: uint y2 = ::TileY(t2); truelight@9592: truelight@9592: if (x1 >= x2) ::Swap(x1, x2); truelight@9592: if (y1 >= y2) ::Swap(y1, y2); truelight@9592: truelight@9592: t1 = ::TileXY(x1, y1); truelight@9592: t2 = ::TileXY(x2, y2); truelight@9592: } truelight@9592: truelight@9592: void AITileList::AddRectangle(TileIndex t1, TileIndex t2) truelight@9592: { truelight@9592: if (!IsValidTile(t1) || !IsValidTile(t2)) return; truelight@9592: truelight@9592: this->FixRectangleSpan(t1, t2); truelight@9592: truelight@9592: uint w = TileX(t2) - TileX(t1) + 1; truelight@9592: uint h = TileY(t2) - TileY(t1) + 1; truelight@9592: truelight@9592: BEGIN_TILE_LOOP(t, w, h, t1) { truelight@9592: this->AddItem(t); truelight@9592: } END_TILE_LOOP(t, w, h, t1) truelight@9592: } truelight@9592: truelight@9592: void AITileList::AddTile(TileIndex tile) truelight@9592: { truelight@9592: if (!IsValidTile(tile)) return; truelight@9592: truelight@9592: this->AddItem(tile); truelight@9592: } truelight@9592: truelight@9592: void AITileList::RemoveRectangle(TileIndex t1, TileIndex t2) truelight@9592: { truelight@9592: if (!IsValidTile(t1) || !IsValidTile(t2)) return; truelight@9592: truelight@9592: this->FixRectangleSpan(t1, t2); truelight@9592: truelight@9592: uint w = TileX(t2) - TileX(t1) + 1; truelight@9592: uint h = TileY(t2) - TileY(t1) + 1; truelight@9592: truelight@9592: BEGIN_TILE_LOOP(t, w, h, t1) { truelight@9592: this->RemoveItem(t); truelight@9592: } END_TILE_LOOP(t, w, h, t1) truelight@9592: } truelight@9592: truelight@9592: void AITileList::RemoveTile(TileIndex tile) truelight@9592: { truelight@9592: if (!IsValidTile(tile)) return; truelight@9592: truelight@9592: this->RemoveItem(tile); truelight@9592: }