• 0

    posted a message on WoW Threads for Addon Development

    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

    CURRENT VERSION: 
    Prototype Version 1.0 (Pre-Alpha)

    DESCRIPTION:
    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.

    SETTING OPTIONS:

    Via command line


     

    Posted in: Addon Ideas
  • 0

    posted a message on Refreshing LibUIDropDownMenu Options

    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

     

    Posted in: AddOn HELP!
  • 0

    posted a message on Lua Error Interpretation:

     

    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

    Posted in: Lua Code Discussion
  • To post a comment, please or register a new account.