Quantcast
Channel: Addons from WowAce.com
Viewing all articles
Browse latest Browse all 2479

LibGroupInSpecT

$
0
0

Summary

A small library which keeps track of group members and keeps an up-to-date cache of their specialization, talents and glyphs.

It's similar to the old LibGroupTalents/LibTalentQuery and the current LibRaidInspect libraries, but unlike the former it's actually working on 5.0, and unlike the latter it works properly in Battlegrounds. Additionally it has the feature where it communicates spec/talent/glyph updates to other LibGroupInSpecT users. This is an important point as of the writing of this there is no way to detect when another player re-specs/talents/glyphs.

This library started out as a part of RaidChecklist as replacement for LibGroupTalents, but has since been split off into its own project as its usefulness increases the more widespread it is.

To make use of this library you'll need to also have the usual LibStub and LibCallbackHandler libs.

For a real usage example, take a look at the RaidChecklist project.


Events

These events can be registered for using the regular CallbackHandler ways.

Reference

eventargs
"GroupInSpecT_Update"guid, unit, info
"GroupInSpecT_Remove"guid

Example

localLGIST=LibStub:GetLibrary("LibGroupInSpecT-1.0")LGIST.RegisterCallback(addonObject,"GroupInSpecT_Remove","UnitRemoved")functionaddonObject:UnitRemoved(event,guid)-- unit with guid removedend

API

Functions for external use:

lib:Rescan()
Force a fresh inspection of all group members.
lib:QueuedInspections()
Returns an array of GUIDs of outstanding inspects.
lib:StaleInspections()
Returns an array of GUIDs for which the data has been deemed stale and is awaiting an update (no action required, the refresh happens internally).
lib:GetCachedInfo(guid)
Returns the cached info for the given GUID, if available, nil otherwise. Information is cached for current group members only.
lib:GuidToUnit(guid)
Returns the unit id for the given GUID, provided said GUID represents a current group member, else nil.

info table structure

The fields of the table passed as an argument for "GroupInSpecT_Update" callback or returned by one of the API functions (eg. :GetCachedInfo(guid) ). A list of all the global specialization IDs is available here.

Note: Not all fields may be available at all times due to the Blizz API not returning the info at that point. Incremental updates will be sent, so coding with the possibility of nil in mind is highly advised.

Finalized structure (available since beta2)

.guid.name.realm.race.race_localized.class.class_localized.class_id.gender-- 2 = male, 3 = female.global_spec_id.spec_index.spec_name_localized.spec_description.spec_icon.spec_background.spec_role.spec_role_detailed-- "tank", "melee", "ranged" or "healer" (introduced in 1.0.2).talents={[<spell_id>]={.idx-- 1 to MAX_NUM_TALENT.tier.column.name_localized.icon.spell_id}...}.glyphs={[<spell_id>]={.idx-- 1 to NUM_GLYPH_SLOTS.glyph_id.glyph_type.name_localized.icon.spell_id}...},.lku-- last known unit id

Usage

Typical usage example.
.pkgmeta

Libs/LibGroupInSpecT-1.0: svn://svn.wowace.com/wow/libgroupinspect/mainline/trunk

.toc

## X-Embeds: LibGroupInSpecT-1.0
## OptionalDeps: LibGroupInSpecT-1.0
#@no-lib-strip@
Libs\LibStub\LibStub.lua
Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua
Libs\LibGroupInSpecT-1.0\LibGroupInSpecT-1.0.lua
#@end-no-lib-strip@

alternatively embeds.xml (referenced in .toc)

<uixmlns="http://www.blizzard.com/wow/ui/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd"><!--@no-lib-strip@--><scriptfile="Libs\LibStub\LibStub.lua"/><includefile="Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml"/><includefile="Libs\LibGroupInSpecT-1.0\lib.xml"/><!--@end-no-lib-strip@--></ui>

.lua

localLGIST=LibStub:GetLibrary("LibGroupInSpecT-1.0")LGIST.RegisterCallback(addonObject,"GroupInSpecT_Update","UpdateHandler")LGIST.Registercallback(addonObject,"GroupInSpecT_Remove","RemoveHandler")functionaddonObject:UpdateHandler(event,guid,unit,info)ifinfo.classandinfo.class=="DEATHKNIGHT"andinfo.spec_roleandinfo.spec_role=="TANK"thenprint(UnitName(unit).." is now "..info.spec_name_localized)-- info.name may also be availableendendfunctionaddonObject:RemoveHandler(event,guid)-- guid no longer a group memberendlocalinfo=LGIST:GetCachedInfo(guid)localhasMassReflect=infoandnext(info.talents)andinfo.talents[114028]-- mass reflect talent spell_idlocalhasSSGlyph=infoandnext(info.glyphs)andinfo.glyphs[56231]-- soulstone glyph spell_id

Main page formatting by Dridzt. Much obliged!


Viewing all articles
Browse latest Browse all 2479

Trending Articles