Okay, so I and a lot of others are getting messages about addons being FUBAR. Of course this is related to the new on demand nature of the Blizzard addons. Since those addons, and thus their XML components, don't load at start, addons that enhance them are now broken. AuctionIt, for example, will error on start, because it tries to manipulate objects that are no longer there. Many of you probably know this but I wanted to summarize the problem.
So has there been any discussion on what to do about this? I'm thinking the fixes all have to be addon dependent, basically by having the addon hook its corresponding dependency and disabling certain of its features and initialization until that dependency loads. Any other thoughts?
The trick is knowing when that dependacy does load. Could Ace have an event fire off when load on demand addons load? Or even better yet one we can pass what dependancy we need to and Ace runs a meathod in our addone when the dependacy loadsup. It would work exatly like registering events only for dependancies. Is that possible?
There are already functions in the game you can hook for this. For example, you can hook AuctionFrame_LoadUI() to know when the Auction UI is being loaded. There's also the ADDON_LOADED event that fires when any addon is loaded. But you have to check arg1 for the specific addon you're looking for.
What happens if you put "AuctionFrame" in the dependancies list of AuctionIt? :)
That would be waaay too much forward thinking for Blizzard designers, though, now that I think of it...
Really, the "ADDON_LOADED(arg1)" thing is what it's all about. But an Ace-run dependancy system which will inform you when all your dependancies are loaded and that you can load would be neat. Would also let you say "turn on this mod" and it could auto-turnon all mods it depends on, in an appropriate order...
I think a central Ace-based solution will be messy. It should be easy enough to hook the functions (or the event). What we really need is an addon management system and to make such addons dependent on one of these load on demand addons load on demand themselves.
What we really need now from Blizzard is a new toc line to the effect of OnDemandDeps, then their LoadAddOn should automatically load the on demand chain. We can effectively do this in an addon manager but then it requires at least one-time configuration on the player's part to tell the system when to load a dependent addon.
No the idea of moving bliz UI stuff to addons along with load on demand means when other addons are created that totaly replace the Bliz version the bliz ones don't need to ever be loaded up into mem. Bliz is trying to alow us the addon developers to replace their own ui with our own versions.
That's not to say their implemetation doesn't stink.
The point is with half the general interface not loading up every time you log in and reloadui the UI, you load a lot faster. I can very obviously tell that I'm loading in less time. on my 5-year old machine... By delaying 10 seconds of my load time 'til I actually open the window, I don't even notice a 1-second load time for the Auction House window, 'cause I always have 1-2 seconds of lag in IF anyway, so it's like the game is loading faster for no downside.
They didn't do this for modders. They did it for low-end machines. The game runs MUCH better on my friend's machine, who is below-minimum-spec in every respect according to the box. not enough CPU, not enough memory, not enough video card, etc. He can enter Oggrimar now without huge lag. Still can't enter Ironforge, of course. :P
It means that modders have more work to do to ALSO help low end machines, and it means that high end machine people can just download an "auto-load everything" mod to fix things. It ALSO happens to (probably) allow us to completely replace their interfaces, and cause them never to load at all, which is totally sweet in my mind, but it is just a beneficial side effect to a decent idea for making their game less inefficient.