Counting Units by Type
Some logic might need to know how many of a particular type of unit the AI currently controls. To do this I suggest the following
Here’s an example implementation:
- Add an empty module
- This module will have a table such that tableobject[unittype] = XofThisType
- Everytime a unit of yours is built, increment the number
- Decrement on unit death
- To get the number of units for say a corsolar, all you would need to do now is local solarCount = tableobject[“corsolar”] or something similar.
UnitTypeCounter = class(Module)
function UnitTypeCounter:Name()
return "UnitTypeCounter"
end
function UnitTypeCounter:internalName()
return "TypeCounter"
end
function UnitTypeCounter:Init()
self.typeCount = {}
end
function UnitTypeCounter:UnitCreated(engineunit)
if engineunit:Team() == game:GetTeamID() then
local t = engineunit:Type()
local name = t:Name()
local count = 0
if self.typeCount[name] ~= nil
count = self.typeCount[name]
end
self.typeCount = count + 1
end
end
function UnitTypeCounter:UnitBuilt(engineunit)
end
function UnitTypeCounter:UnitDead(engineunit)
if engineunit:Team() == game:GetTeamID() then
local t = engineunit:Type()
local name = t:Name()
local count = 0
if self.typeCount[name] ~= nil
count = self.typeCount[name]
end
self.typeCount = count - 1
end
end