(svn r10936) [NoAI] -Fix: allow water_protection for non-water-building in DoCommand noai
authortruelight
Sun, 19 Aug 2007 13:01:41 +0000
branchnoai
changeset 9695 708f1e3cc4c4
parent 9694 e72987579514
child 9696 4384ed3de1f0
(svn r10936) [NoAI] -Fix: allow water_protection for non-water-building in DoCommand
src/ai/api/ai_marine.cpp
src/ai/api/ai_object.cpp
src/ai/api/ai_object.hpp
--- a/src/ai/api/ai_marine.cpp	Fri Aug 03 22:09:42 2007 +0000
+++ b/src/ai/api/ai_marine.cpp	Sun Aug 19 13:01:41 2007 +0000
@@ -52,7 +52,7 @@
 	/* Outside of the map */
 	if (tile >= ::MapSize()) return false;
 
-	return this->DoCommand(tile, vertical, 0, CMD_BUILD_SHIP_DEPOT);
+	return this->DoCommand(tile, vertical, 0, CMD_BUILD_SHIP_DEPOT, false);
 }
 
 bool AIMarine::BuildDock(TileIndex tile)
@@ -60,7 +60,7 @@
 	/* Outside of the map */
 	if (tile >= ::MapSize()) return false;
 
-	return this->DoCommand(tile, 1, 0, CMD_BUILD_DOCK);
+	return this->DoCommand(tile, 1, 0, CMD_BUILD_DOCK, false);
 }
 
 bool AIMarine::BuildBuoy(TileIndex tile)
@@ -68,7 +68,7 @@
 	/* Outside of the map */
 	if (tile >= ::MapSize()) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_BUILD_BUOY);
+	return this->DoCommand(tile, 0, 0, CMD_BUILD_BUOY, false);
 }
 
 bool AIMarine::BuildLock(TileIndex tile)
@@ -76,7 +76,7 @@
 	/* Outside of the map */
 	if (tile >= ::MapSize()) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_BUILD_LOCK);
+	return this->DoCommand(tile, 0, 0, CMD_BUILD_LOCK, false);
 }
 
 bool AIMarine::BuildCanal(TileIndex tile)
@@ -84,7 +84,7 @@
 	/* Outside of the map */
 	if (tile >= ::MapSize()) return false;
 
-	return this->DoCommand(tile, tile, 0, CMD_BUILD_CANAL);
+	return this->DoCommand(tile, tile, 0, CMD_BUILD_CANAL, false);
 }
 
 bool AIMarine::RemoveWaterDepot(TileIndex tile)
@@ -95,7 +95,7 @@
 	/* Not a water depot tile */
 	if (!IsWaterDepotTile(tile)) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR);
+	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR, false);
 }
 
 bool AIMarine::RemoveDock(TileIndex tile)
@@ -106,7 +106,7 @@
 	/* Not a dock tile */
 	if (!IsDockTile(tile)) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR);
+	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR, false);
 }
 
 bool AIMarine::RemoveBuoy(TileIndex tile)
@@ -117,7 +117,7 @@
 	/* Not a buoy tile */
 	if (!IsBuoyTile(tile)) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR);
+	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR, false);
 }
 
 bool AIMarine::RemoveLock(TileIndex tile)
@@ -128,7 +128,7 @@
 	/* Not a lock tile */
 	if (!IsLockTile(tile)) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR);
+	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR, false);
 }
 
 bool AIMarine::RemoveCanal(TileIndex tile)
@@ -139,5 +139,5 @@
 	/* Not a canal tile */
 	if (!IsCanalTile(tile)) return false;
 
-	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR);
+	return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR, false);
 }
--- a/src/ai/api/ai_object.cpp	Fri Aug 03 22:09:42 2007 +0000
+++ b/src/ai/api/ai_object.cpp	Sun Aug 19 13:01:41 2007 +0000
@@ -102,7 +102,7 @@
 	command_struct->event_data = NULL;
 }
 
-bool AIObject::DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint procc)
+bool AIObject::DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint procc, bool water_protection)
 {
 	uint32 flags = 0;
 	PlayerID old_lp;
@@ -110,6 +110,7 @@
 	const char* tmp_cmdtext;
 
 	if (procc != CMD_LANDSCAPE_CLEAR) flags |= DC_AUTO;
+	if (water_protection) flags |= DC_NO_WATER;
 
 	/* The test already resets _cmd_text, so backup the pointer */
 	tmp_cmdtext = _cmd_text;
--- a/src/ai/api/ai_object.hpp	Fri Aug 03 22:09:42 2007 +0000
+++ b/src/ai/api/ai_object.hpp	Sun Aug 19 13:01:41 2007 +0000
@@ -41,7 +41,7 @@
 	/**
 	 * Executes a raw DoCommand for the AI.
 	 */
-	static bool DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint procc);
+	static bool DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint procc, bool water_protection = true);
 
 	/**
 	 * Sets the DoCommand costs counter to a value.