فهرست منبع

All zones will be painted with terrain. Removed unused code.

DjWarmonger 11 سال پیش
والد
کامیت
021c6b9af3
1فایلهای تغییر یافته به همراه18 افزوده شده و 57 حذف شده
  1. 18 57
      lib/rmg/CRmgTemplateZone.cpp

+ 18 - 57
lib/rmg/CRmgTemplateZone.cpp

@@ -294,63 +294,16 @@ void CRmgTemplateZone::setCenter(float3 f)
 
 bool CRmgTemplateZone::pointIsIn(int x, int y)
 {
-	//int i, j;
-	//bool c = false;
-	//int nvert = shape.size();
-	//for (i = 0, j = nvert-1; i < nvert; j = i++) {
-	//	if ( ((shape[i].y>y) != (shape[j].y>y)) &&
-	//		(x < (shape[j].x-shape[i].x) * (y-shape[i].y) / (shape[j].y-shape[i].y) + shape[i].x) )
-	//		c = !c;
-	//}
 	return true;
 }
 
 void CRmgTemplateZone::setShape(std::vector<int3> shape)
 {
-	//int z = -1;
-	//si32 minx = INT_MAX;
-	//si32 maxx = -1;
-	//si32 miny = INT_MAX;
-	//si32 maxy = -1;
-	//for(auto &point : shape)
-	//{
-	//	if (z == -1)
-	//		z = point.z;
-	//	if (point.z != z)
-	//		throw rmgException("Zone shape points should lie on same z.");
-	//	minx = std::min(minx, point.x);
-	//	maxx = std::max(maxx, point.x);
-	//	miny = std::min(miny, point.y);
-	//	maxy = std::max(maxy, point.y);
-	//}
 	this->shape = shape;
-	//for(int x = minx; x <= maxx; ++x)
-	//{
-	//	for(int y = miny; y <= maxy; ++y)
-	//	{
-	//		if (pointIsIn(x, y))
-	//		{
-	//			tileinfo[int3(x,y,z)] = CTileInfo();
-	//		}
-	//	}
-	//}
 }
 
 int3 CRmgTemplateZone::getPos()
 {
-	//si32 cx = 0;
-	//si32 cy = 0;
-	//si32 area = 0;
-	//si32 sz = shape.size();
-	////include last->first too
-	//for(si32 i = 0, j = sz-1; i < sz; j = i++) {
-	//	si32 sf = (shape[i].x * shape[j].y - shape[j].x * shape[i].y);
-	//	cx += (shape[i].x + shape[j].x) * sf;
-	//	cy += (shape[i].y + shape[j].y) * sf;
-	//	area += sf;
-	//}
-	//area /= 2;
-	//return int3(std::abs(cx/area/6), std::abs(cy/area/6), shape[0].z);
 	return pos;
 }
 void CRmgTemplateZone::setPos(int3 &Pos)
@@ -366,6 +319,9 @@ void CRmgTemplateZone::addTile (int3 &pos)
 bool CRmgTemplateZone::fill(CMapGenerator* gen)
 {
 	std::vector<CGObjectInstance*> required_objects;
+
+	int townId = 0;
+
 	if ((type == ETemplateZoneType::CPU_START) || (type == ETemplateZoneType::PLAYER_START))
 	{
 		logGlobal->infoStream() << "Preparing playing zone";
@@ -376,7 +332,7 @@ bool CRmgTemplateZone::fill(CMapGenerator* gen)
 			PlayerColor player(player_id);
 			auto  town = new CGTownInstance();
 			town->ID = Obj::TOWN;
-			int townId = gen->mapGenOptions->getPlayersSettings().find(player)->second.getStartingTown();
+			townId = gen->mapGenOptions->getPlayersSettings().find(player)->second.getStartingTown();
 
 			if(townId == CMapGenOptions::CPlayerSettings::RANDOM_TOWN)
 				townId = *RandomGeneratorUtil::nextItem(VLC->townh->getAllowedFactions(), gen->rand); // all possible towns, skip neutral
@@ -398,15 +354,6 @@ bool CRmgTemplateZone::fill(CMapGenerator* gen)
 			playerInfo.posOfMainTown = town->pos - int3(2, 0, 0);
 			playerInfo.generateHeroAtMainTown = true;
 
-			//paint zone with matching terrain
-			std::vector<int3> tiles;
-			for (auto tile : tileinfo)
-			{
-				tiles.push_back (tile.first);
-			}
-			gen->editManager->getTerrainSelection().setSelection(tiles);
-			gen->editManager->drawTerrain(VLC->townh->factions[townId]->nativeTerrain, &gen->rand);
-
 			//required_objects.push_back(town);
 
 			std::vector<Res::ERes> required_mines;
@@ -426,9 +373,23 @@ bool CRmgTemplateZone::fill(CMapGenerator* gen)
 		else
 		{			
 			type = ETemplateZoneType::TREASURE;
+			townId = *RandomGeneratorUtil::nextItem(VLC->townh->getAllowedFactions(), gen->rand);
 			logGlobal->infoStream() << "Skipping this zone cause no player";
 		}
 	}
+	else //no player
+	{
+		townId = *RandomGeneratorUtil::nextItem(VLC->townh->getAllowedFactions(), gen->rand);
+	}
+	//paint zone with matching terrain
+	std::vector<int3> tiles;
+	for (auto tile : tileinfo)
+	{
+		tiles.push_back (tile.first);
+	}
+	gen->editManager->getTerrainSelection().setSelection(tiles);
+	gen->editManager->drawTerrain(VLC->townh->factions[townId]->nativeTerrain, &gen->rand);
+
 	logGlobal->infoStream() << "Creating required objects";
 	for(const auto &obj : required_objects)
 	{