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


Persönliche Werkzeuge
Anzeige

Sponsoren