I've completed a working multithreading library and programmer's guide for WoW addon developers. Before I release the addon I was hoping to signup a few devs to review the Programmer's Guide before I release the addon. I'm specifically looking for feedback on missing functionality. Here's the README.md file:
# WoWThreads (Code name Talon)
An Asynchronous Non-preemptive Multithread Library for World of Warcraft Addon Developers
WowThreads (code name Talon) is an API used to incorporate asynchronous, non-preemptive multithreading into WoW Addons. Talon provides the major features you would expect such as thread creation, joining, signaling, delay, yield, and so forth. Here is a summary of some of the services that are available in this release.
Threads - creation, yield, join, exit, thread:destroy, signal (set/get), state (active, suspended, terminated)
Signals - SIG_NONE, SIG_RETURN, and SIG_WAKEUP.
Tuning - Get/Set thread and clock intervals. Collection of per thread idle time, runtime, and other stats
Debug - Error handling, runtime error location
Talon is designed to increase an addon's ability to take advantage of the WoW client's inherent asynchronicity by offering threads to which tasks can be assigned and then run asnchronously relative to the WoW client's execution code path. For example, the OnEvent() service is nothing more that a normal procedure call (i.e., the WoW client calls 'into' the addon's code). As such, OnEvent() does not return to its caller (the WoW client) until the addon is done with the event. By passing the event off to a Talon thread for asynchronous processing, the OnEvent() service can return immediately allowing the addon's thread to handle the event. This substantially increases the asynchronicity of an addon.
For more information and examples, see the WoWThreads Programmer's Guide in the Doc directory.
USAGE:
Talon is a set of services that can be used to incorporate Asynchronous, non-preemptive multithreading services into a WoW Addon.
My AddOn's option menu is currently based on the LibUIDropDownMenu but alas, having implemented the menu, I've come to find out that it cannot be refreshed. This is important because one of the menu's options presents a checkbox for each bag the player has installed. The problem is that the bags change: some are replaced, some are added to an empy slot, some are removed and placed in a bank slot, etc. The only way to refresh the menu (and therefore reflect such a change) is to reload the UI - which works just fine.
1) Is my understanding of LibUIDropDownMenu incorrect and it can, in fact, be refreshed?
I have a very simple piece of code the raises an error I am unable to understand. Perhaps someone with a more extensive understanding of Lua can clue me in as to what I'm missing. Here is the method declaration in question:
-- returns the slot in which the bag resides
function Bag:bagSlot()
return self.bagSlot -- this is an integer value representing the slot into which a bag is installed
end
Now, here's the method's invocation
local b = Bag( bagSlot )
local n = b:bagSlot()) -- this is line 23
Which fails and raises the following error message (I'm using Swatter)
Message: ..\AddOns\Sandbox\UnitTests\BagTests.lua line 23: attempt to call method 'bagSlot' (a number value)
I'm sure I'm missing something obvious. Thanks, in advance
0
I've completed a working multithreading library and programmer's guide for WoW addon developers. Before I release the addon I was hoping to signup a few devs to review the Programmer's Guide before I release the addon. I'm specifically looking for feedback on missing functionality. Here's the README.md file:
0
My AddOn's option menu is currently based on the LibUIDropDownMenu but alas, having implemented the menu, I've come to find out that it cannot be refreshed. This is important because one of the menu's options presents a checkbox for each bag the player has installed. The problem is that the bags change: some are replaced, some are added to an empy slot, some are removed and placed in a bank slot, etc. The only way to refresh the menu (and therefore reflect such a change) is to reload the UI - which works just fine.
1) Is my understanding of LibUIDropDownMenu incorrect and it can, in fact, be refreshed?
2) What other solutions should I be looking at?
Thanks, in advance
0
I have a very simple piece of code the raises an error I am unable to understand. Perhaps someone with a more extensive understanding of Lua can clue me in as to what I'm missing. Here is the method declaration in question:
-- returns the slot in which the bag resides
function Bag:bagSlot()
return self.bagSlot -- this is an integer value representing the slot into which a bag is installed
end
Now, here's the method's invocation
local b = Bag( bagSlot )
local n = b:bagSlot()) -- this is line 23
Which fails and raises the following error message (I'm using Swatter)
Message: ..\AddOns\Sandbox\UnitTests\BagTests.lua line 23:
attempt to call method 'bagSlot' (a number value)
I'm sure I'm missing something obvious. Thanks, in advance