v1.0.0

Details

  • Filename
    OakInterruptsDisplay-v1.0.0.zip
  • Uploaded by
  • Uploaded
    Jul 20, 2016
  • Size
    30.26 KB
  • Downloads
    191
  • MD5
    ec1d1c2107ec251ae9ea7ad8408607a6

Supported WoW Retail Versions

  • 7.0.3

Changelog

tag v1.0.0
c240760bb2ecb36c19ae33680b002528848f960a
Oakshlaran <>
2016-07-21 01:20:31 +1000

Tagging as v1.0.0

--------------------

Oakshlaran:
    - Bump TOC for 7.0 and version for v1.0.0
    - Fix frame colour not showing in 7.0
    In 7.0 the call SetTexture doesn't work for setting a plain colour, and
    the new call SetColorTexture is needed.
    - Rename 'autoinclude' slash commands to 'autofill'
    - Rename key bind slash command and menu item
    Slash command renamed to 'bind'/'nobind' and menu item renamed to 'Use
    reset bind'.
    - Fix binding header not using addon title
    - Fix bugs and move binding to 'Addons' section
    A few bugs occurred when a rotation was reset when it was empty/had
    next_index not set due to the announce call, this was fixed by ensuring
    the user is in combat and there ar some interrupters in the display.
    - Add hotkey reset functionality
    - Fix new addon name not being used
    When the addon's name was changed (in the TOC) the code was not updated
    to use this value and was instead using the 'name' as defined by the
    folder name. This has been rectified so that the correct value (the
    title given by GetAddOnInfo()) is used.
    - Improve terminology used in menu and commands
    The 'Close' menu item is renamed to 'Cancel': this change makes the
    terminology more correct/consistent with the Blizzard UI. In addition,
    the 'close' slash command is renamed to 'delete' to make it consistent
    with the menu terminology.
    - Add display indication of disabled (dead/offline)
    Previously, the only way to tell that an interrupter was dead (using the
    addon) was if there were in a rotation, as then the rotation would skip
    them, but there was no explicit indication that their interrupt was not
    available for use.
    
    To rectify this, the frames now fade out and the test changes to
    OFFLINE/DEAD in gray. To facilitate this the colouring system was
    refactored slightly, with a new 'disabled' colour added to settings.
    
    Known issues:
    
      -    The call to update the colouring of frames in a rotation is made
           far more often than necessary, as RotationHighlight is called for
           each frame, but this function in turns colours all the frames in
           the rotation.
    - Rename addon to 'Oak Interrupts Display'
    - Bump TOC for v1.0.0-beta

    - Add menu section dividers and 'Actions' section
    To better separate groups of buttons in the dropdown menus, section
    dividers were added. Additionally the share and refill options were put
    into a section called 'Actions'.

    - Add more menu options and slash commands
    This change adds a 'config ON/OFF' command to activate the config mode.
    The config mode now does not lock/unlock displays as this lead to
    unintended difficulty setting up displays (now that the displays are
    hidden by default when out of a group), as if user unlocked a display
    and then run config OFF it would lock again.
    
    The menus were also expanded, to now contain all relevant slash command
    functionality and cleaned up a bit (some options no longer close the
    menu, layout improved, etc). A new slash command,'list' - which prints
    the names of all displays - is now avaliable.
    - Add automatic hiding of dipslays when not in group
    This requires hooking into the login sequence to test if the user is in
    a group (*_ROSTER_UPDATE doesn't necessarily fire on login). In addition
    the (user set) hidden state of displays are saved and restored. Displays
    manually set to hidden will not auto-show when in a group.
    - Fix importing localisation after trying to use it
    - Add localisation support
    Localisation support added for all general use display strings, but not
    quite all debug messages. Currently think that localisation is not
    neccesary for debug messages, but it's there for the moment.
    
    - Fix display resizing when interrupters dragged
    Previously the display were not resizing: this is now fixed. To
    facilitate this and reduced unessecary processing related to changing
    the layout/size of displays, the a new updatelayout, designed to be the
    method to call when the queue needs to be laid out. LayoutDisplay should
    now only be called when anchoring of the display needs to change, and it
    will completely redo the layout; ResizeDisplay now only resizes the
    display (and thus is not sufficient when adding/removing an
    interrupter, UpdateDisplay is for these cases).
    - Fix window position saving and layout bugs
    The previous change to the layout anchoring, introduced a manual
    implementation of a titleregion, but this didn't unset SetUserPlaced,
    resulting in an entry being made in layouts-local.txt that conflicted
    with the saved display position (it could switch the position of
    displays after they were restored on login/reload).
    
    FrameQueue now starts with a height/width of 0 when there are no frames,
    this fixed a slight position bug (a movement of 1 * padding) when
    changing the grow direction of a display with no interrupters.
    
    DataChanged now checks that a removed interrupter is in the watch_list
    before trying to remove it from a display, fixing an issue where a
    display that didn't have an interrupter would throw an error.
    
    - Improve display layout anchoring
    Previously the display was positioned and laid out by achoring the
    heading to the screen and then positioning everything else relative to
    the heading. Not only did this feel a little odd, but made it difficult
    to alter the layout system, particularly when trying to integrate
    support for libmovable-1.0.
    
    The new layout now anchors the display frame to UIParent, and calculates
    the height and width of the display frame; other components are then
    placed relative to the display frame. In addition, layout and resizing
    of the display has be refactored out into separate functions. This
    change also resulted in other functions no longer calling LayoutQueue
    directly but instead just calling LayoutDisplay.
    
    To keep the functionality of the old heading TitleRegion, a manual
    implementation was needed. Note that end users whould not see a change
    in functionality; all previously behaviour should be replicated in the
    new layout system.
    
    Additionally, the SetDirection function was changed to directly take the
    'up'/'down' grow directions and translate them into the appropriate
    anchor.
    - Fix veritcal position of menu button
    The menu button erroneously had a vertical offset.
    - Add basic ConfigMode support
    - Add menu to displays
    This update adds a button to the title bars of each display to popup a
    menu to allow access to certain functionality, in order to avoid using
    slash commands. The functionality included is:
    
      -    toggle locking of the display
      -    toggle rotatation/announce on/off
      -    share the rotation
    
    This is accomplished with a new 'menu' module that handles constructing
    and displaying the menu. Future enhancements to the menu module could
    include moving away from EasyMenu, and removing the button in favour of
    right-clicking on the title bar - this however requires a more involved
    rewrite of display.lua turning the title bar into a button and then
    reimplementing the drag behaviour.
    
    issue: www.wowace.com/addons/oakinterruptsdisplay/tickets/5-buttons-for-common-actions/
    - Fix bug when creating automatically named display
    When creating a display without providing a name the flow of logic
    resulted in nil values being used in places where the generated name
    should have been used.
    - Add ability to drag players between displays
    Previously it was overly labour intensive to construct a list of a few
    specific players as the user had to refill a list and then remove all
    the players they didn't want from that list. Now palyers can be dragged
    from one list to another (removing from the original list). New lists
    still automatically fill, though this could be changed in the future
    depending on UX feedback.
    
    This feature works by checking if the display of a frame needs to be
    switched (only when being dragged), depending on whether it overlaps
    another display - when two displays overlap the chosen display is not
    specifically defined (determined by the order from pairs()). In addition
    the rearrange MouseUpdate function now returns a display if a new one is
    chosen to inform the caller that the frame has switched display. When
    the moving frame overlaps the current display a new one will not be
    chosen, effectively meaning that when overlapping multiple displays, the
    one the was overlapped first is used.
    
    issue: http://www.wowace.com/addons/oakinterruptsdisplay/tickets/2-drag-interrupters-between-lists
    - Fix empty rotation bug on entering/leaving combat
    Previously a rotation list would go to highlight the first frame when
    entering combat and unhighlight the next_index frame when leaving
    combat, even if these frames didn't exist. Now a check that the list
    isn't empty is run first to avoid this bug.
    - Revamp rotation sharing message; improve announce
    The previous rotation sharing message was hard to read and ugly. The
    message was split into multiple lines, with a heading line. To
    facilitate this the Announce function was changed to accept the channel
    to print to so that the order is not shared to RAID_WARNING (when the
    user can) as it wouldn't appear well in the middle of the screen.
    - Fix announcing when dead
    Previously when the user died, and they were announcing to YELL, they
    would stop announcing, as you cannot yell while dead. To rectify this
    we now test if the user is dead, and if so, switch to announcing to
    party/raid.
    - Disabled nolib creation
    - Add saving of display settings
    Previously, users would have to set up any displays everytime their UI
    reloaded. This change has added the CharDisplays variable to save
    settings between sessions. Currently saved settings are:
    
      -    position of a display
      -    rotation/announce flag
      -    locked flag
      -    grow direction
      -    autoinclude flag
    
    When the user logs in displays are now created to replicate the
    situation at the previous logout (though the lists are not populated),
    with the one small caveat that the display's name (as returned by
    GetName(), not the user chosen name) of the display may have changed.
    Because of this the position settings are not saved via SetUserPlaced,
    but are instead included in CharDisplays.
    
    In addition some functions were moved and renamed in an effort to bring
    a little more consistency to the structure of the code.
    
    Known issues:
    
      -    If the user reloads during combat and drops combat while
    reloading, a call to BGColor* can occur for a nil frame
    
    issue: www.wowace.com/addons/oakinterruptsdisplay/tickets/1-save-display-list-settings/
    - Add show/hide slash commands
    Previously there was no way to hide a display, the user would have to
    delete it and then recreate when it was needed again (so you would just
    never hide it). To address this two new display interface functions were
    added and slash commands calling them included. Additionally the
    functions to create and close displays were renamed for consistency.
    
    issue: www.wowace.com/addons/oakinterruptsdisplay/tickets/3-show-hide-list/
    - Fix background when changing display direction
    - Add background colouring functions; fix highlight bug
    Previously when in combat, if a rotation list was edited (someone was
    removed or the order rearranged) the highlighting of frames did not
    update properly. Observed bugs were:
    
     -    if the next interrupter was removed, when that frame was reused by
          the FramePool, it would still be highlighted
     -    if the order was rearranged incombat, the highlighting would not
          update to reflect this
     -    when leaving combat, if the highlighting was desynced from the
          rotation it would not unhighlight everything
    
    To fix these issues general use background colouring functions were
    added to display.lua intended to be used for all highlighting puposes.
    The colouring of new interrupter frames was moved out of InitFrame (as
    this function only fires when a new frame is created, not when reused)
    fixing the issue of reused frames being highlighted and colouring of a
    list is now done after rearrange.MouseUpdate which is when the
    rearrangement of the order takes place.
    - Fix rotation not updating properly when on cooldown
    - Fixed bug occuring when 'polling' data field changes.
    - Fixed bug introduced when updating dataobject spec to include 'polling'
    - Rotation logic and lock/unlock combat flag bump.
    - rotation now skips a player is they're disconnected
        - lock/unlock combat flag is now case insensitive
    - The combat flag for lock/unlock is now case insensitive.
    - Bug fixes.
    - Fixed interrupt rotation logic bug always jumping to person after
        whoever used an interrupt
      - Fixed bug when removing interrupter from a list
    - Rearranged library inclusions; added .pkgmeta.
    - Initial comming.