mirror of https://github.com/OpenTTD/OpenTTD
(svn r18721) -Codechange: simplify adding/removing rectangles of tiles from AITileLists
parent
740585c219
commit
9dfa2db455
|
@ -14,32 +14,13 @@
|
||||||
#include "../../industry.h"
|
#include "../../industry.h"
|
||||||
#include "../../station_base.h"
|
#include "../../station_base.h"
|
||||||
|
|
||||||
void AITileList::FixRectangleSpan(TileIndex &t1, TileIndex &t2)
|
|
||||||
{
|
|
||||||
uint x1 = ::TileX(t1);
|
|
||||||
uint x2 = ::TileX(t2);
|
|
||||||
|
|
||||||
uint y1 = ::TileY(t1);
|
|
||||||
uint y2 = ::TileY(t2);
|
|
||||||
|
|
||||||
if (x1 >= x2) ::Swap(x1, x2);
|
|
||||||
if (y1 >= y2) ::Swap(y1, y2);
|
|
||||||
|
|
||||||
t1 = ::TileXY(x1, y1);
|
|
||||||
t2 = ::TileXY(x2, y2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AITileList::AddRectangle(TileIndex t1, TileIndex t2)
|
void AITileList::AddRectangle(TileIndex t1, TileIndex t2)
|
||||||
{
|
{
|
||||||
if (!::IsValidTile(t1)) return;
|
if (!::IsValidTile(t1)) return;
|
||||||
if (!::IsValidTile(t2)) return;
|
if (!::IsValidTile(t2)) return;
|
||||||
|
|
||||||
this->FixRectangleSpan(t1, t2);
|
TileArea ta(t1, t2);
|
||||||
|
TILE_AREA_LOOP(t, ta) this->AddItem(t);
|
||||||
uint w = TileX(t2) - TileX(t1) + 1;
|
|
||||||
uint h = TileY(t2) - TileY(t1) + 1;
|
|
||||||
|
|
||||||
TILE_LOOP(t, w, h, t1) this->AddItem(t);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AITileList::AddTile(TileIndex tile)
|
void AITileList::AddTile(TileIndex tile)
|
||||||
|
@ -54,12 +35,8 @@ void AITileList::RemoveRectangle(TileIndex t1, TileIndex t2)
|
||||||
if (!::IsValidTile(t1)) return;
|
if (!::IsValidTile(t1)) return;
|
||||||
if (!::IsValidTile(t2)) return;
|
if (!::IsValidTile(t2)) return;
|
||||||
|
|
||||||
this->FixRectangleSpan(t1, t2);
|
TileArea ta(t1, t2);
|
||||||
|
TILE_AREA_LOOP(t, ta) this->RemoveItem(t);
|
||||||
uint w = TileX(t2) - TileX(t1) + 1;
|
|
||||||
uint h = TileY(t2) - TileY(t1) + 1;
|
|
||||||
|
|
||||||
TILE_LOOP(t, w, h, t1) this->RemoveItem(t);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AITileList::RemoveTile(TileIndex tile)
|
void AITileList::RemoveTile(TileIndex tile)
|
||||||
|
|
|
@ -23,16 +23,6 @@ class AITileList : public AIAbstractList {
|
||||||
public:
|
public:
|
||||||
static const char *GetClassName() { return "AITileList"; }
|
static const char *GetClassName() { return "AITileList"; }
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
|
||||||
* Make sure t1.x is smaller than t2.x and t1.y is smaller than t2.y.
|
|
||||||
* They are swapped to ensure they are after calling this function.
|
|
||||||
* @param t1 one of the corners of the rectangle.
|
|
||||||
* @param t2 the other corner of the rectangle.
|
|
||||||
*/
|
|
||||||
void FixRectangleSpan(TileIndex &t1, TileIndex &t2);
|
|
||||||
|
|
||||||
public:
|
|
||||||
/**
|
/**
|
||||||
* Adds the rectangle between tile_from and tile_to to the to-be-evaluated tiles.
|
* Adds the rectangle between tile_from and tile_to to the to-be-evaluated tiles.
|
||||||
* @param tile_from One corner of the tiles to add.
|
* @param tile_from One corner of the tiles to add.
|
||||||
|
|
Loading…
Reference in New Issue