WIM 3.0.6 breaks on 2 things in the current 3.1.0 build.
First issue is not an issue with WIM code but with the included Astrolabe library.
Temporary "fix" to stop Astrolabe bugging out is to disable support for minimap rotation.
Changes needed: Astrolabe rev92
1. Replace occurrences of MiniMapCompassRing with MinimapCompassTexture.
2. Find occurrences of minimapRotationOffset and hardcode them to 0.
minimapRotationOffset = 0;
This essentially disables support for rotating minimap in Astrolabe so it is not a real fix,
but it stops Astrolabe bugging out and refusing to load which subsequently breaks WIM.
Slightly longer explanation:
MiniMapCompassRing was a Model object in 3.0.x that has a :GetFacing() method for getting rotation in radians.
The replacement MinimapCompassTexture is a Texture object that has no method for getting rotation.
A way to work around that is by using the returns from MinimapCompassTexture:GetTexCoord() and using trig functions to derive the rotation from the TL-BL set of cartesian coords (first 4 returns from GetTexCoord())
Zootfizzle said that in a subsequent ptr build they're introducing a
local degrees = GetPlayerFacing();
so I chose not to spend time creating a user function to derive rotation from GetTexCoord()
to replace the now non-existing :GetFacing() in Astrolabe.
Second issue is with actual WIM code.
It is related to changes in the ChatFrame_AddMessageEventFilter("event", filterfunc) function.
the filterfunc signature has changed from
function filterfunc (message)
if condition1 then
return true
end
return false
end
to
function filterfunc (self, event, ...)
if condition1 then
return true, ...
end
return false, ...
end
Following changes are needed to WIM code:
WIM.lua line 254 and below
local function honorChatFrameEventFilter(event, ...)
local chatFilters = _G.ChatFrame_GetMessageEventFilters(event);
if chatFilters then
local filter = false;
for _, filterFunc in pairs(chatFilters) do
filter, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11 = filterFunc(event, ...);
if filter then
return true, ...;
end
end
end
return false, ...;
end
WIM.lua line 276 in the eventhandler also needs to be changed accordingly to
if(honorChatFrameEventFilter(event, ...)) then
I did also change Modules\WhisperEngine.lua
line 618 to
local msg = select(1, ...);
and line 621 to
local win = Windows[FormatUserName(string.match(msg, ERR_CHAT_PLAYER_NOT_FOUND_S)) or "NIL"];
WIM works on 3.1.0 after that.
PS. I'd be happy to test and report/help debug for wow 3.1.0.