Skip to main content
Skip to main content

AIParameterFillType

AIParameterFillType

Parent

AIParameter

Functions

getFillTypeIndex

Description

Definition

getFillTypeIndex()

Code

function AIParameterFillType:getFillTypeIndex()
return self.fillTypeIndex
end

getString

Description

Definition

getString()

Code

function AIParameterFillType:getString()
for _, data in ipairs( self.fillTypes) do
if data.fillTypeIndex = = self.fillTypeIndex then
return data.title
end
end

return ""
end

loadFromXMLFile

Description

Definition

loadFromXMLFile()

Arguments

anyxmlFile
anykey

Code

function AIParameterFillType:loadFromXMLFile(xmlFile, key)
local fillTypeName = xmlFile:getString(key .. "#fillType" )
if fillTypeName ~ = nil then
self.fillTypeIndex = g_fillTypeManager:getFillTypeIndexByName(fillTypeName)
end
end

new

Description

Definition

new()

Arguments

anycustomMt

Code

function AIParameterFillType.new(customMt)
local self = AIParameter.new(customMt or AIParameterFillType _mt)

self.type = AIParameterType.FILLTYPE

self.fillTypes = { }
self.fillTypeIndex = nil

return self
end

readStream

Description

Definition

readStream()

Arguments

anystreamId
anyconnection

Code

function AIParameterFillType:readStream(streamId, connection)
if streamReadBool(streamId) then
local fillTypeIndex = streamReadUIntN(streamId, FillTypeManager.SEND_NUM_BITS)
self:setFillTypeIndex(fillTypeIndex)
end
end

saveToXMLFile

Description

Definition

saveToXMLFile()

Arguments

anyxmlFile
anykey
anyusedModNames

Code

function AIParameterFillType:saveToXMLFile(xmlFile, key, usedModNames)
if self.fillTypeIndex ~ = nil then
local fillTypeName = g_fillTypeManager:getFillTypeNameByIndex( self.fillTypeIndex)
xmlFile:setString(key .. "#fillType" , fillTypeName)
end
end

setFillTypeByIndex

Description

Definition

setFillTypeByIndex()

Arguments

anyindex

Code

function AIParameterFillType:setFillTypeByIndex(index)
local data = self.fillTypes[index]
if data ~ = nil then
self.fillTypeIndex = data.fillTypeIndex
else
self.fillTypeIndex = nil
end
end

setFillTypeIndex

Description

Definition

setFillTypeIndex()

Arguments

anyfillTypeIndex

Code

function AIParameterFillType:setFillTypeIndex(fillTypeIndex)
self.fillTypeIndex = fillTypeIndex
end

setNextItem

Description

Definition

setNextItem()

Code

function AIParameterFillType:setNextItem()
local nextIndex = 0
for k, data in ipairs( self.fillTypes) do
if self.fillTypeIndex = = data.fillTypeIndex then
nextIndex = k + 1
end
end

if nextIndex > # self.fillTypes then
nextIndex = 1
end

self:setFillTypeByIndex(nextIndex)
end

setPreviousItem

Description

Definition

setPreviousItem()

Code

function AIParameterFillType:setPreviousItem()
local previousIndex = 0
for k, data in ipairs( self.fillTypes) do
if self.fillTypeIndex = = data.fillTypeIndex then
previousIndex = k - 1
end
end

if previousIndex < 1 then
previousIndex = # self.fillTypes
end

self:setFillTypeByIndex(previousIndex)
end

setValidFillTypes

Description

Definition

setValidFillTypes()

Arguments

anyfillTypes

Code

function AIParameterFillType:setValidFillTypes(fillTypes)
self.fillTypes = { }
local maxFillLevel = 0
local maxFillLevelFillTypeIndex
local isCurrentFillTypeIndexAvailable = false
for fillTypeIndex, fillLevel in pairs(fillTypes) do
if fillLevel > maxFillLevel then
maxFillLevelFillTypeIndex = fillTypeIndex
end

if self.fillTypeIndex = = fillTypeIndex then
isCurrentFillTypeIndexAvailable = true
end

local title = g_fillTypeManager:getFillTypeTitleByIndex(fillTypeIndex)
title = string.format( "%s(%d l)" , title, fillLevel)
table.insert( self.fillTypes, { index = # self.fillTypes + 1 , fillTypeIndex = fillTypeIndex, title = title, fillLevel = fillLevel } )
end

table.sort( self.fillTypes, function (a, b)
return a.title < b.title
end )

if self.fillTypeIndex = = nil or not isCurrentFillTypeIndexAvailable then
if maxFillLevelFillTypeIndex ~ = nil then
self.fillTypeIndex = maxFillLevelFillTypeIndex
else
self:setFillTypeByIndex( 1 )
end
end
end

validate

Description

Definition

validate()

Code

function AIParameterFillType:validate()
if self.fillTypeIndex = = nil then
return false , g_i18n:getText( "ai_validationErrorNoFillType" )
end

return true , nil
end

writeStream

Description

Definition

writeStream()

Arguments

anystreamId
anyconnection

Code

function AIParameterFillType:writeStream(streamId, connection)
if streamWriteBool(streamId, self.fillTypeIndex ~ = nil ) then
streamWriteUIntN(streamId, self.fillTypeIndex, FillTypeManager.SEND_NUM_BITS)
end
end