Example #1
0
void InformationStorage::loadAll(string file)
{
	//Clear out the object types first
	terrainTypes.clear();
	buildingTypes.clear();
	unitTypes.clear();
	
	TiXmlDocument doc( file.c_str());
	if(doc.LoadFile())
	{
		TiXmlHandle hDoc(&doc);
		TiXmlElement* pElem;
		TiXmlHandle hRoot(0);
		pElem = hDoc.FirstChildElement().Element();
		hRoot=TiXmlHandle(pElem);


		//--------------------------------Load in Units----------------------

		TiXmlNode* pUnitNode=hRoot.FirstChild( "Units" ).FirstChild().ToNode();
		TiXmlNode* pUnitInfoNode;
		//For loop will cycle through each unit within the Units tag
		for( pUnitNode; pUnitNode; pUnitNode=pUnitNode->NextSiblingElement())
		{
			//Need to iterate through the data of a unit; can make a pointer to the first child of pUnitNode for ID, get NextSiblingElement for other elements, use 
			//query attributes for combat stats.
			UnitInfo u = UnitInfo();
			u.load(pUnitNode);
			unitTypes[u.id] = u;
		}



		//----------------------Load in Terrain-------------------------------

		TiXmlNode* pTerrainNode=hRoot.FirstChild( "Terrain" ).FirstChild().ToNode();
		TiXmlNode* pTerrainInfoNode;
		//For loop will cycle through each unit within the Units tag
		for( pTerrainNode; pTerrainNode; pTerrainNode=pTerrainNode->NextSiblingElement())
		{
			//Need to iterate through the data of a unit; can make a pointer to the first child of pUnitNode for ID, get NextSiblingElement for other elements, use 
			//query attributes for combat stats.
			TerrainInfo t = TerrainInfo();
			t.load(pTerrainNode);
			terrainTypes[t.id] = t;
		}


		//---------------------------------Load in Buildings--------------------------------------

		TiXmlNode* pBuildingNode=hRoot.FirstChild( "Buildings" ).FirstChild().ToNode();
		//TiXmlNode* pBuildingInfoNode;
		//TiXmlNode* pProductionIDNode;
		//For loop will cycle through each unit within the Units tag
		for( pBuildingNode; pBuildingNode; pBuildingNode=pBuildingNode->NextSiblingElement())
		{
			//Need to iterate through the data of a unit; can make a pointer to the first child of pUnitNode for ID, get NextSiblingElement for other elements, use 
			//query attributes for combat stats.
			BuildingInfo b = BuildingInfo();
			b.load(pBuildingNode);
			buildingTypes[b.id] = b;
		}

		//-------------------------------Load in Commander Cards--------------------------------
		TiXmlNode* pCardNode = hRoot.FirstChild( "Cards" ).FirstChild().ToNode();
		for( pCardNode; pCardNode; pCardNode=pCardNode->NextSiblingElement())
		{
			CardInfo c = CardInfo();
			c.load(pCardNode);
			cardTypes[c.id] = c;
		}


	}
	else
	{
		//std::cout << "\nFailed to load the units\n";
	}

	DeveloperConsole::write("Buildings Loaded: ");
	DeveloperConsole::writeLine(buildingTypes.size());
	DeveloperConsole::write("Units Loaded: ");
	DeveloperConsole::writeLine(unitTypes.size());
	DeveloperConsole::write("Terrain Loaded: ");
	DeveloperConsole::writeLine(terrainTypes.size());
	

}
Example #2
0
DFhackCExport command_result plugin_init ( color_ostream &out, vector <PluginCommand> &commands) {
    commands.push_back(PluginCommand("fortplan","Lay out buildings in your fortress based on a Quickfort-style CSV input file.",fortplan,false,
        "Lay out buildings in your fortress based on a Quickfort-style CSV input file.\n"
        "Usage: fortplan [filename]\n"));

    buildings.push_back(BuildingInfo("c",df::building_type::Chair,"Chair",1,1));
    buildings.push_back(BuildingInfo("b",df::building_type::Bed,"Bed",1,1));
    buildings.push_back(BuildingInfo("t",df::building_type::Table,"Table",1,1));
    buildings.push_back(BuildingInfo("n",df::building_type::Coffin,"Coffin",1,1));
    buildings.push_back(BuildingInfo("d",df::building_type::Door,"Door",1,1));
    buildings.push_back(BuildingInfo("x",df::building_type::Floodgate,"Floodgate",1,1));
    buildings.push_back(BuildingInfo("h",df::building_type::Box,"Box",1,1));
    buildings.push_back(BuildingInfo("r",df::building_type::Weaponrack,"Weapon Rack",1,1));
    buildings.push_back(BuildingInfo("a",df::building_type::Armorstand,"Armor Stand",1,1));
    buildings.push_back(BuildingInfo("f",df::building_type::Cabinet,"Cabinet",1,1));
    buildings.push_back(BuildingInfo("s",df::building_type::Statue,"Statue",1,1));
    buildings.push_back(BuildingInfo("y",df::building_type::WindowGlass,"Glass Window",1,1));
    buildings.push_back(BuildingInfo("m",df::building_type::AnimalTrap,"Animal Trap",1,1));
    buildings.push_back(BuildingInfo("v",df::building_type::Chain,"Chain",1,1));
    buildings.push_back(BuildingInfo("j",df::building_type::Cage,"Cage",1,1));
    buildings.push_back(BuildingInfo("H",df::building_type::Hatch,"Floor Hatch",1,1));
    buildings.push_back(BuildingInfo("W",df::building_type::GrateWall,"Wall Grate",1,1));
    buildings.push_back(BuildingInfo("G",df::building_type::GrateFloor,"Floor Grate",1,1));
    buildings.push_back(BuildingInfo("B",df::building_type::BarsVertical,"Vertical Bars",1,1));
    buildings.push_back(BuildingInfo("~b",df::building_type::BarsFloor,"Floor Bars",1,1));
    buildings.push_back(BuildingInfo("R",df::building_type::TractionBench,"Traction Bench",1,1));
    buildings.push_back(BuildingInfo("~s",df::building_type::Slab,"Slab",1,1));
    buildings.push_back(BuildingInfo("N",df::building_type::NestBox,"Nest Box",1,1));
    buildings.push_back(BuildingInfo("~h",df::building_type::Hive,"Hive",1,1));

    planner.initialize();

    return CR_OK;
}