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; }