|
@@ -740,9 +740,21 @@ void CArtHandler::erasePickedArt(const ArtifactID & id)
|
|
|
{
|
|
|
CArtifact *art = objects[id];
|
|
|
|
|
|
- if(auto artl = listFromClass(art->aClass))
|
|
|
+ if(!(art->aClass & CArtifact::ART_SPECIAL))
|
|
|
{
|
|
|
- auto & artifactList = artl->get();
|
|
|
+ auto & artifactList = treasures;
|
|
|
+ switch(art->aClass)
|
|
|
+ {
|
|
|
+ case CArtifact::ART_MINOR:
|
|
|
+ artifactList = minors;
|
|
|
+ break;
|
|
|
+ case CArtifact::ART_MAJOR:
|
|
|
+ artifactList = majors;
|
|
|
+ break;
|
|
|
+ case CArtifact::ART_RELIC:
|
|
|
+ artifactList = relics;
|
|
|
+ break;
|
|
|
+ }
|
|
|
if(artifactList.empty())
|
|
|
fillList(artifactList, art->aClass);
|
|
|
|
|
@@ -759,23 +771,6 @@ void CArtHandler::erasePickedArt(const ArtifactID & id)
|
|
|
logMod->warn("Problem: cannot find list for artifact %s, strange class. (special?)", art->getNameTranslated());
|
|
|
}
|
|
|
|
|
|
-std::optional<std::reference_wrapper<std::vector<CArtifact *>>> CArtHandler::listFromClass(CArtifact::EartClass artifactClass)
|
|
|
-{
|
|
|
- switch(artifactClass)
|
|
|
- {
|
|
|
- case CArtifact::ART_TREASURE:
|
|
|
- return {std::ref(treasures)};
|
|
|
- case CArtifact::ART_MINOR:
|
|
|
- return {std::ref(minors)};
|
|
|
- case CArtifact::ART_MAJOR:
|
|
|
- return {std::ref(majors)};
|
|
|
- case CArtifact::ART_RELIC:
|
|
|
- return {std::ref(relics)};
|
|
|
- default: //special artifacts should not be erased
|
|
|
- return {};
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
void CArtHandler::fillList( std::vector<CArtifact*> &listToBeFilled, CArtifact::EartClass artifactClass )
|
|
|
{
|
|
|
assert(listToBeFilled.empty());
|