Skip to main content
Skip to main content

HelperManager

HelperManager

Description

This class handles all helpers

Parent

AbstractManager

Functions

addHelper

Description

Adds a new helper

Definition

addHelper(string name, string modelFilename, string baseDir, , , )

Arguments

stringnamehelper index name
stringmodelFilenamehelper model filename
stringbaseDirthe base directory
anyplayerStyle
anybaseDir
anyisBaseType

Return Values

anytrueif added successful else false

Code

function HelperManager:addHelper(name, title, color, playerStyle, baseDir, isBaseType)
if not ClassUtil.getIsValidIndexName(name) then
printWarning( "Warning: '" .. tostring(name) .. "' is not a valid name for a helper.Ignoring helper!" )
return nil
end

name = string.upper(name)

if isBaseType and self.nameToIndex[name] ~ = nil then
printWarning( "Warning:Helper '" .. tostring(name) .. "' already exists.Ignoring helper!" )
return nil
end

local helper = self.helpers[name]
if helper = = nil then
self.numHelpers = self.numHelpers + 1

helper = { }
helper.name = name
helper.index = self.numHelpers
helper.color = color
helper.title = name
if title ~ = nil then
helper.title = title
end
helper.playerStyle = playerStyle

self.helpers[name] = helper
self.nameToIndex[name] = self.numHelpers
self.indexToHelper[ self.numHelpers] = helper
table.insert( self.availableHelpers, helper)
else
if title ~ = nil then
helper.title = g_i18n:convertText(title)
end
if playerStyle ~ = nil then
helper.playerStyle = playerStyle
end
end

return helper
end

getHelperByIndex

Description

Gets a helper by index

Definition

getHelperByIndex(integer index)

Arguments

integerindexthe helper index

Return Values

integerhelperthe helper object

Code

function HelperManager:getHelperByIndex(index)
if index ~ = nil then
return self.indexToHelper[index]
end
return nil
end

getHelperByName

Description

Gets a helper by index name

Definition

getHelperByName(string name)

Arguments

stringnamethe helper index name

Return Values

stringhelperthe helper object

Code

function HelperManager:getHelperByName(name)
if name ~ = nil then
name = string.upper(name)
return self.helpers[name]
end
return nil
end

getNumOfHelpers

Description

Gets number of helpers

Definition

getNumOfHelpers()

Return Values

stringnumOfHelperstotal number of helpers

Code

function HelperManager:getNumOfHelpers()
return self.numHelpers
end

getRandomHelper

Description

Gets a random helper

Definition

getRandomHelper()

Return Values

stringhelpera random helper object

Code

function HelperManager:getRandomHelper()
return self.availableHelpers[ math.random( 1 , # self.availableHelpers)]
end

getRandomHelperStyle

Description

Gets a random helper

Definition

getRandomHelperStyle()

Return Values

stringhelpera random helper style

Code

function HelperManager:getRandomHelperStyle()
return self.indexToHelper[ math.random( 1 , self.numHelpers)].playerStyle
end

getRandomIndex

Description

Gets a random helper index

Definition

getRandomIndex()

Return Values

stringhelperIndexa random helper index

Code

function HelperManager:getRandomIndex()
return math.random( 1 , self.numHelpers)
end

initDataStructures

Description

Initialize data structures

Definition

initDataStructures()

Code

function HelperManager:initDataStructures()
self.numHelpers = 0
self.helpers = { }
self.nameToIndex = { }
self.indexToHelper = { }
self.availableHelpers = { }
end

loadDefaultTypes

Description

Definition

loadDefaultTypes()

Arguments

anymissionInfo
anybaseDirectory

Code

function HelperManager:loadDefaultTypes(missionInfo, baseDirectory)
local xmlFile = loadXMLFile( "helpers" , "data/maps/maps_helpers.xml" )
self:loadHelpers(xmlFile, missionInfo, baseDirectory, true , nil )
delete(xmlFile)
end

loadHelpers

Description

Load data on map load

Definition

loadHelpers()

Arguments

anyxmlFileHandle
anymissionInfo
anybaseDirectory
anyisBaseType
anycustomEnvironment

Return Values

anytrueif loading was successful else false

Code

function HelperManager:loadHelpers(xmlFileHandle, missionInfo, baseDirectory, isBaseType, customEnvironment)
local xmlFile = XMLFile.wrap(xmlFileHandle, HelperManager.xmlSchema)
if xmlFile = = nil then
return false
end

for _, key in xmlFile:iterator( "map.helpers.helper" ) do
local name = xmlFile:getValue(key .. "#name" )
local title = xmlFile:getValue(key .. "#title" , nil , customEnvironment, false )
local color = xmlFile:getValue(key .. "#color" , { 1 , 1 , 1 } )
local playerStyle = PlayerStyle.new()
playerStyle:loadFromXMLFile(xmlFile, key .. ".playerStyle" )

self:addHelper(name, title, color, playerStyle, baseDirectory, isBaseType)
end

xmlFile:delete()

return true
end

loadMapData

Description

Load data on map load

Definition

loadMapData()

Arguments

anyxmlFile
anymissionInfo
anybaseDirectory

Return Values

anytrueif loading was successful else false

Code

function HelperManager:loadMapData(xmlFile, missionInfo, baseDirectory)
HelperManager:superClass().loadMapData( self )

self:loadDefaultTypes()
return XMLUtil.loadDataFromMapXML(xmlFile, "helpers" , baseDirectory, self , self.loadHelpers, missionInfo, baseDirectory, false , missionInfo.customEnvironment)
end

new

Description

Creating manager

Definition

new()

Arguments

anycustomMt

Return Values

anyinstanceinstance of object

Code

function HelperManager.new(customMt)
local self = AbstractManager.new(customMt or HelperManager _mt)
return self
end

releaseHelper

Description

Marks a helper as 'not in use'

Definition

releaseHelper(table helper)

Arguments

tablehelperthe helper object

Code

function HelperManager:releaseHelper(helper)
table.insert( self.availableHelpers, helper)
end

useHelper

Description

Marks a helper as 'in use'

Definition

useHelper(table helper)

Arguments

tablehelperthe helper object

Return Values

tablesuccesstrue if helper is marked else false

Code

function HelperManager:useHelper(helper)
for k, h in pairs( self.availableHelpers) do
if h = = helper then
table.remove( self.availableHelpers, k)
return true
end
end
return false
end