Basically, I reworked the asset system so assets are now tied to their mods, and when it tries to get an asset it now goes through a process of first trying to get from a namespace/folder, then second try to get it from an asset replacement, and third it tries to get it from vanilla game or a mod, with special priority given to the current map mod. This all lives in a new ModAssetDictionary, which sort of aggregates the asset dictionaries from mods, but lets us continue to keep referencing things the same way we were doing before(to minimize conflicts with upstream, and not have to change every place that touches an asset) This also introduces a new ModInfo concept which pulls from a Fuji.json file and contains various metadata about the mod, including asset replacements, a name, a unique id, the mod author's name, a version number, and dependencies.
Note: The namespace stuff currently makes things not visible in trenchbroom if they are used. Also, this currently doesn't support asset replacing audio files or sprites, because those are more complicated, and kind of broke when I tried. We should maybe look into those as a separate PR.
Moving forward with this to unblock release. I think it's in a good enough shape to go. We can always iterate on it later if we decide to tweak the priority.
Basically, I reworked the asset system so assets are now tied to their mods, and when it tries to get an asset it now goes through a process of first trying to get from a namespace/folder, then second try to get it from an asset replacement, and third it tries to get it from vanilla game or a mod, with special priority given to the current map mod. This all lives in a new ModAssetDictionary, which sort of aggregates the asset dictionaries from mods, but lets us continue to keep referencing things the same way we were doing before(to minimize conflicts with upstream, and not have to change every place that touches an asset) This also introduces a new ModInfo concept which pulls from a Fuji.json file and contains various metadata about the mod, including asset replacements, a name, a unique id, the mod author's name, a version number, and dependencies.
Note: The namespace stuff currently makes things not visible in trenchbroom if they are used. Also, this currently doesn't support asset replacing audio files or sprites, because those are more complicated, and kind of broke when I tried. We should maybe look into those as a separate PR.