# HG changeset patch # User unc0rr # Date 1408653446 -14400 # Node ID ce3ccc45d7909fe8255d68464f7d3746c7c0d172 # Parent 13bfbade06a55dd56d9aa01158e845bd22aa5f95 Add separate option for perlin gen diff -r 13bfbade06a5 -r ce3ccc45d790 QTfrontend/model/MapModel.cpp --- a/QTfrontend/model/MapModel.cpp Thu Aug 21 15:01:19 2014 +0200 +++ b/QTfrontend/model/MapModel.cpp Fri Aug 22 00:37:26 2014 +0400 @@ -30,6 +30,7 @@ MapModel::MapInfo MapModel::MapInfoRandom = {MapModel::GeneratedMap, "+rnd+", "", 0, "", "", "", false}; MapModel::MapInfo MapModel::MapInfoMaze = {MapModel::GeneratedMaze, "+maze+", "", 0, "", "", "", false}; +MapModel::MapInfo MapModel::MapInfoPerlin = {MapModel::GeneratedMaze, "+perlin+", "", 0, "", "", "", false}; MapModel::MapInfo MapModel::MapInfoDrawn = {MapModel::HandDrawnMap, "+drawn+", "", 0, "", "", "", false}; diff -r 13bfbade06a5 -r ce3ccc45d790 QTfrontend/model/MapModel.h --- a/QTfrontend/model/MapModel.h Thu Aug 21 15:01:19 2014 +0200 +++ b/QTfrontend/model/MapModel.h Fri Aug 22 00:37:26 2014 +0400 @@ -49,6 +49,7 @@ Invalid, GeneratedMap, GeneratedMaze, + GeneratedPerlin, HandDrawnMap, MissionMap, StaticMap @@ -98,7 +99,7 @@ QStandardItem * getMap(const QString & map); // Static MapInfos for drawn and generated maps - static MapInfo MapInfoRandom, MapInfoMaze, MapInfoDrawn; + static MapInfo MapInfoRandom, MapInfoMaze, MapInfoPerlin, MapInfoDrawn; /// Loads the maps bool loadMaps(); diff -r 13bfbade06a5 -r ce3ccc45d790 QTfrontend/model/roomslistmodel.cpp --- a/QTfrontend/model/roomslistmodel.cpp Thu Aug 21 15:01:19 2014 +0200 +++ b/QTfrontend/model/roomslistmodel.cpp Fri Aug 22 00:37:26 2014 +0400 @@ -132,6 +132,7 @@ { if (content == "+rnd+") return tr("Random Map"); if (content == "+maze+") return tr("Random Maze"); + if (content == "+perlin+") return tr("Random Perlin"); if (content == "+drawn+") return tr("Hand-drawn"); } @@ -149,6 +150,7 @@ { if (content == "+rnd+" || content == "+maze+" || + content == "+perlin+" || content == "+drawn+" || m_staticMapModel->mapExists(content) || m_missionMapModel->mapExists(content)) diff -r 13bfbade06a5 -r ce3ccc45d790 QTfrontend/net/hwmap.cpp --- a/QTfrontend/net/hwmap.cpp Thu Aug 21 15:01:19 2014 +0200 +++ b/QTfrontend/net/hwmap.cpp Fri Aug 22 00:37:26 2014 +0400 @@ -127,6 +127,7 @@ switch (m_mapgen) { case MAPGEN_MAZE: + case MAPGEN_PERLIN: SendIPC(QString("e$maze_size %1").arg(m_maze_size).toUtf8()); break; diff -r 13bfbade06a5 -r ce3ccc45d790 QTfrontend/net/hwmap.h --- a/QTfrontend/net/hwmap.h Thu Aug 21 15:01:19 2014 +0200 +++ b/QTfrontend/net/hwmap.h Fri Aug 22 00:37:26 2014 +0400 @@ -28,10 +28,11 @@ enum MapGenerator { - MAPGEN_REGULAR, - MAPGEN_MAZE, - MAPGEN_DRAWN, - MAPGEN_MAP + MAPGEN_REGULAR = 0, + MAPGEN_MAZE = 1, + MAPGEN_PERLIN = 2, + MAPGEN_DRAWN = 3, + MAPGEN_MAP = 4 }; class HWMap : public TCPBase diff -r 13bfbade06a5 -r ce3ccc45d790 QTfrontend/ui/widget/mapContainer.cpp --- a/QTfrontend/ui/widget/mapContainer.cpp Thu Aug 21 15:01:19 2014 +0200 +++ b/QTfrontend/ui/widget/mapContainer.cpp Fri Aug 22 00:37:26 2014 +0400 @@ -105,6 +105,7 @@ cType->insertItem(2, tr("Hand-drawn"), MapModel::HandDrawnMap); cType->insertItem(3, tr("Randomly generated"), MapModel::GeneratedMap); cType->insertItem(4, tr("Random maze"), MapModel::GeneratedMaze); + cType->insertItem(5, tr("Random perlin"), MapModel::GeneratedPerlin); connect(cType, SIGNAL(currentIndexChanged(int)), this, SLOT(mapTypeChanged(int))); m_childWidgets << cType; @@ -401,14 +402,19 @@ void HWMapContainer::setSeed(const QString & seed) { intSetSeed(seed); - if ((m_mapInfo.type == MapModel::GeneratedMap) || (m_mapInfo.type == MapModel::GeneratedMaze)) + if ((m_mapInfo.type == MapModel::GeneratedMap) + || (m_mapInfo.type == MapModel::GeneratedMaze) + || (m_mapInfo.type == MapModel::GeneratedPerlin)) updatePreview(); } void HWMapContainer::setScript(const QString & script) { m_script = script; - if ((m_mapInfo.type == MapModel::GeneratedMap) || (m_mapInfo.type == MapModel::GeneratedMaze) || (m_mapInfo.type == MapModel::HandDrawnMap)) + if ((m_mapInfo.type == MapModel::GeneratedMap) + || (m_mapInfo.type == MapModel::GeneratedMaze) + || (m_mapInfo.type == MapModel::GeneratedPerlin) + || (m_mapInfo.type == MapModel::HandDrawnMap)) updatePreview(); } @@ -422,6 +428,10 @@ { //changeMapType(MapModel::GeneratedMaze); } + else if (map == "+perlin+") + { + //changeMapType(MapModel::GeneratedPerlin); + } else if (map == "+drawn+") { //changeMapType(MapModel::HandDrawnMap); @@ -464,6 +474,7 @@ { case MapModel::GeneratedMap: case MapModel::GeneratedMaze: + case MapModel::GeneratedPerlin: setRandomTheme(); break; case MapModel::MissionMap: @@ -541,6 +552,9 @@ case MAPGEN_MAZE: m_mapInfo.type = MapModel::GeneratedMaze; break; + case MAPGEN_PERLIN: + m_mapInfo.type = MapModel::GeneratedPerlin; + break; case MAPGEN_DRAWN: m_mapInfo.type = MapModel::HandDrawnMap; break; @@ -549,6 +563,7 @@ { case MapModel::GeneratedMap: case MapModel::GeneratedMaze: + case MapModel::GeneratedPerlin: case MapModel::HandDrawnMap: m_mapInfo.type = MapModel::Invalid; default: @@ -630,11 +645,8 @@ mapPreview->setIconSize(failIcon.size()); break; case MapModel::GeneratedMap: - askForGeneratedPreview(); - break; case MapModel::GeneratedMaze: - askForGeneratedPreview(); - break; + case MapModel::GeneratedPerlin: case MapModel::HandDrawnMap: askForGeneratedPreview(); break; @@ -722,6 +734,13 @@ lblMapList->show(); mazeStyles->show(); break; + case MapModel::GeneratedPerlin: + mapgen = MAPGEN_PERLIN; + setMapInfo(MapModel::MapInfoPerlin); + lblMapList->setText(tr("Style:")); + lblMapList->show(); + mazeStyles->show(); + break; case MapModel::HandDrawnMap: mapgen = MAPGEN_DRAWN; setMapInfo(MapModel::MapInfoDrawn); diff -r 13bfbade06a5 -r ce3ccc45d790 hedgewars/uLand.pas --- a/hedgewars/uLand.pas Thu Aug 21 15:01:19 2014 +0200 +++ b/hedgewars/uLand.pas Fri Aug 22 00:37:26 2014 +0400 @@ -547,8 +547,8 @@ case cMapGen of 0: GenTemplated(EdgeTemplates[SelectTemplate]); 1: begin ResizeLand(4096,2048); GenMaze; end; - //1: begin ResizeLand(4096,2048); GenPerlin; end; - 2: GenDrawnMap; + 2: begin ResizeLand(4096,2048); GenPerlin; end; + 3: GenDrawnMap; else OutError('Unknown mapgen', true); end; @@ -676,8 +676,8 @@ case cMapGen of 0: GenTemplated(EdgeTemplates[SelectTemplate]); 1: begin ResizeLand(4096,2048); GenMaze; end; - //1: begin ResizeLand(4096,2048); GenPerlin; end; - 2: GenDrawnMap; + 2: begin ResizeLand(4096,2048); GenPerlin; end; + 3: GenDrawnMap; else OutError('Unknown mapgen', true); end; @@ -724,8 +724,8 @@ case cMapGen of 0: GenTemplated(EdgeTemplates[SelectTemplate]); 1: begin ResizeLand(4096,2048); GenMaze; end; - //1: begin ResizeLand(4096,2048); GenPerlin; end; - 2: GenDrawnMap; + 2: begin ResizeLand(4096,2048); GenPerlin; end; + 3: GenDrawnMap; else OutError('Unknown mapgen', true); end; diff -r 13bfbade06a5 -r ce3ccc45d790 hedgewars/uLandGenPerlin.pas --- a/hedgewars/uLandGenPerlin.pas Thu Aug 21 15:01:19 2014 +0200 +++ b/hedgewars/uLandGenPerlin.pas Fri Aug 22 00:37:26 2014 +0400 @@ -121,8 +121,6 @@ end; const detail = 150000; - field = 3; - df = detail * field; width = 4096; height = 2048; minY = 500; @@ -132,8 +130,13 @@ margin = 200; procedure GenPerlin; -var y, x, {dy, }di, dj, r: LongInt; +var y, x, {dy, }di, dj, df, r, param1, param2: LongInt; begin + param1:= cTemplateFilter div 3; + param2:= cTemplateFilter mod 3; + + df:= detail * (6 - param2 * 2); + inoise_setup(); for y:= minY to pred(height) do @@ -171,15 +174,17 @@ end; end; - for x:= 0 to width do - if Land[height - 1, x] = lfObjMask then FillLand(x, height - 1, 0, lfBasic); - //FillLand(0, minY, lfBasic, lfObjMask); + if param1 = 0 then + begin + for x:= 0 to width do + if Land[height - 1, x] = lfObjMask then FillLand(x, height - 1, 0, lfBasic); - // strip all lfObjMask pixels - for y:= minY to LAND_HEIGHT - 1 do - for x:= 0 to LAND_WIDTH - 1 do - if Land[y, x] = lfObjMask then - Land[y, x]:= 0; + // strip all lfObjMask pixels + for y:= minY to LAND_HEIGHT - 1 do + for x:= 0 to LAND_WIDTH - 1 do + if Land[y, x] = lfObjMask then + Land[y, x]:= 0; + end; leftX:= 0; rightX:= 4095;