Форум - "Аллоды Онлайн" - Изменения в Lua API
Закрытая тема
Показано с 1 по 4 из 4
  1. #1
    Аватар для Acceptor
    Стражник Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию Acceptor имеет безупречную репутацию
    Регистрация
    28.07.2020
    Сообщений
    289
    Репутация
    7169

    Изменения в Lua API

    Уважаемые разработчики интерфейсных аддонов!

    Спешим оповестить вас, что в ближайшее время некоторый функционал Lua API клиента будет удалён в угоду оптимизации и отсечения дублирующихся сущностей.

    Будут удалены события:
    EVENT_UNIT_SPAWNED
    EVENT_UNIT_DESPAWNED
    EVENT_DEVICE_SPAWNED
    EVENT_DEVICE_DESPAWNED
    EVENT_USABLE_DEVICE_SPAWNED
    EVENT_USABLE_DEVICE_DESPAWNED
    EVENT_TRANSPORT_SPAWNED
    EVENT_TRANSPORT_DESPAWNED
    EVENT_ASTRAL_UNIT_SPAWNED
    EVENT_ASTRAL_UNIT_DESPAWNED
    EVENT_ASTRAL_OBJECT_SPAWNED
    EVENT_ASTRAL_OBJECT_DESPAWNED

    Просим разработчиков, использующих в своих аддонах события из списка выше, отказаться от них в течение месяца.

    Для замены удалённого функционала останутся существовать соответствующие события:
    EVENT_UNITS_CHANGED
    EVENT_DEVICES_CHANGED
    EVENT_USABLE_DEVICES_CHANGED
    EVENT_TRANSPORTS_CHANGED
    EVENT_ASTRAL_UNITS_CHANGED
    EVENT_ASTRAL_OBJECTS_CHANGED

    Приятной игры!
    Последний раз редактировалось UIAddon; 19.01.2022 в 12:40.

  2. #2
    Аватар для UIAddon
    Разработчик UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию
    Регистрация
    22.09.2020
    Адрес
    Феррис, Центральная лаборатория
    Сообщений
    65
    Репутация
    3157
    Данные изменения вступают в силу с момента установки обновления 13.0.00.24
    Мне можно задавать вопросы касающиеся:
    - Интерфейса игры
    - Lua API

  3. #3
    Аватар для UIAddon
    Разработчик UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию
    Регистрация
    22.09.2020
    Адрес
    Феррис, Центральная лаборатория
    Сообщений
    65
    Репутация
    3157
    Уважаемые разработчики интерфейсных аддонов!

    Сообщаем, что в одном из будущих обновлений будут произведены следующие изменения API:

    Будут удалены функции:
    common.GetAddonRelatedText
    common.GetAddonRelatedGroupText
    common.GetAddonRelatedTexture
    common.GetAddonRelatedGroupTexture
    common.GetStateRelatedText
    common.GetStateRelatedGroupText
    common.GetStateRelatedTexture
    common.GetStateRelatedGroupTexture

    Будет удалена поддержка неименованных текстовых и текстурных групп и соответствующих полей в UIAddon:
    texts
    textures

    Для замены удалённого функционала останутся существовать соответствующие функции:
    common.GetAddonRelatedTextGroup
    common.GetStateRelatedTextGroup
    RelatedTextsLua:HasText
    RelatedTextsLua:GetText
    common.GetAddonRelatedTextureGroup
    common.GetStateRelatedTextureGroup
    RelatedTexturesLua:HasTexture
    RelatedTexturesLua:GetTexture

    Кроме того, мы рекомендуем использовать кеширование текстов и текстур.

    Код:
    --------------------------------------------------------------------------------
    -- Text caches
    --------------------------------------------------------------------------------
    local ews = common.GetEmptyWString()
    function GetEWs() return ews end
    --------------------------------------------------------------------------------
    local _textGroups = {}
    local _textCache = {}
    local _textStateGroups = {}
    local _textStateCache = {}
    --------------------------------------------------------------------------------
    local function GetGroupText( group, groupCache, sysName, optional )
    	local result = groupCache[ sysName ]
    	if result == nil then
    		result = group:HasText( sysName ) and group:GetText( sysName )
    		groupCache[ sysName ] = result
    	end
    	if result == false and not optional then
    		assert( false, "Non-existent text requested: " .. tostring( sysName ) )
    	end
    	return result
    end
    --------------------------------------------------------------------------------
    -- Получить текст sysName из текстовой группы аддона sysGroup (группа должна существовать)
    -- Если задан optional то при отсутствии текста вернется false, иначе будет вызван assert
    function GetAddonText( sysGroup, sysName, optional )
    	local group = _textGroups[ sysGroup ]
    	if not group then
    		group = common.GetAddonRelatedTextGroup( sysGroup )
    		_textGroups[ sysGroup ] = group
    		_textCache[ sysGroup ] = {}
    	end
    	return GetGroupText( group, _textCache[ sysGroup ], sysName, optional )
    end
    --------------------------------------------------------------------------------
    -- Получить текст sysName из текстовой группы стейта sysGroup (группа должна существовать)
    -- Если задан optional то при отсутствии текста вернется false, иначе будет вызван assert
    function GetStateText( sysGroup, sysName, optional )
    	local group = _textStateGroups[ sysGroup ]
    	if not group then
    		group = common.GetStateRelatedTextGroup( sysGroup )
    		_textStateGroups[ sysGroup ] = group
    		_textStateCache[ sysGroup ] = {}
    	end
    	return GetGroupText( group, _textStateCache[ sysGroup ], sysName, optional )
    end
    --------------------------------------------------------------------------------
    -- Texture caches
    --------------------------------------------------------------------------------
    local _textureGroups = {}
    local _textureCache = {}
    local _textureStateGroups = {}
    local _textureStateCache = {}
    --------------------------------------------------------------------------------
    local function GetGroupTexture( group, groupCache, sysName, optional )
    	local result = groupCache[ sysName ]
    	if result == nil then
    		result = group:HasTexture( sysName ) and group:GetTexture( sysName )
    		groupCache[ sysName ] = result
    	end
    	if result == false and not optional then
    		assert( false, "Non-existent texture requested: " .. tostring( sysName ) )
    	end
    	return result
    end
    --------------------------------------------------------------------------------
    -- Получить текстуру sysName из текстурной группы аддона sysGroup (группа должна существовать)
    -- Если задан optional то при отсутствии текстуры вернется false, иначе будет вызван assert
    function GetAddonTexture( sysGroup, sysName, optional )
    	local group = _textureGroups[ sysGroup ]
    	if not group then
    		group = common.GetAddonRelatedTextureGroup( sysGroup )
    		_textureGroups[ sysGroup ] = group
    		_textureCache[ sysGroup ] = {}
    	end
    	return GetGroupTexture( group, _textureCache[ sysGroup ], sysName, optional )
    end
    --------------------------------------------------------------------------------
    -- Получить текстуру sysName из текстурной группы стейта sysGroup (группа должна существовать)
    -- Если задан optional то при отсутствии текстуры вернется false, иначе будет вызван assert
    function GetStateTexture( sysGroup, sysName, optional )
    	local group = _textureStateGroups[ sysGroup ]
    	if not group then
    		group = common.GetStateRelatedTextureGroup( sysGroup )
    		_textureStateGroups[ sysGroup ] = group
    		_textureStateCache[ sysGroup ] = {}
    	end
    	return GetGroupTexture( group, _textureStateCache[ sysGroup ], sysName, optional )
    end
    --------------------------------------------------------------------------------
    -- BONUS: Old API convert
    --------------------------------------------------------------------------------
    -- Неименованные группы тестов и текстур в UIAddon должны быть преобразованы в именованные с данным именем
    -- Стейтовые неименованные группы преобразованы в именованные с именем "Common"
    -- Имя должно быть уникальным в рамках набора групп одного типа в одном аддоне
    --------------------------------------------------------------------------------
    local DEFAULT_GROUP_NAME = "Common"
    local DEFAULT_STATE_GROUP_NAME = "Common"
    --------------------------------------------------------------------------------
    --[[ 
    Например
    	<texts href="Texts/RelatedTexts.(UIRelatedTexts).xdb" />
    	<textsGroups>
    		<Item>
    			<groupName>Headers</groupName>
    			<texts href="Texts/Headers/Headers.(UIRelatedTexts).xdb" />
    		</Item>
    	</textsGroups>
    	<textures href="Textures/RelatedTextures.(UIRelatedTextures).xdb" />	
    конвертится в	
    	<textsGroups>
    		<Item>
    			<groupName>Common</groupName>
    			<texts href="Texts/RelatedTexts.(UIRelatedTexts).xdb" />
    		</Item>
    		<Item>
    			<groupName>Headers</groupName>
    			<texts href="Texts/Headers/Headers.(UIRelatedTexts).xdb" />
    		</Item>
    	</textsGroups>
    	<texturesGroups>
    		<Item>
    			<groupName>Common</groupName>
    			<textures href="Textures/RelatedTextures.(UIRelatedTextures).xdb" />
    		</Item>
    	</texturesGroups>
    ]]
    --------------------------------------------------------------------------------
    function common.GetAddonRelatedText( sysName )
    	return GetAddonText( DEFAULT_GROUP_NAME, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetAddonRelatedGroupText( sysGroup, sysName )
    	return GetAddonText( sysGroup, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetStateRelatedText( sysName )
    	return GetStateText( DEFAULT_STATE_GROUP_NAME, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetStateRelatedGroupText( sysGroup, sysName )
    	return GetStateText( sysGroup, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetAddonRelatedTexture( sysName )
    	return GetAddonTexture( DEFAULT_GROUP_NAME, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetAddonRelatedGroupTexture( sysGroup, sysName )
    	return GetAddonTexture( sysGroup, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetStateRelatedTexture( sysName )
    	return GetStateTexture( DEFAULT_STATE_GROUP_NAME, sysName, false )
    end
    --------------------------------------------------------------------------------
    function common.GetStateRelatedGroupTexture( sysGroup, sysName )
    	return GetStateTexture( sysGroup, sysName, false )
    end
    --------------------------------------------------------------------------------


    Просим разработчиков, использующих в своих аддонах функции из списка выше, отказаться от них в течение трех месяцев.

    Приятной игры!
    Последний раз редактировалось UIAddon; 04.06.2022 в 11:48.
    Мне можно задавать вопросы касающиеся:
    - Интерфейса игры
    - Lua API

  4. #4
    Аватар для UIAddon
    Разработчик UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию UIAddon имеет безупречную репутацию
    Регистрация
    22.09.2020
    Адрес
    Феррис, Центральная лаборатория
    Сообщений
    65
    Репутация
    3157
    Уважаемые разработчики интерфейсных аддонов!

    Спешим оповестить вас, что в ближайшее время некоторый функционал Lua API клиента будет удалён в угоду оптимизации и отсечения дублирующихся сущностей.

    Будут удалены функции:
    common.GetBitAnd
    common.GetBitOr
    common.GetBitXor

    Для замены удалённого функционала будет включена стандартная библиотека bit (документация: https://bitop.luajit.org/api.html)
    Данные изменения произойдут в одном из ближайших обновлений.

    Приятной игры!
    Мне можно задавать вопросы касающиеся:
    - Интерфейса игры
    - Lua API

Закрытая тема

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения