API:NewSortData
Aus WARWiki
Keine Beschreibung verfügbar.
Nutzung
API:NewSortData()
Diese Funktion übernimmt keine Argumente.
Diese Funktion gibt keine Werte zurück.
Source Code
-- This function is used as the comparison function for
-- table.sort() on the player display order
local function ComparePlayers( index1, index2 )
if( index2 == nil ) then
--DEBUG(L" ComparePlayers( "..index1..L", nil )" )
return false
end
--DEBUG(L" ComparePlayers( "..index1..L", "..index2..L" )" )
local player1 = ScenarioSummaryWindow.playersData[index1]
local player2 = ScenarioSummaryWindow.playersData[index2]
local sortType = ScenarioSummaryWindow.display.type
local order = ScenarioSummaryWindow.display.order
-- Sorting By Name
if( sortType == ScenarioSummaryWindow.SORT_TYPE_NAME ) then
if( order == ScenarioSummaryWindow.SORT_ORDER_UP ) then
return ( WStringsCompare(player1.name, player2.name) < 0 )
else
return ( WStringsCompare(player1.name, player2.name) > 0 )
end
end
-- Sorting By A Numerical Value - When tied, sort by name
local key = ScenarioSummaryWindow.sortData[sortType].variable
--DEBUG(L" key = "..StringToWString(key))
--DEBUG(L" value1="..player1[key]..L", value2="..player2[key] )
local dataType = type( player1[key] )
if( order == ScenarioSummaryWindow.SORT_ORDER_UP ) then
if( player1[key] == player2[key] ) then
return ( WStringsCompare(player1.name, player2.name) < 0 )
else
if( dataType == "wstring" ) then
return ( WStringsCompare(player1[key], player2[key]) < 0 )
elseif( dataType == "number" ) then
return ( player1[key] < player2[key] )
end
end
else
if( player1[key] == player2[key] ) then
return ( WStringsCompare(player1.name, player2.name) < 0 )
else
if( dataType == "wstring" ) then
return ( WStringsCompare(player1[key], player2[key]) > 0 )
elseif( dataType == "number" ) then
return ( player1[key] > player2[key] )
end
end
end
end