| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677 | 
							- #include "stdafx.h"
 
- #include "CBuildingHandler.h"
 
- void CBuildingHandler::loadBuildings()
 
- {
 
- 	std::ifstream inp("H3bitmap.lod\\BUILDING.TXT", std::ios::in | std::ios::binary);
 
- 	inp.seekg(0,std::ios::end); // na koniec
 
- 	int andame = inp.tellg();  // read length
 
- 	inp.seekg(0,std::ios::beg); // wracamy na poczatek
 
- 	char * bufor = new char[andame]; // allocate memory 
 
- 	inp.read((char*)bufor, andame); // read map file to buffer
 
- 	inp.close();
 
- 	std::string buf = std::string(bufor);
 
- 	delete [andame] bufor;
 
- 	int i=0; //buf iterator
 
- 	int hmcr=0;
 
- 	for(i; i<andame; ++i) //omitting rubbish
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			++hmcr;
 
- 		if(hmcr==3)
 
- 			break;
 
- 	}
 
- 	i+=2;
 
- 	EbuildingType currType; //current type of building
 
- 	bool currDwel = false; //true, if we are reading dwellings
 
- 	while(!inp.eof())
 
- 	{
 
- 		CBuilding nbu; //currently read building
 
- 		if(buildings.size()>200 && buf.substr(i, buf.size()-i).find('\r')==std::string::npos)
 
- 			break;
 
- 		std::string firstStr;
 
- 		int befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		firstStr = buf.substr(befi, i-befi);
 
- 		++i;
 
- 		if(firstStr == std::string(""))
 
- 		{
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		if(firstStr == std::string("Castle"))
 
- 		{
 
- 			currType = CASTLE;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Rampart"))
 
- 		{
 
- 			currType = RAMPART;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Tower"))
 
- 		{
 
- 			currType = TOWER;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Inferno"))
 
- 		{
 
- 			currType = INFERNO;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Necropolis"))
 
- 		{
 
- 			currType = NECROPOLIS;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Dungeon"))
 
- 		{
 
- 			currType = DUNGEON;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Stronghold"))
 
- 		{
 
- 			currType = STRONGHOLD;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Fortress"))
 
- 		{
 
- 			currType = FORTRESS;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Conflux"))
 
- 		{
 
- 			currType = CONFLUX;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Neutral Buildings"))
 
- 		{
 
- 			currType = NEUTRAL;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else if(firstStr == std::string("Dwellings"))
 
- 		{
 
- 			currDwel = true;
 
- 			for(i; i<andame; ++i) //omitting rubbish
 
- 			{
 
- 				if(buf[i]=='\r')
 
- 					break;
 
- 			}
 
- 			i+=2;
 
- 			continue;
 
- 		}
 
- 		else
 
- 		{
 
- 			nbu.wood = atoi(firstStr.c_str());
 
- 		}
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.mercury = atoi(buf.substr(befi, i-befi).c_str());
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.ore = atoi(buf.substr(befi, i-befi).c_str());
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.sulfur = atoi(buf.substr(befi, i-befi).c_str());
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.crystal = atoi(buf.substr(befi, i-befi).c_str());
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.gems = atoi(buf.substr(befi, i-befi).c_str());
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.gold = atoi(buf.substr(befi, i-befi).c_str());
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\r' || buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		nbu.refName = buf.substr(befi, i-befi);
 
- 		i+=2;
 
- 		nbu.type = currType;
 
- 		nbu.isDwelling = currDwel;
 
- 		if(nbu.refName[0]==' ')
 
- 			nbu.refName = nbu.refName.substr(1, nbu.name.size()-1);
 
- 		buildings.push_back(nbu);
 
- 	}
 
- 	loadNames();
 
- 	loadNeutNames();
 
- 	loadDwellingNames();
 
- }
 
- void CBuildingHandler::loadNames()
 
- {
 
- 	std::ifstream inp("H3bitmap.lod\\BLDGSPEC.TXT", std::ios::in | std::ios::binary);
 
- 	inp.seekg(0,std::ios::end); // na koniec
 
- 	int andame = inp.tellg();  // read length
 
- 	inp.seekg(0,std::ios::beg); // wracamy na poczatek
 
- 	char * bufor = new char[andame]; // allocate memory 
 
- 	inp.read((char*)bufor, andame); // read map file to buffer
 
- 	inp.close();
 
- 	std::string buf = std::string(bufor);
 
- 	delete [andame] bufor;
 
- 	int i=0; //buf iterator
 
- 	for(int ii=0; ii<9; ++ii)
 
- 	{
 
- 		for(int q=0; q<11; ++q)
 
- 		{
 
- 			if (q<9) //normal building names and descriptions
 
- 			{
 
- 				int befi=i;
 
- 				for(i; i<andame; ++i)
 
- 				{
 
- 					if(buf[i]=='\t')
 
- 						break;
 
- 				}
 
- 				buildings[ii*9+q].name = buf.substr(befi, i-befi);
 
- 				++i;
 
- 				befi=i;
 
- 				for(i; i<andame; ++i)
 
- 				{
 
- 					if(buf[i]=='\r')
 
- 						break;
 
- 				}
 
- 				buildings[ii*9+q].description = buf.substr(befi, i-befi);
 
- 				i+=2;
 
- 			}
 
- 			else if (q==9) //for graal buildings
 
- 			{
 
- 				CBuilding graal;
 
- 				int befi=i;
 
- 				for(i; i<andame; ++i)
 
- 				{
 
- 					if(buf[i]=='\t')
 
- 						break;
 
- 				}
 
- 				graal.name = buf.substr(befi, i-befi);
 
- 				++i;
 
- 				befi=i;
 
- 				for(i; i<andame; ++i)
 
- 				{
 
- 					if(buf[i]=='\r')
 
- 						break;
 
- 				}
 
- 				graal.description = buf.substr(befi, i-befi);
 
- 				i+=2;
 
- 				graal.type = EbuildingType(ii+1);
 
- 				graal.wood = graal.mercury = graal.ore = graal.sulfur = graal.crystal = graal.gems = graal.gold = 0;
 
- 				graal.isDwelling = false;
 
- 				grails.push_back(graal);
 
- 			}
 
- 			else //for resource silos
 
- 			{
 
- 				CBuilding graal;
 
- 				int befi=i;
 
- 				for(i; i<andame; ++i)
 
- 				{
 
- 					if(buf[i]=='\t')
 
- 						break;
 
- 				}
 
- 				graal.name = buf.substr(befi, i-befi);
 
- 				++i;
 
- 				befi=i;
 
- 				for(i; i<andame; ++i)
 
- 				{
 
- 					if(buf[i]=='\r')
 
- 						break;
 
- 				}
 
- 				graal.description = buf.substr(befi, i-befi);
 
- 				i+=2;
 
- 				graal.type = EbuildingType(ii+1);
 
- 				graal.wood = graal.mercury = graal.ore = graal.sulfur = graal.crystal = graal.gems = graal.gold = 0;
 
- 				graal.isDwelling = false;
 
- 				resourceSilos.push_back(graal);
 
- 			}
 
- 		}
 
- 	}
 
- 	///////////////reading artifact merchant
 
- 	int befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	artMerchant.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	artMerchant.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading level1 creature horde
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	l1horde.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	l1horde.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading level2 creature horde
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	l2horde.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	l2horde.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading shipyard
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	shipyard.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	shipyard.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////omitting rubbish
 
- 	int hmcr = 0;
 
- 	for(i; i<andame; ++i) //omitting rubbish
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			++hmcr;
 
- 		if(hmcr==2)
 
- 			break;
 
- 	}
 
- 	i+=2;
 
- 	//////////////////////reading level3 creature horde
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	l3horde.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	l3horde.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading level4 creature horde
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	l4horde.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	l4horde.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading level5 creature horde
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	l5horde.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	l5horde.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading grail
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	grail.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	grail.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	//////////////////////reading resource silo
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	resSilo.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	resSilo.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- }
 
- void CBuildingHandler::loadNeutNames()
 
- {
 
- 	std::ifstream inp("H3bitmap.lod\\BLDGNEUT.TXT", std::ios::in | std::ios::binary);
 
- 	inp.seekg(0,std::ios::end); // na koniec
 
- 	int andame = inp.tellg();  // read length
 
- 	inp.seekg(0,std::ios::beg); // wracamy na poczatek
 
- 	char * bufor = new char[andame]; // allocate memory 
 
- 	inp.read((char*)bufor, andame); // read map file to buffer
 
- 	inp.close();
 
- 	std::string buf = std::string(bufor);
 
- 	delete [andame] bufor;
 
- 	int i=0; //buf iterator
 
- 	for(int q=0; q<15; ++q)
 
- 	{
 
- 		int befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		buildings[81+q].name = buf.substr(befi, i-befi);
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\r')
 
- 				break;
 
- 		}
 
- 		buildings[81+q].description = buf.substr(befi, i-befi);
 
- 		i+=2;
 
- 	}
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	i+=2;
 
- 	////////////////////////////reading blacksmith
 
- 	int befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	CBuilding b1;
 
- 	b1.type = EbuildingType(0);
 
- 	b1.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	b1.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	blacksmith = b1;
 
- 	//////////////////////////////reading moat
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	b1.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	b1.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	moat = b1;
 
- 	/////////////////////////reading shipyard with ship
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\t')
 
- 			break;
 
- 	}
 
- 	b1.name = buf.substr(befi, i-befi);
 
- 	++i;
 
- 	befi=i;
 
- 	for(i; i<andame; ++i)
 
- 	{
 
- 		if(buf[i]=='\r')
 
- 			break;
 
- 	}
 
- 	b1.description = buf.substr(befi, i-befi);
 
- 	i+=2;
 
- 	shipyardWithShip = b1;
 
- 	/////////////////////////reading blacksmiths
 
- 	for(int q=0; q<9; ++q)
 
- 	{
 
- 		CBuilding black; //
 
- 		int befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		black.name = buf.substr(befi, i-befi);
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\r')
 
- 				break;
 
- 		}
 
- 		black.description = buf.substr(befi, i-befi);
 
- 		i+=2;
 
- 		black.type = EbuildingType(q+1);
 
- 		blacksmiths.push_back(black);
 
- 	}
 
- }
 
- void CBuildingHandler::loadDwellingNames()
 
- {
 
- 	std::ifstream inp("H3bitmap.lod\\DWELLING.TXT", std::ios::in | std::ios::binary);
 
- 	inp.seekg(0,std::ios::end); // na koniec
 
- 	int andame = inp.tellg();  // read length
 
- 	inp.seekg(0,std::ios::beg); // wracamy na poczatek
 
- 	char * bufor = new char[andame]; // allocate memory 
 
- 	inp.read((char*)bufor, andame); // read map file to buffer
 
- 	inp.close();
 
- 	std::string buf = std::string(bufor);
 
- 	delete [andame] bufor;
 
- 	int i = 0; //buf iterator
 
- 	int whdw = 98; //wchich dwelling we are currently reading
 
- 	for(whdw; whdw<224; ++whdw)
 
- 	{
 
- 		int befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\t')
 
- 				break;
 
- 		}
 
- 		buildings[whdw].name = buf.substr(befi, i-befi);
 
- 		++i;
 
- 		befi=i;
 
- 		for(i; i<andame; ++i)
 
- 		{
 
- 			if(buf[i]=='\r')
 
- 				break;
 
- 		}
 
- 		buildings[whdw].description = buf.substr(befi, i-befi);
 
- 		i+=2;
 
- 	}
 
- }
 
 
  |