summaryrefslogtreecommitdiffstats
path: root/Tools/BlockZapper/Regions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/BlockZapper/Regions.cpp')
-rw-r--r--Tools/BlockZapper/Regions.cpp334
1 files changed, 167 insertions, 167 deletions
diff --git a/Tools/BlockZapper/Regions.cpp b/Tools/BlockZapper/Regions.cpp
index b4c8bddcd..515699532 100644
--- a/Tools/BlockZapper/Regions.cpp
+++ b/Tools/BlockZapper/Regions.cpp
@@ -1,167 +1,167 @@
-
-// Regions.cpp
-
-// Implements the cRegions class representing the list of regions to zap
-
-#include "Globals.h"
-
-#include "Regions.h"
-
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// cRegion:
-
-cRegion::cRegion(void) :
- m_MinX(0),
- m_MaxX(0),
- m_MinY(0),
- m_MaxY(0),
- m_MinZ(0),
- m_MaxZ(0),
- m_ShouldZapBlocks(false),
- m_ShouldZapEntities(false)
-{
-}
-
-
-
-
-
-cRegion::cRegion(int a_MinX, int a_MaxX, int a_MinY, int a_MaxY, int a_MinZ, int a_MaxZ, bool a_ShouldZapBlocks, bool a_ShouldZapEntities) :
- m_MinX(a_MinX),
- m_MaxX(a_MaxX),
- m_MinY(std::max(0, std::min(255, a_MinY))),
- m_MaxY(std::max(0, std::min(255, a_MaxY))),
- m_MinZ(a_MinZ),
- m_MaxZ(a_MaxZ),
- m_ShouldZapBlocks(a_ShouldZapBlocks),
- m_ShouldZapEntities(a_ShouldZapEntities)
-{
-}
-
-
-
-
-
-bool cRegion::TouchesChunk(int a_ChunkX, int a_ChunkZ) const
-{
- int ChunkBeginX = a_ChunkX * 16;
- int ChunkEndX = a_ChunkX * 16 + 15;
- int ChunkBeginZ = a_ChunkZ * 16;
- int ChunkEndZ = a_ChunkZ * 16 + 15;
- if (
- (m_MinX > ChunkEndX) || (m_MaxX < ChunkBeginX) ||
- (m_MinZ > ChunkEndZ) || (m_MaxZ < ChunkBeginZ)
- )
- {
- return false;
- }
- return true;
-}
-
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// cRegions:
-
-void cRegions::Read(std::istream & a_Stream)
-{
- while (!a_Stream.eof())
- {
- AString Line;
- std::getline(a_Stream, Line);
-
- // Process the line
- AStringVector Split = StringSplit(Line, " \t");
- AStringVector NonEmpty;
- for (AStringVector::const_iterator itr = Split.begin(), end = Split.end(); itr != end; ++itr)
- {
- if (!itr->empty())
- {
- NonEmpty.push_back(*itr);
- }
- } // for itr - Split[]
- switch (NonEmpty.size())
- {
- case 6:
- case 7:
- {
- AddRegion(NonEmpty);
- break;
- }
- default:
- {
- fprintf(stderr, "Cannot parse line \"%s\", ignoring", Line.c_str());
- break;
- }
- }
- }
-}
-
-
-
-
-
-void cRegions::AddRegion(const AStringVector & a_Split)
-{
- ASSERT((a_Split.size() == 6) || (a_Split.size() == 7));
-
- int Coords[6];
- for (int i = 0; i < 6; i++)
- {
- Coords[i] = atoi(a_Split[i].c_str());
- if ((Coords[i] == 0) && (a_Split[i] != "0"))
- {
- fprintf(stderr, "Bad coord: \"%s\". Ignoring line.", a_Split[i].c_str());
- return;
- }
- } // for i - a_Split[]
-
- bool ShouldZapBlocks = true;
- bool ShouldZapEntities = false;
-
- if (a_Split.size() == 7)
- {
- AString Upper = a_Split[6];
- StrToUpper(Upper);
- if (Upper == "E")
- {
- ShouldZapEntities = true;
- ShouldZapBlocks = false;
- }
- else if (Upper == "BE")
- {
- ShouldZapEntities = true;
- }
- else if (Upper == "B")
- {
- // Nothing needed
- }
- else
- {
- fprintf(stderr, "Bad zap specifier: \"%s\". Ignoring line.", a_Split[6].c_str());
- return;
- }
- }
-
- // Swap coords, if needed:
- for (int i = 0; i < 3; i++)
- {
- if (Coords[2 * i] > Coords[2 * i + 1])
- {
- std::swap(Coords[2 * i], Coords[2 * i + 1]);
- }
- }
-
- // Store the region
- m_Regions.push_back(cRegion(Coords[0], Coords[1], Coords[2], Coords[3], Coords[4], Coords[5], ShouldZapBlocks, ShouldZapEntities));
-}
-
-
-
-
+
+// Regions.cpp
+
+// Implements the cRegions class representing the list of regions to zap
+
+#include "Globals.h"
+
+#include "Regions.h"
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// cRegion:
+
+cRegion::cRegion(void) :
+ m_MinX(0),
+ m_MaxX(0),
+ m_MinY(0),
+ m_MaxY(0),
+ m_MinZ(0),
+ m_MaxZ(0),
+ m_ShouldZapBlocks(false),
+ m_ShouldZapEntities(false)
+{
+}
+
+
+
+
+
+cRegion::cRegion(int a_MinX, int a_MaxX, int a_MinY, int a_MaxY, int a_MinZ, int a_MaxZ, bool a_ShouldZapBlocks, bool a_ShouldZapEntities) :
+ m_MinX(a_MinX),
+ m_MaxX(a_MaxX),
+ m_MinY(std::max(0, std::min(255, a_MinY))),
+ m_MaxY(std::max(0, std::min(255, a_MaxY))),
+ m_MinZ(a_MinZ),
+ m_MaxZ(a_MaxZ),
+ m_ShouldZapBlocks(a_ShouldZapBlocks),
+ m_ShouldZapEntities(a_ShouldZapEntities)
+{
+}
+
+
+
+
+
+bool cRegion::TouchesChunk(int a_ChunkX, int a_ChunkZ) const
+{
+ int ChunkBeginX = a_ChunkX * 16;
+ int ChunkEndX = a_ChunkX * 16 + 15;
+ int ChunkBeginZ = a_ChunkZ * 16;
+ int ChunkEndZ = a_ChunkZ * 16 + 15;
+ if (
+ (m_MinX > ChunkEndX) || (m_MaxX < ChunkBeginX) ||
+ (m_MinZ > ChunkEndZ) || (m_MaxZ < ChunkBeginZ)
+ )
+ {
+ return false;
+ }
+ return true;
+}
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// cRegions:
+
+void cRegions::Read(std::istream & a_Stream)
+{
+ while (!a_Stream.eof())
+ {
+ AString Line;
+ std::getline(a_Stream, Line);
+
+ // Process the line
+ AStringVector Split = StringSplit(Line, " \t");
+ AStringVector NonEmpty;
+ for (AStringVector::const_iterator itr = Split.begin(), end = Split.end(); itr != end; ++itr)
+ {
+ if (!itr->empty())
+ {
+ NonEmpty.push_back(*itr);
+ }
+ } // for itr - Split[]
+ switch (NonEmpty.size())
+ {
+ case 6:
+ case 7:
+ {
+ AddRegion(NonEmpty);
+ break;
+ }
+ default:
+ {
+ fprintf(stderr, "Cannot parse line \"%s\", ignoring", Line.c_str());
+ break;
+ }
+ }
+ }
+}
+
+
+
+
+
+void cRegions::AddRegion(const AStringVector & a_Split)
+{
+ ASSERT((a_Split.size() == 6) || (a_Split.size() == 7));
+
+ int Coords[6];
+ for (int i = 0; i < 6; i++)
+ {
+ Coords[i] = atoi(a_Split[i].c_str());
+ if ((Coords[i] == 0) && (a_Split[i] != "0"))
+ {
+ fprintf(stderr, "Bad coord: \"%s\". Ignoring line.", a_Split[i].c_str());
+ return;
+ }
+ } // for i - a_Split[]
+
+ bool ShouldZapBlocks = true;
+ bool ShouldZapEntities = false;
+
+ if (a_Split.size() == 7)
+ {
+ AString Upper = a_Split[6];
+ StrToUpper(Upper);
+ if (Upper == "E")
+ {
+ ShouldZapEntities = true;
+ ShouldZapBlocks = false;
+ }
+ else if (Upper == "BE")
+ {
+ ShouldZapEntities = true;
+ }
+ else if (Upper == "B")
+ {
+ // Nothing needed
+ }
+ else
+ {
+ fprintf(stderr, "Bad zap specifier: \"%s\". Ignoring line.", a_Split[6].c_str());
+ return;
+ }
+ }
+
+ // Swap coords, if needed:
+ for (int i = 0; i < 3; i++)
+ {
+ if (Coords[2 * i] > Coords[2 * i + 1])
+ {
+ std::swap(Coords[2 * i], Coords[2 * i + 1]);
+ }
+ }
+
+ // Store the region
+ m_Regions.push_back(cRegion(Coords[0], Coords[1], Coords[2], Coords[3], Coords[4], Coords[5], ShouldZapBlocks, ShouldZapEntities));
+}
+
+
+
+