Yeah, famous last words. What if I want to add a new religion, resource, or corporation?
AFAIK even WoC requires that all the font icons be in a single font file. And that file has to have a specific file name (there are two sizes). You can't just say, "oh, load this other font file over here please."
BULL forced us to remove ALL spaces from the paths to button dds for buildings too, which caused some issues originally.
*sigh* Why do I hear of this only now in an unrelated thread instead of back in March when the first pre-releases of BULL got posted?

Was the problem with the building icons in the city bar hover?
In any case, I'll definitely not include spaces.
If XML A depends on XML B, you put a dependency tag in XML A for B, and while the game is init XML, and it hasn't seen XML B by the time it gets to XML A, it skips the loading of the particular object. Not the whole file, just each object with the dependency tag.
I envision dependencies for BUG differently because BUG loads only Python files which are loaded after all XML files have been parsed. You would place the unique mod ID of one mod's configuration XML file in another mod's file. When BUG sees this, it puts the file into a queue of "mods with dependencies" for later processing. All mods that have no dependencies are loaded in some predictable but unimportant order (else you'd put a dependency on it).
Once all non-dependent mods are loaded the ones with dependencies would be ordered according to their dependencies. If A depends on B depends on C, A loads, then B, then C as you'd expect. If any mod fail to load or cannot be found, its dependents are not loaded at all.
So in BUG "depends on" means "must load after and cannot load without". I imagine there really aren't too many cases where order will matter in the Python code. If one mod creates a new event type that another mod consumes, either will create the event type automatically. Order would matter more if two mods had a handler for the same event type of game utils callback, but only if one wanted to override the other.
With events, you typically want both mods to receive the event and do whatever they want. With game utils callbacks only one can return a value back to the SDK. BUG allows you to tell it to override previously installed handlers already, but I doubt many people will need this.
Dependency in BUG, then, will be more about one mod requiring another mod to do anything useful (needs a function from or enhances another mod). In this case you only care that the dependent one isn't loaded if the user uninstalls the depended-upon mod.
Dependency in BUG will most definitely not be done per-object. Of course I'm not 100% certain of that, but that seems like a nightmare. For one thing, Python code doesn't break down that easily like XML does. You may depend on the existence of a function in another module or a global variable or an event type or an option setting, etc. There's no way to easily make that all work in the XML. I don't have that kind of time, and no modder would ever understand the documentation anyway so why bother?
Does it still sound like I need to use the MLF files? In my world, the only place where you need to say that one mod depends on another mod is in the mod's own config XML file (the one that depends on the other). This means you can depend on someone else's mod without ever getting them to do anything, nor will the user need to touch an MLF to do it.
BTW, could you please post one example of a dependency tag in use? How do you specify the other object that you depend on? Do you reference it by modmod folder name?
The easy approach is just to get a Community TGA going which contains bloody well everything anyone might ever want.
Yes, I'm really hoping to avoid the need for this with BUG's new configuration. Each mod should be able to identify the other mods it depends upon without needing any coordination. This is unrelated to the font file; this just seemed like a good segue.
Hm, I thought each modmod would be under Assets/Modules. The way I understand you here it basically is a whole set of Assets dirs (rather than being underneath Modules).
A combination of the two, actually.
Code:
MyWoCBasedMod/
Assets/
Modules/
BobsModMod/
Config/
Python/
XML/
FranksModMod/
Art/
XML/
Each individual modmod is free to stuff all of its files into its top-level modmod folder if it wants. I tend to prefer organization even for just a few files.
Since BUG will really only be concerned with Python and Config XML (not normal XML loaded by BTS/WoC), these will be better served placed into separate folders. For one thing, I need to add every folder that contains any Python code to the system Python path. The fewer the folders the better, and the fewer non-Python files in them the better.
well if you do not parse that file while it exists, your interpretation of load order would differ from the one used by the dll (in essence your is alphabetical while the dll one is MLF based)
Keep in mind that the overall game load order is file-type based:
- XML, by object type so all Civs then all Leaders then all Units . . .
- Fonts
- BTS Python
- BUG Config XML
- BUG-loaded Python
So really, the MLF/WoC load order of the XML files has no impact on BUG's Config XML load order. I could load them in the same order, but the necessary orderings may in fact be different. One modmod which needs to have its Units loaded after another mod's may not care in which order its BUG Config XML is loaded, or it may need it loaded before the other mod.