-
Notifications
You must be signed in to change notification settings - Fork 121
feat(filesystem): Implement access to shadowed files inside archives #1483
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
836fa3b to
bd69bc2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change is not adding instance access to this function. I think it opens a potential rabbit hole and increase the complexity of this change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something worthwhile to investigate. I did not intent to fix it in this change because the potential side effects are unknown.
bd69bc2 to
37f1631
Compare
Skyaero42
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok
37f1631 to
b6f8342
Compare
b6f8342 to
11d6fcf
Compare
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.ddsshadowsart\textures\house.ddsinC:\GeneralsZH\TexturesZH.bigart\textures\house.ddsinC:\GeneralsZH\TexturesZH.bigshadowsart\textures\house.ddsinC:\Generals\Textures.bigWhat is changed?
File instances can now be accessed by their instance index: