mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-07 00:58:39 +02:00
* Map size can be any integer value * Changed new_*; to new_*(); for zero-parameter c-tors (=code convention; stack allocated objects without parantheses as ever to avoid c++ most vexing parse)
This commit is contained in:
@ -99,7 +99,7 @@ void CMapLoaderH3M::initBuffer(CInputStream * stream)
|
||||
std::unique_ptr<CMap> CMapLoaderH3M::loadMap()
|
||||
{
|
||||
// Init map object by parsing the input buffer
|
||||
map = new CMap;
|
||||
map = new CMap();
|
||||
mapHeader = std::unique_ptr<CMapHeader>(dynamic_cast<CMapHeader *>(map));
|
||||
init();
|
||||
|
||||
@ -672,7 +672,7 @@ void CMapLoaderH3M::readPredefinedHeroes()
|
||||
int custom = buffer[pos++];
|
||||
if(!custom) continue;
|
||||
|
||||
CGHeroInstance * hero = new CGHeroInstance;
|
||||
CGHeroInstance * hero = new CGHeroInstance();
|
||||
hero->ID = Obj::HERO;
|
||||
hero->subID = z;
|
||||
|
||||
@ -851,7 +851,7 @@ CArtifactInstance * CMapLoaderH3M::createArtifact(int aid, int spellID /*= -1*/)
|
||||
}
|
||||
else
|
||||
{
|
||||
a = new CArtifactInstance;
|
||||
a = new CArtifactInstance();
|
||||
}
|
||||
|
||||
addNewArtifactInstance(a);
|
||||
@ -923,7 +923,7 @@ void CMapLoaderH3M::readDefInfo()
|
||||
// Read custom defs
|
||||
for(int idd = 0; idd < defAmount; ++idd)
|
||||
{
|
||||
CGDefInfo * defInfo = new CGDefInfo;
|
||||
CGDefInfo * defInfo = new CGDefInfo();
|
||||
|
||||
// Read name
|
||||
int nameLength = read_le_u32(buffer + pos);
|
||||
@ -1140,14 +1140,14 @@ void CMapLoaderH3M::readObjects()
|
||||
case 47: //School of Magic
|
||||
case 107: //School of War
|
||||
{
|
||||
nobj = new CGVisitableOPH;
|
||||
nobj = new CGVisitableOPH();
|
||||
break;
|
||||
}
|
||||
case 55: //mystical garden
|
||||
case 112://windmill
|
||||
case 109://water wheel
|
||||
{
|
||||
nobj = new CGVisitableOPW;
|
||||
nobj = new CGVisitableOPW();
|
||||
break;
|
||||
}
|
||||
case 43: //teleport
|
||||
@ -1156,7 +1156,7 @@ void CMapLoaderH3M::readObjects()
|
||||
case 103://subterranean gate
|
||||
case 111://Whirlpool
|
||||
{
|
||||
nobj = new CGTeleport;
|
||||
nobj = new CGTeleport();
|
||||
break;
|
||||
}
|
||||
case 12: //campfire
|
||||
@ -1165,14 +1165,14 @@ void CMapLoaderH3M::readObjects()
|
||||
case 86: //Shipwreck Survivor
|
||||
case 101://treasure chest
|
||||
{
|
||||
nobj = new CGPickable;
|
||||
nobj = new CGPickable();
|
||||
break;
|
||||
}
|
||||
case 54: //Monster
|
||||
case 71: case 72: case 73: case 74: case 75: // Random Monster 1 - 4
|
||||
case 162: case 163: case 164: // Random Monster 5 - 7
|
||||
{
|
||||
CGCreature * cre = new CGCreature;
|
||||
CGCreature * cre = new CGCreature();
|
||||
nobj = cre;
|
||||
|
||||
if(map->version > EMapFormat::ROE)
|
||||
@ -1182,7 +1182,7 @@ void CMapLoaderH3M::readObjects()
|
||||
map->questIdentifierToId[cre->identifier] = idToBeGiven;
|
||||
}
|
||||
|
||||
CStackInstance * hlp = new CStackInstance;
|
||||
CStackInstance * hlp = new CStackInstance();
|
||||
hlp->count = read_le_u16(buffer + pos);
|
||||
pos += 2;
|
||||
|
||||
@ -1247,7 +1247,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 59: case 91: //ocean bottle and sign
|
||||
{
|
||||
CGSignBottle * sb = new CGSignBottle;
|
||||
CGSignBottle * sb = new CGSignBottle();
|
||||
nobj = sb;
|
||||
sb->message = readString(buffer, pos);
|
||||
pos += 4;
|
||||
@ -1261,7 +1261,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 113: //witch hut
|
||||
{
|
||||
CGWitchHut * wh = new CGWitchHut;
|
||||
CGWitchHut * wh = new CGWitchHut();
|
||||
nobj = wh;
|
||||
|
||||
// in reo we cannot specify it - all are allowed (I hope)
|
||||
@ -1295,7 +1295,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 81: //scholar
|
||||
{
|
||||
CGScholar * sch = new CGScholar;
|
||||
CGScholar * sch = new CGScholar();
|
||||
nobj = sch;
|
||||
sch->bonusType = buffer[pos++];
|
||||
sch->bonusID = buffer[pos++];
|
||||
@ -1304,7 +1304,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 33: case 219: //garrison
|
||||
{
|
||||
CGGarrison * gar = new CGGarrison;
|
||||
CGGarrison * gar = new CGGarrison();
|
||||
nobj = gar;
|
||||
nobj->setOwner(buffer[pos++]);
|
||||
pos += 3;
|
||||
@ -1327,7 +1327,7 @@ void CMapLoaderH3M::readObjects()
|
||||
{
|
||||
int artID = -1;
|
||||
int spellID = -1;
|
||||
CGArtifact * art = new CGArtifact;
|
||||
CGArtifact * art = new CGArtifact();
|
||||
nobj = art;
|
||||
|
||||
bool areSettings = buffer[pos++];
|
||||
@ -1359,7 +1359,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 76: case 79: //random resource; resource
|
||||
{
|
||||
CGResource * res = new CGResource;
|
||||
CGResource * res = new CGResource();
|
||||
nobj = res;
|
||||
|
||||
bool isMessGuard = buffer[pos];
|
||||
@ -1392,14 +1392,14 @@ void CMapLoaderH3M::readObjects()
|
||||
case 53:
|
||||
case 220://mine (?)
|
||||
{
|
||||
nobj = new CGMine;
|
||||
nobj = new CGMine();
|
||||
nobj->setOwner(buffer[pos++]);
|
||||
pos += 3;
|
||||
break;
|
||||
}
|
||||
case 17: case 18: case 19: case 20: //dwellings
|
||||
{
|
||||
nobj = new CGDwelling;
|
||||
nobj = new CGDwelling();
|
||||
nobj->setOwner(buffer[pos++]);
|
||||
pos += 3;
|
||||
break;
|
||||
@ -1407,12 +1407,12 @@ void CMapLoaderH3M::readObjects()
|
||||
case 78: //Refugee Camp
|
||||
case 106: //War Machine Factory
|
||||
{
|
||||
nobj = new CGDwelling;
|
||||
nobj = new CGDwelling();
|
||||
break;
|
||||
}
|
||||
case 88: case 89: case 90: //spell shrine
|
||||
{
|
||||
CGShrine * shr = new CGShrine;
|
||||
CGShrine * shr = new CGShrine();
|
||||
nobj = shr;
|
||||
shr->spell = buffer[pos];
|
||||
pos += 4;
|
||||
@ -1420,7 +1420,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 6: //pandora's box
|
||||
{
|
||||
CGPandoraBox * box = new CGPandoraBox;
|
||||
CGPandoraBox * box = new CGPandoraBox();
|
||||
nobj = box;
|
||||
bool messg = buffer[pos];
|
||||
++pos;
|
||||
@ -1507,13 +1507,13 @@ void CMapLoaderH3M::readObjects()
|
||||
case 217: //same as castle
|
||||
case 218: //level range
|
||||
{
|
||||
nobj = new CGDwelling;
|
||||
nobj = new CGDwelling();
|
||||
CSpecObjInfo * spec = nullptr;
|
||||
switch(defInfo->id)
|
||||
{
|
||||
break; case 216: spec = new CCreGenLeveledCastleInfo;
|
||||
break; case 217: spec = new CCreGenAsCastleInfo;
|
||||
break; case 218: spec = new CCreGenLeveledInfo;
|
||||
break; case 216: spec = new CCreGenLeveledCastleInfo();
|
||||
break; case 217: spec = new CCreGenAsCastleInfo();
|
||||
break; case 218: spec = new CCreGenLeveledInfo();
|
||||
}
|
||||
|
||||
spec->player = read_le_u32(buffer + pos);
|
||||
@ -1552,7 +1552,7 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 215:
|
||||
{
|
||||
CGQuestGuard * guard = new CGQuestGuard;
|
||||
CGQuestGuard * guard = new CGQuestGuard();
|
||||
addQuest(guard);
|
||||
readQuest(guard);
|
||||
nobj = guard;
|
||||
@ -1571,19 +1571,19 @@ void CMapLoaderH3M::readObjects()
|
||||
case 52: //Mermaid
|
||||
case 94: //Stables
|
||||
{
|
||||
nobj = new CGBonusingObject;
|
||||
nobj = new CGBonusingObject();
|
||||
break;
|
||||
}
|
||||
case 49: //Magic Well
|
||||
{
|
||||
nobj = new CGMagicWell;
|
||||
nobj = new CGMagicWell();
|
||||
break;
|
||||
}
|
||||
case 15: //Cover of darkness
|
||||
case 58: //Redwood Observatory
|
||||
case 60: //Pillar of Fire
|
||||
{
|
||||
nobj = new CGObservatory;
|
||||
nobj = new CGObservatory();
|
||||
break;
|
||||
}
|
||||
case 22: //Corpse
|
||||
@ -1591,29 +1591,29 @@ void CMapLoaderH3M::readObjects()
|
||||
case 105://Wagon
|
||||
case 108://Warrior's Tomb
|
||||
{
|
||||
nobj = new CGOnceVisitable;
|
||||
nobj = new CGOnceVisitable();
|
||||
break;
|
||||
}
|
||||
case 8: //Boat
|
||||
{
|
||||
nobj = new CGBoat;
|
||||
nobj = new CGBoat();
|
||||
break;
|
||||
}
|
||||
case 92: //Sirens
|
||||
{
|
||||
nobj = new CGSirens;
|
||||
nobj = new CGSirens();
|
||||
break;
|
||||
}
|
||||
case 87: //Shipyard
|
||||
{
|
||||
nobj = new CGShipyard;
|
||||
nobj = new CGShipyard();
|
||||
nobj->setOwner(read_le_u32(buffer + pos));
|
||||
pos += 4;
|
||||
break;
|
||||
}
|
||||
case 214: //hero placeholder
|
||||
{
|
||||
CGHeroPlaceholder * hp = new CGHeroPlaceholder;
|
||||
CGHeroPlaceholder * hp = new CGHeroPlaceholder();
|
||||
nobj = hp;
|
||||
|
||||
int a = buffer[pos++]; //unknown byte, seems to be always 0 (if not - scream!)
|
||||
@ -1635,59 +1635,59 @@ void CMapLoaderH3M::readObjects()
|
||||
}
|
||||
case 10: //Keymaster
|
||||
{
|
||||
nobj = new CGKeymasterTent;
|
||||
nobj = new CGKeymasterTent();
|
||||
break;
|
||||
}
|
||||
case 9: //Border Guard
|
||||
{
|
||||
nobj = new CGBorderGuard;
|
||||
nobj = new CGBorderGuard();
|
||||
addQuest(nobj);
|
||||
break;
|
||||
}
|
||||
case 212: //Border Gate
|
||||
{
|
||||
nobj = new CGBorderGate;
|
||||
nobj = new CGBorderGate();
|
||||
addQuest (nobj);
|
||||
break;
|
||||
}
|
||||
case 27: case 37: //Eye and Hut of Magi
|
||||
{
|
||||
nobj = new CGMagi;
|
||||
nobj = new CGMagi();
|
||||
break;
|
||||
}
|
||||
case 16: case 24: case 25: case 84: case 85: //treasure bank
|
||||
{
|
||||
nobj = new CBank;
|
||||
nobj = new CBank();
|
||||
break;
|
||||
}
|
||||
case 63: //Pyramid
|
||||
{
|
||||
nobj = new CGPyramid;
|
||||
nobj = new CGPyramid();
|
||||
break;
|
||||
}
|
||||
case 13: //Cartographer
|
||||
{
|
||||
nobj = new CCartographer;
|
||||
nobj = new CCartographer();
|
||||
break;
|
||||
}
|
||||
case 48: //Magic Spring
|
||||
{
|
||||
nobj = new CGMagicSpring;
|
||||
nobj = new CGMagicSpring();
|
||||
break;
|
||||
}
|
||||
case 97: //den of thieves
|
||||
{
|
||||
nobj = new CGDenOfthieves;
|
||||
nobj = new CGDenOfthieves();
|
||||
break;
|
||||
}
|
||||
case 57: //Obelisk
|
||||
{
|
||||
nobj = new CGObelisk;
|
||||
nobj = new CGObelisk();
|
||||
break;
|
||||
}
|
||||
case 42: //Lighthouse
|
||||
{
|
||||
nobj = new CGLighthouse;
|
||||
nobj = new CGLighthouse();
|
||||
nobj->tempOwner = read_le_u32(buffer + pos);
|
||||
pos += 4;
|
||||
break;
|
||||
@ -1697,22 +1697,22 @@ void CMapLoaderH3M::readObjects()
|
||||
case 213: //Freelancer's Guild
|
||||
case 221: //Trading Post (snow)
|
||||
{
|
||||
nobj = new CGMarket;
|
||||
nobj = new CGMarket();
|
||||
break;
|
||||
}
|
||||
case 104: //University
|
||||
{
|
||||
nobj = new CGUniversity;
|
||||
nobj = new CGUniversity();
|
||||
break;
|
||||
}
|
||||
case 7: //Black Market
|
||||
{
|
||||
nobj = new CGBlackMarket;
|
||||
nobj = new CGBlackMarket();
|
||||
break;
|
||||
}
|
||||
default: //any other object
|
||||
{
|
||||
nobj = new CGObjectInstance;
|
||||
nobj = new CGObjectInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1767,7 +1767,7 @@ void CMapLoaderH3M::readCreatureSet(CCreatureSet * out, int number, bool version
|
||||
// Empty slot
|
||||
if(creID == maxID) continue;
|
||||
|
||||
CStackInstance * hlp = new CStackInstance;
|
||||
CStackInstance * hlp = new CStackInstance();
|
||||
hlp->count = count;
|
||||
|
||||
if(creID > maxID - 0xf)
|
||||
@ -1790,7 +1790,7 @@ void CMapLoaderH3M::readCreatureSet(CCreatureSet * out, int number, bool version
|
||||
|
||||
CGObjectInstance * CMapLoaderH3M::readHero(int idToBeGiven)
|
||||
{
|
||||
CGHeroInstance * nhi = new CGHeroInstance;
|
||||
CGHeroInstance * nhi = new CGHeroInstance();
|
||||
|
||||
int identifier = 0;
|
||||
if(map->version > EMapFormat::ROE)
|
||||
@ -1977,7 +1977,7 @@ CGObjectInstance * CMapLoaderH3M::readHero(int idToBeGiven)
|
||||
|
||||
CGSeerHut * CMapLoaderH3M::readSeerHut()
|
||||
{
|
||||
CGSeerHut * hut = new CGSeerHut;
|
||||
CGSeerHut * hut = new CGSeerHut();
|
||||
|
||||
if(map->version > EMapFormat::ROE)
|
||||
{
|
||||
@ -2208,7 +2208,7 @@ void CMapLoaderH3M::addQuest(CGObjectInstance * quest)
|
||||
|
||||
CGTownInstance * CMapLoaderH3M::readTown(int castleID)
|
||||
{
|
||||
CGTownInstance * nt = new CGTownInstance;
|
||||
CGTownInstance * nt = new CGTownInstance();
|
||||
nt->identifier = 0;
|
||||
if(map->version > EMapFormat::ROE)
|
||||
{
|
||||
@ -2316,7 +2316,7 @@ CGTownInstance * CMapLoaderH3M::readTown(int castleID)
|
||||
|
||||
for(int gh = 0; gh < numberOfEvent; ++gh)
|
||||
{
|
||||
CCastleEvent * nce = new CCastleEvent;
|
||||
CCastleEvent * nce = new CCastleEvent();
|
||||
nce->town = nt;
|
||||
nce->name = readString(buffer, pos);
|
||||
nce->message = readString(buffer, pos);
|
||||
@ -2456,7 +2456,7 @@ void CMapLoaderH3M::readEvents()
|
||||
pos += 4;
|
||||
for(int yyoo = 0; yyoo < numberOfEvents; ++yyoo)
|
||||
{
|
||||
CMapEvent * ne = new CMapEvent;
|
||||
CMapEvent * ne = new CMapEvent();
|
||||
ne->name = std::string();
|
||||
ne->message = std::string();
|
||||
int nameLen = read_le_u32(buffer + pos);
|
||||
|
Reference in New Issue
Block a user