blob: fc72695317bc316329608042db53f64e108a1ea2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include <bsapacker/ArchiveBuilderFactory.h>
#include <bsapacker/GeneralArchiveBuilder.h>
#include <bsapacker/NullArchiveBuilder.h>
#include <bsapacker/TextureArchiveBuilder.h>
#include <bsapacker/TexturelessArchiveBuilder.h>
#include "NexusId.h"
namespace BsaPacker
{
ArchiveBuilderFactory::ArchiveBuilderFactory(const IArchiveBuilderHelper* archiveBuilderHelper)
: m_ArchiveBuilderHelper(archiveBuilderHelper)
{
}
std::vector<bsa_archive_type_e> ArchiveBuilderFactory::GetArchiveTypes(const IModDto* modDto) const
{
switch (modDto->NexusId()) {
case NexusId::Morrowind:
return std::vector<bsa_archive_type_e> { baTES3 };
case NexusId::Oblivion:
return std::vector<bsa_archive_type_e> { baTES4 };
case NexusId::Fallout3:
case NexusId::NewVegas:
case NexusId::Skyrim:
case NexusId::Enderal:
return std::vector<bsa_archive_type_e> { baFO3 };
case NexusId::SkyrimSE:
case NexusId::EnderalSE:
return std::vector<bsa_archive_type_e> { baSSE };
case NexusId::Fallout4:
return std::vector<bsa_archive_type_e> { baFO4, baFO4dds };
case NexusId::Starfield:
return std::vector<bsa_archive_type_e> { baSF, baSFdds };
default:
return std::vector<bsa_archive_type_e> { baNone };
}
}
std::unique_ptr<IArchiveBuilder> ArchiveBuilderFactory::Create(const bsa_archive_type_e archiveType, const IModDto* modDto) const
{
switch (archiveType) {
case baTES3:
case baTES4:
case baFO3:
case baSSE:
return std::make_unique<GeneralArchiveBuilder>(this->m_ArchiveBuilderHelper, modDto->Directory(), archiveType);
case baFO4:
case baSF:
return std::make_unique<TexturelessArchiveBuilder>(this->m_ArchiveBuilderHelper, modDto->Directory(), archiveType);
case baFO4dds:
case baSFdds:
return std::make_unique<TextureArchiveBuilder>(this->m_ArchiveBuilderHelper, modDto->Directory(), archiveType);
case baNone:
default:
return std::make_unique<NullArchiveBuilder>();
}
}
} // namespace BsaPacker
|