Con el lanzamiento de la beta de Battle for Azeroth, al equipo de interfaz de usuario de WoW le gustaría recalcar los próximos cambios que afectarán a los desarrolladores de complementos. Muchos de estos cambios ya están implementados en los reinos de la beta, mientras que otros no lo estarán hasta el parche preliminar de Battle for Azeroth.
Si no sois desarrolladores de complementos, es probable que esta lista no os resulte interesante:
Cambios a eventos en el registro de combate
Los eventos COMBAT_LOG_EVENT & COMBAT_LOG_EVENT_UNFILTERED ya no tienen carga útil de evento. Para obtener la información transmitida antes con estos eventos, utilizad la función CombatLogGetCurrentEventInfo.
Cambios a la API del sistema de hechizos
Debido a una modificación que hicimos en el backend, los eventos y la API del sistema de hechizos tienen varios cambios importantes. Seguid leyendo si queréis usar la API de hechizos o los eventos en los complementos.
Ahora los campos de texto de los hechizos, como la descripción o el subtexto del nombre, se cargan por petición, excepto el nombre del hechizo. Esto afecta a las siguientes funciones:
Si llamas a estas funciones, el valor de retorno puede ser cero o vacío, ya que los datos no están disponibles en el momento de la llamada. Ofrecemos una interfaz en Lua (SpellMixin) que aplaza una llamada hasta que los datos estén disponibles. Esta interfaz permite llamar a las funciones de la lista anterior sin el riesgo de recibir datos vacíos.
local spell = Spell:CreateFromSpellID(spellID);
spell:ContinueOnSpellLoad(function()
spellButton:SetText(GetSpellDescription(spell:GetSpellID());
end);
La llamada SetText es inmediata si el texto del hechizo está cargado y disponible. Si no, se retrasa hasta que carguen los datos.
local spell = Spell:CreateFromSpellID(spellID);
local spellDataLoadedCancelFunc = spell:ContinueWithCancelOnSpellLoad(function()
button:SetText(GetSpellDescription(spell:GetSpellID());
end);
Cuando vayáis a cancelar la petición, llamad a la función de cancelación:
if spellDataLoadedCancelFunc then
spellDataLoadedCancelFunc();
spellDataLoadedCancelFunc = nil; -- ¡Por seguridad!
end
Además de las funciones ContinueOnSpellLoad, SpellMixin ofrece las siguientes funciones miembro para consultar diferentes campos de texto de los hechizos:
local spell = Spell:CreateFromSpellID(spellID);
spell:ContinueOnSpellLoad(function()
spellButton:SetText(spell:GetSpellDescription());
end);
Cambios en las funciones
Funciones eliminadas:
Funciones añadidas:
Cambios de evento:
Cambios en el mapa del mundo
El mapa del mundo se ha reescrito casi por completo, y la API del mapa se ha eliminado. La vamos a reemplazar, pero ahora mismo estamos en plena transición. worldMapAreaID, dungeonMapID y dungeonFloor se han eliminado y reemplazado por uiMapID. Hemos incluido una asignación entre los datos antiguos y los nuevos en AddOns/Blizzard_Deprecated/UIMapIDToWorldMapAreaID.lua para ayudaros a traducir los datos.
Documentación de evento
Además de la función y la documentación de la API de tabla, ahora todos los eventos y su carga útil están documentados. Se puede acceder a la documentación en el juego con el comando /api. Podéis encontrar los archivos de la documentación sin procesar en /AddOns/Blizzard_APIDocumentation. Se ha exportado a través del comando existente «ExportInterfaceFiles code».
Vamos a reemplazar el marco del estado del mundo por componentes de la IU (entre otras muchas cosas)
Los componentes de la IU son un nuevo sistema que hemos implementado para llevar a cabo una amplia variedad de tareas de la IU. Por lo tanto, ya no necesitamos WorldStateFrame y lo vamos a eliminar por completo. Los eventos del estado del mundo se enviarán como antes, así que no os preocupéis si dependéis de ellos. Hay nuevos eventos y funciones de la API del sistema de componentes de la IU. Podéis verlos en la carpeta de documentación UIWidgetManagerDocumentation.lua. Si queréis más información, mirad los archivos lua y xml en la carpeta \AddOns\Blizzard_UIWidgets.
Chat de voz
¡El nuevo sistema de chat de voz ya está disponible! La documentación para la API del chat de voz está en la carpeta normal de documentación, como se ha mencionado antes.
VoiceActivityManager es un sistema de Lua que os permite registraros para crear marcos de notificaciones cuando un miembro del chat de voz empiece a hablar. Para ello, podéis usar los métodos RegisterFrameForVoiceActivityNotifications y UnregisterFrameForVoiceActivityNotifications .
Colecciones de agrupaciones
PoolCollections es un nuevo sistema de Lua que permite registrar agrupaciones para crear macros con diferentes plantillas y diferentes tipos, y no hace falta mantener una agrupación para cada uno. Funciona casi de la misma forma que las agrupaciones, pero tenéis que aseguraros de llamar a CreatePool antes de intentar crear un objeto de un tipo concreto. Aquí tenéis un ejemplo de cómo utilizar PoolCollections:
-- Primero, creáis PoolCollection y llamáis a CreatePool para cada tipo de plantilla que vayáis a crear.
self.myPools = CreatePoolCollection();
self.myPools:CreatePool("FRAME", parent, "FrameTemplateA");
self.myPools:CreatePool("FRAME", parent, " FrameTemplateB");
self.myPools:CreatePool("BUTTON", parent, "ButtonTemplateA");
self.myPools:CreatePool("BUTTON ", parent, " ButtonTemplateB");
-- A partir de ahí, crear cualquiera de esas plantillas es tan fácil como llamar a Acquire en PoolCollection.
local frame1 = self.myPools:Acquire("FrameTemplateA");
local frame2 = self.myPools:Acquire("FrameTemplateB");
local frame3 = self.myPools:Acquire("FrameTemplateB");
local button1 = self.myPools:Acquire("ButtonTemplateB");
local button2 = self.myPools:Acquire("ButtonTemplateA");
-- Y cuando hayáis acabado con los marcos, podéis soltar cada uno de ellos uno por uno o usar ReleaseAll.
self.myPools:Release(frame3);
self.myPools:ReleaseAll();
Cambios a Texture object API
Otros cambios a Frame API
Otros cambios
¡Muchas gracias!
Fuente: BLIZZ