Name | Type | is_array | initial_value |
--[[ ShowUnitLevel V1.2 by Tasyen
Display unit Level for non creeps
requires
war3mapImported\ShowUnitLevel.fdf
war3mapImported\ShowUnitLevel.toc
]]
do
local real = MarkGameStarted
local group, unit, raceCreep
local function Filter()
-- return true when you want to display level for unit
return not IsUnitType(unit, UNIT_TYPE_STRUCTURE)
-- and not IsUnitType(unit, UNIT_TYPE_MECHANICAL)
and not IsHeroUnitId(GetUnitTypeId(unit))
and GetUnitRace(unit) ~= raceCreep
end
function InitFrames()
-- load in the frame blue print
BlzLoadTOCFile("war3mapImported/ShowUnitLevel.toc")
-- reserve handleIds for this frames that are used in async manner
BlzGetFrameByName("SimpleUnitStatsPanel", 0)
BlzGetFrameByName("SimpleClassValue", 0)
-- create custom Level display
BlzCreateSimpleFrame("CustomSimpleUnitStatsPanel", BlzGetFrameByName("SimpleInfoPanelUnitDetail", 0), 0)
-- reserve handleId, async manner
BlzGetFrameByName("CustomSimpleClassValue", 0)
end
function MarkGameStarted()
real()
raceCreep = ConvertRace(8)
if not UnitInfoGetUnit then
group = CreateGroup()
end
TimerStart(CreateTimer(), 0.02, true, function()
-- can use UnitInfo Panel?
if not UnitInfoGetUnit then
-- print("not UnitInfoGetUnit")
GroupEnumUnitsSelected(group, GetLocalPlayer(), nil)
unit = FirstOfGroup(group)
GroupClear(group)
else
unit = UnitInfoPanelUnit
end
--print("Unit", GetUnitName(unit), GetHandleId(unit))
if Filter() then
-- display custom
local classTempText = ""
BlzFrameSetAlpha(BlzGetFrameByName("SimpleUnitStatsPanel", 0), 0)
if BlzFrameGetText(BlzGetFrameByName("SimpleClassValue", 0)) ~= " " then
classTempText = BlzFrameGetText(BlzGetFrameByName("SimpleClassValue", 0)) .. " "
end
classTempText = classTempText .. GetLocalizedString("LEVEL").. " ".. GetUnitLevel(unit)
BlzFrameSetText(BlzGetFrameByName("CustomSimpleClassValue", 0), classTempText)
else
-- reset
BlzFrameSetAlpha(BlzGetFrameByName("SimpleUnitStatsPanel", 0), 255)
BlzFrameSetText(BlzGetFrameByName("CustomSimpleClassValue", 0), "")
end
unit = nil
end)
InitFrames()
if FrameLoaderAdd then FrameLoaderAdd(InitFrames) end
end
end
library ShowUnitLevel initializer Init requires optional FrameLoader
// ShowUnitLevel V1.2 by Tasyen
// Display unit Level for non creeps
// requires
// war3mapImported\ShowUnitLevel.fdf
// war3mapImported\ShowUnitLevel.toc
globals
private group Group
private race RaceCreep = ConvertRace(8)
private unit Unit
endglobals
private function FilterFunc takes nothing returns boolean
return not IsUnitType(Unit, UNIT_TYPE_STRUCTURE) and not IsHeroUnitId(GetUnitTypeId(Unit)) and GetUnitRace(Unit) != RaceCreep
endfunction
private function Update takes nothing returns nothing
local string text = ""
call GroupEnumUnitsSelected(Group, GetLocalPlayer(), null)
set Unit = FirstOfGroup(Group)
call GroupClear(Group)
if FilterFunc() then
// display custom
call BlzFrameSetAlpha(BlzGetFrameByName("SimpleUnitStatsPanel", 0), 0)
if BlzFrameGetText(BlzGetFrameByName("SimpleClassValue", 0)) != " " then
set text = BlzFrameGetText(BlzGetFrameByName("SimpleClassValue", 0)) + " "
endif
set text = text + GetLocalizedString("LEVEL") + " " + I2S(GetUnitLevel(Unit))
call BlzFrameSetText(BlzGetFrameByName("CustomSimpleClassValue", 0), text)
else
// reset
call BlzFrameSetAlpha(BlzGetFrameByName("SimpleUnitStatsPanel", 0), 255)
call BlzFrameSetText(BlzGetFrameByName("CustomSimpleClassValue", 0), "")
endif
set Unit = null
endfunction
private function InitFrames takes nothing returns nothing
call TimerStart(GetExpiredTimer(), 0.02, true, function Update)
// load in the frame blueprint
call BlzLoadTOCFile("war3mapImported/ShowUnitLevel.toc")
// reserve handleIds for this frames that are used in async manner
call BlzGetFrameByName("SimpleUnitStatsPanel", 0)
call BlzGetFrameByName("SimpleClassValue", 0)
// create custom Level display
call BlzCreateSimpleFrame("CustomSimpleUnitStatsPanel", BlzGetFrameByName("SimpleInfoPanelUnitDetail", 0), 0)
// reserve handleId, async manner
call BlzGetFrameByName("CustomSimpleClassValue", 0)
endfunction
private function Init takes nothing returns nothing
set Group = CreateGroup()
call TimerStart(CreateTimer(), 0.0, false, function InitFrames)
static if LIBRARY_FrameLoader then
call FrameLoaderAdd(function InitFrames)
endif
endfunction
endlibrary