changeset 14469:804eda4ac1f3 draft

(svn r19038) -Codechange: Move TileArea methods to their own file.
author alberth <alberth@openttd.org>
date Sat, 06 Feb 2010 12:56:13 +0000
parents f93871351d9b
children b95ae6b0e474
files projects/openttd_vs80.vcproj projects/openttd_vs90.vcproj source.list src/station.cpp src/tilearea.cpp src/tilearea_type.h
diffstat 6 files changed, 110 insertions(+), 83 deletions(-) [+]
line wrap: on
line diff
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -720,6 +720,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\tilearea.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\townname.cpp"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -717,6 +717,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\tilearea.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\townname.cpp"
 				>
 			</File>
--- a/source.list
+++ b/source.list
@@ -67,6 +67,7 @@
 texteff.cpp
 tgp.cpp
 tile_map.cpp
+tilearea.cpp
 townname.cpp
 #if WIN32
 #else
--- a/src/station.cpp
+++ b/src/station.cpp
@@ -498,72 +498,6 @@
 	return *this;
 }
 
-TileArea::TileArea(TileIndex start, TileIndex end)
-{
-	uint sx = TileX(start);
-	uint sy = TileY(start);
-	uint ex = TileX(end);
-	uint ey = TileY(end);
-
-	if (sx > ex) Swap(sx, ex);
-	if (sy > ey) Swap(sy, ey);
-
-	this->tile = TileXY(sx, sy);
-	this->w    = ex - sx + 1;
-	this->h    = ey - sy + 1;
-}
-
-void TileArea::Add(TileIndex to_add)
-{
-	if (this->tile == INVALID_TILE) {
-		this->tile = to_add;
-		this->w = 1;
-		this->h = 1;
-		return;
-	}
-
-	uint sx = TileX(this->tile);
-	uint sy = TileY(this->tile);
-	uint ex = sx + this->w - 1;
-	uint ey = sy + this->h - 1;
-
-	uint ax = TileX(to_add);
-	uint ay = TileY(to_add);
-
-	sx = min(ax, sx);
-	sy = min(ay, sy);
-	ex = max(ax, ex);
-	ey = max(ay, ey);
-
-	this->tile = TileXY(sx, sy);
-	this->w    = ex - sx + 1;
-	this->h    = ey - sy + 1;
-}
-
-bool TileArea::Intersects(const TileArea &ta) const
-{
-	if (ta.w == 0 || this->w == 0) return false;
-
-	assert(ta.w != 0 && ta.h != 0 && this->w != 0 && this->h != 0);
-
-	uint left1   = TileX(this->tile);
-	uint top1    = TileY(this->tile);
-	uint right1  = left1 + this->w - 1;
-	uint bottom1 = top1  + this->h - 1;
-
-	uint left2   = TileX(ta.tile);
-	uint top2    = TileY(ta.tile);
-	uint right2  = left2 + ta.w - 1;
-	uint bottom2 = top2  + ta.h - 1;
-
-	return !(
-			left2   > right1  ||
-			right2  < left1   ||
-			top2    > bottom1 ||
-			bottom2 < top1
-		);
-}
-
 
 void InitializeStations()
 {
new file mode 100644
--- /dev/null
+++ b/src/tilearea.cpp
@@ -0,0 +1,97 @@
+/* $Id$ */
+
+/*
+ * This file is part of OpenTTD.
+ * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** @file tilearea.cpp Handling of tile areas. */
+
+#include "stdafx.h"
+
+#include "tile_map.h"
+#include "core/math_func.hpp"
+#include "tilearea_type.h"
+
+/**
+ * Construct this tile area based on two points.
+ * @param start the start of the area
+ * @param end   the end of the area
+ */
+TileArea::TileArea(TileIndex start, TileIndex end)
+{
+	uint sx = TileX(start);
+	uint sy = TileY(start);
+	uint ex = TileX(end);
+	uint ey = TileY(end);
+
+	if (sx > ex) Swap(sx, ex);
+	if (sy > ey) Swap(sy, ey);
+
+	this->tile = TileXY(sx, sy);
+	this->w    = ex - sx + 1;
+	this->h    = ey - sy + 1;
+}
+
+/**
+ * Add a single tile to a tile area; enlarge if needed.
+ * @param to_add The tile to add
+ */
+void TileArea::Add(TileIndex to_add)
+{
+	if (this->tile == INVALID_TILE) {
+		this->tile = to_add;
+		this->w = 1;
+		this->h = 1;
+		return;
+	}
+
+	uint sx = TileX(this->tile);
+	uint sy = TileY(this->tile);
+	uint ex = sx + this->w - 1;
+	uint ey = sy + this->h - 1;
+
+	uint ax = TileX(to_add);
+	uint ay = TileY(to_add);
+
+	sx = min(ax, sx);
+	sy = min(ay, sy);
+	ex = max(ax, ex);
+	ey = max(ay, ey);
+
+	this->tile = TileXY(sx, sy);
+	this->w    = ex - sx + 1;
+	this->h    = ey - sy + 1;
+}
+
+/**
+ * Does this tile area intersect with another?
+ * @param ta the other tile area to check against.
+ * @return true if they intersect.
+ */
+bool TileArea::Intersects(const TileArea &ta) const
+{
+	if (ta.w == 0 || this->w == 0) return false;
+
+	assert(ta.w != 0 && ta.h != 0 && this->w != 0 && this->h != 0);
+
+	uint left1   = TileX(this->tile);
+	uint top1    = TileY(this->tile);
+	uint right1  = left1 + this->w - 1;
+	uint bottom1 = top1  + this->h - 1;
+
+	uint left2   = TileX(ta.tile);
+	uint top2    = TileY(ta.tile);
+	uint right2  = left2 + ta.w - 1;
+	uint bottom2 = top2  + ta.h - 1;
+
+	return !(
+			left2   > right1  ||
+			right2  < left1   ||
+			top2    > bottom1 ||
+			bottom2 < top1
+		);
+}
+
--- a/src/tilearea_type.h
+++ b/src/tilearea_type.h
@@ -16,6 +16,10 @@
 
 /** Represents the covered area of e.g. a rail station */
 struct TileArea {
+	TileIndex tile; ///< The base tile of the area
+	uint8 w;        ///< The width of the area
+	uint8 h;        ///< The height of the area
+
 	/** Just construct this tile area */
 	TileArea() {}
 
@@ -27,21 +31,9 @@
 	 */
 	TileArea(TileIndex tile, uint8 w, uint8 h) : tile(tile), w(w), h(h) {}
 
-	/**
-	 * Construct this tile area based on two points.
-	 * @param start the start of the area
-	 * @param end   the end of the area
-	 */
 	TileArea(TileIndex start, TileIndex end);
 
-	TileIndex tile; ///< The base tile of the area
-	uint8 w;        ///< The width of the area
-	uint8 h;        ///< The height of the area
 
-	/**
-	 * Add a single tile to a tile area; enlarge if needed.
-	 * @param to_add The tile to add
-	 */
 	void Add(TileIndex to_add);
 
 	/**
@@ -54,11 +46,6 @@
 		this->h    = 0;
 	}
 
-	/**
-	 * Does this tile area intersect with another?
-	 * @param ta the other tile area to check against.
-	 * @return true if they intersect.
-	 */
 	bool Intersects(const TileArea &ta) const;
 };