Skip to content

Commit e118c40

Browse files
committed
ok actually lets refactor to file rn
1 parent 053012c commit e118c40

File tree

6 files changed

+24
-9
lines changed

6 files changed

+24
-9
lines changed

src/resource/ResourceLoader.cpp

+13-1
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,24 @@ std::shared_ptr<IResource> ResourceLoader::LoadResource(std::shared_ptr<File> fi
9393

9494

9595

96-
auto factory = GetFactory(fileToLoad->InitData->IsXml) mFactories[fileToLoad->InitData->Type];
96+
auto factory = GetFactory(fileToLoad->InitData->Format, fileToLoad->InitData->Type, fileToLoad->InitData->ResourceVersion);
9797
if (factory == nullptr) {
9898
SPDLOG_ERROR("Failed to load resource: Factory does not exist ({} - {})", fileToLoad->InitData->Type,
9999
fileToLoad->InitData->Path);
100100
}
101101

102+
// todo: figure out a better way to handle this
103+
// probably just have it so ReadReasource takes in the pointer to fileToLoad directly
104+
switch (fileToLoad->InitData->Format) {
105+
case RESOURCE_FORMAT_BINARY:
106+
factory->ReadResource(fileToLoad->InitData, std::make_shared<BinaryReaderBox>())
107+
case RESOURCE_FORMAT_XML:
108+
109+
default:
110+
SPDLOG_ERROR("invalid resource format {}", fileToLoad->InitData->Format);
111+
return nullptr;
112+
}
113+
102114
if (fileToLoad->InitData->IsXml) {
103115
if (fileToLoad->XmlDocument == nullptr) {
104116
SPDLOG_ERROR("Failed to load resource: File has no XML document ({} - {})", fileToLoad->InitData->Type,

src/resource/archive/Archive.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ std::shared_ptr<ResourceInitData> Archive::CreateDefaultResourceInitData() {
173173
resourceInitData->Type = static_cast<uint32_t>(ResourceType::None);
174174
resourceInitData->ResourceVersion = -1;
175175
resourceInitData->IsCustom = false;
176-
resourceInitData->IsXml = false;
176+
resourceInitData->Format = RESOURCE_FORMAT_BINARY;
177177
resourceInitData->ByteOrder = Endianness::Native;
178178
return resourceInitData;
179179
}
@@ -230,7 +230,7 @@ std::shared_ptr<ResourceInitData> Archive::ReadResourceInitDataXml(const std::st
230230

231231
// XML
232232
resourceInitData->IsCustom = true;
233-
resourceInitData->IsXml = true;
233+
resourceInitData->Format = RESOURCE_FORMAT_XML;
234234

235235
auto root = document->FirstChildElement();
236236
resourceInitData->Type = Context::GetInstance()->GetResourceManager()->GetResourceLoader()->GetResourceType(root->Name());

src/resource/factory/DisplayListFactory.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ std::shared_ptr<IResource> ResourceFactoryXMLDisplayListV0::ReadResource(std::sh
192192

193193
auto dl = std::make_shared<DisplayList>(initData);
194194

195-
auto child = reader->FirstChildElement();
195+
auto child = reader->FirstChildElement()->FirstChildElement();
196196

197197
while (child != nullptr) {
198198
std::string childName = child->Name();

src/resource/factory/VertexFactory.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ std::shared_ptr<IResource> ResourceFactoryXMLVertexV0::ReadResource(std::shared_
5858

5959
auto vertex = std::make_shared<Vertex>(initData);
6060

61-
auto child = reader->FirstChildElement();
61+
auto child = reader->FirstChildElement()->FirstChildElement();
6262

6363
while (child != nullptr) {
6464
std::string childName = child->Name();

src/resource/readerbox/ReaderBox.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#pragma once
22

33
namespace LUS {
4-
class ReaderBox {};
4+
class ReaderBox {
5+
public:
6+
virtual ~ReaderBox() = 0;
7+
};
58
} // namespace LUS

src/resource/readerbox/XMLReaderBox.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
namespace LUS {
66
class XMLReaderBox : public ReaderBox {
77
public:
8-
XMLReaderBox(std::shared_ptr<tinyxml2::XMLElement> reader) {
8+
XMLReaderBox(std::shared_ptr<tinyxml2::XMLDocument> reader) {
99
mReader = reader;
1010
};
11-
std::shared_ptr<tinyxml2::XMLElement> GetReader() {
11+
std::shared_ptr<tinyxml2::XMLDocument> GetReader() {
1212
return mReader;
1313
};
1414
~XMLReaderBox() {
1515
mReader = nullptr;
1616
};
1717

1818
private:
19-
std::shared_ptr<tinyxml2::XMLElement> mReader;
19+
std::shared_ptr<tinyxml2::XMLDocument> mReader;
2020
};
2121
} // namespace LUS

0 commit comments

Comments
 (0)