Exemple #1
0
void UInventoryComponent::loadCategories()
{
	if (!mainInventory || !requiresUI ) return;
	
		static const FString ContextString(TEXT("GENERAL"));
		for (uint8 i = 0; i < mainInventory->categories.Num(); i++)
		{
			if (!mainInventory->categories[i]) continue;
			mainInventory->categories[i]->cat = ItemCategory(i);
			mainInventory->categories[i]->OnClicked.AddDynamic(this, &UInventoryComponent::onCategoryClicked);

		}
		for (uint8 i = 0; i < mainInventory->otherCategories.Num(); i++)
		{
			if (!mainInventory->otherCategories[i]) continue;
			mainInventory->otherCategories[i]->cat = ItemCategory(i);
			mainInventory->otherCategories[i]->OnClicked.AddDynamic(this, &UInventoryComponent::onOtherCategoryClicked);

		}
	
}
/** reads the categories file */
int readCategories(std::vector<ItemCategory> &categories)
{
	std::ifstream in( cat_file_name.c_str() );
	// file could not be opened for some reason 
	if (!in.is_open())
	{
		QString error = "Error reading file \"" + QString::fromStdString(cat_file_name) + "\".";
		Utils::message(error);
		return 1;
	}

	std::string line ("");
	std::list<std::string> line_content;
	while ( getline(in, line) )
	{
		// skip current line because it's empty or it's a comment
		if (line.compare("") == 0 || line[0] == '#')
			continue;

		line_content = Utils::splitString(line, '\t');
		auto it = line_content.cbegin(); 
		// more than two columns found in current line
		if (line_content.size() != 2)
		{
			Utils::message("File format error in categories file.");
			return 2;
		}

		if (atoi((it++)->c_str()) != categories.size())
		{
			Utils::message("Index error in categories file. Category-IDs must be numbered consecutively.");
			return 3;
		}

		categories.push_back(ItemCategory(QString::fromStdString(*it)));
	}
	
	return 0;
}