The biggest reason I haven't written more documentation to expand the Docs/Themerdocs/Examples folder is that nobody has come forward with a review of any of it. If nobody is going to point out the confusing parts in what I've written, I don't know if I'm getting through or not. I've even posted links to the documentation and explicitly asked people to point out confusing parts in threads on ZIV where people asked for theme help, and no response.
waiei's version check just relies on Branch.AfterTitleMenu going to ScreenCaution on the newer versions. Circumvent that, and you can get to Select Music.
So let's see what kinds of errors they have (keep in mind that every one of these means that the theme code was interrupted in the middle of whatever it was doing. If it was doing something important, that important thing is unfinished or not done):
00:16.930: WARNING: Error playing command:/Themes/waiei/Graphics/ScreenSelectMusic BannerFrame/default.lua:72: attempt to call method 'setanimate' (a nil value)
Calling a function that doesn't exist. This probably got renamed to "animate".
00:16.936: WARNING: Error playing command:/Themes/waiei/BGAnimations/ScreenSelectMusic decorations/default.lua:118: calling 'y' on bad self (number expected, got nil)
Passing nil as a coordinate for a position.
Actual line: InitCommand=cmd(x,THEME:GetMetric("ScreenSelectMusic","BannerFrameX");y,THEME:GetMetric("ScreenSelectMusic","BannerFrameY"));
From waiei's metrics.ini: BannerFrameY=
Come on guys, if you're going to use the value of a metric, you should probably set it to something.
00:17.037: WARNING: Error playing command:/Themes/waiei/Graphics/MusicWheelItem Song NormalPart.lua:185: attempt to index local 'params' (a nil value)
Code:
InitCommand=cmd(playcommand,"Set");
SetMessageCommand=function(self,params)
--self:Load( THEME:GetPathG("_MusicWheel","BannerFrame color"));
if col~="" then
self:diffuse(col_t[1],col_t[2],col_t[3],col_t[4]);
else
if params.HasFocus then
self:diffuse(col_t[1],col_t[2],col_t[3],col_t[4]);
else
self:diffuse(Color("White"));
end;
end;
end;
For those that don't know lua, they've created SetMessageCommand in their actor, and made it rely on having a parameter table passed when it runs. Then when THEY choose to run it in their InitCommand, they don't pass any parameter table.
MusicWheelItems actually need a Set command for the music wheel to set them, the mistake here is not providing the parameters when calling it from InitCommand.
00:17.147: WARNING: Error playing command:/Themes/waiei/Graphics/MusicWheelItem Song NormalPart.lua:100: attempt to index local 'song' (a nil value)
This is also in a MusicWheelItem SetCommand. MusicWheelItems load up the actors for every type of item, not just the particular type they happen to display at one moment. So checking whether the parameters like the Song or Course are nil is necessary. (this is really the big one, there are multiple Song and Course nil errors reported for every item on the music wheel)
00:17.204: Dialog: "Error playing command:/Themes/waiei/BGAnimations/ScreenSelectMusic decorations/scorelist.lua:44: attempt to index upvalue 'EXF_Metertype' (a nil value)
The "in" transition layer is part of the screen, so it's loaded at the same time as the rest of the screen. All lua code at global scope in a screen's lua files runs before any InitCommand. waiei has the code to set EXF_Metertype inside the InitCommand for their "in" transition layer, but scorelist.lua sets a local variable that depends on the InitCommand having run first. Since the InitCommand doesn't run first, scorelist's EXF_Metertype variable ends up nil, completely breaking whatever advanced feature they were trying to use it for, even if an error weren't visibly displayed.
00:17.209: WARNING: Error playing command:/Themes/waiei/Graphics/ScreenSelectMusic GrooveRadarP2/default.lua:71: attempt to index a nil value
The current song is changed before the current steps are changed, so when responding to the song being changed, the steps might be nil.
Side note: I'm playing as Player 2 alone, and some of these errors are for Player 1's groove radar. Players that aren't joined also have no steps set.
This is probably the second biggest one, lots of things checking the current song/steps without realizing they're sometimes nil.
I think that's actually all the types of errors encountered before trying to pick a song. None of these are hard to fix, they should all be a trivial (<5 minutes each) problem for a competent themer. Waiei is still actively working on their theme, so I don't understand why they prefer to disable it entirely on newer versions rather than spend a few minutes fixing mistakes.