feat(filesystem): Implement access to shadowed files inside archives #1483
+356
−217
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change implements access to shadowed files inside archives.
The Archive File System already kept track of all archives regardless of the shadowing, but made shadowed files inaccessible. This is now changed, which allows for some special uses cases we will run into when dealing with shadowed files of any kind. Shadowing is especially prevalent in Zero Hour, because that shadows a large amount of Generals files.
The review is quite a bit intricate given the complexity of the matter, the convuluted EA code and use of the uncommon multimap.
What is a shadowed file?
Consider the following files:
C:\GeneralsZH\art\textures\house.dds
shadowsart\textures\house.dds
inC:\GeneralsZH\TexturesZH.big
art\textures\house.dds
inC:\GeneralsZH\TexturesZH.big
shadowsart\textures\house.dds
inC:\Generals\Textures.big
What is changed?
File instances can now be accessed by their instance index: