void CardSet::AddCards(const string& filename) { int old_nextcard=nextcard; if(db.Base()==0) { db.ReadFile(Localization::File(filename)); Validate(db); db.Base()->DelAttribute("name"); } else { XML::Document add; add.ReadFile(Localization::File(filename)); Validate(add); db("cards").front()->AddSubelements(add("cards","card")); } list<XML::Element*>::const_iterator i; card=vector<XML::Element*>(nextcard); list<XML::Element*>& C=db("cards").front()->Subs(); i=C.begin(); for(int j=0; j<nextcard; j++) card[j]=*i++; for(int j=old_nextcard; j<nextcard; j++) { string rarity=AttrValue(j,"rarity"); while(rarity!="") { size_t k; for(k=0; k<rarity.length(); k++) if((rarity[k]>='0' && rarity[k]<='9') || (rarity[k]=='+' && (k+1<rarity.length()))) break; rarities.insert(rarity.substr(0,k)); while(k<rarity.length() && rarity[k]!='+') k++; if(k+1<rarity.length()) rarity=rarity.substr(k+1,rarity.length()); else rarity=""; } list<string> att=Attributes(j); for(list<string>::iterator n=att.begin(); n!=att.end(); n++) attributes.insert(*n); } }