--Register Fruits
--Autor: Hewaaa by www.ls2011.org
--Date: 05.08.2011
--Anleitung: in die moddesk kommt: 		<sourceFile filename="MapFruits/scripts/registerFruits.lua" />
--Die Ordner weitestgehend NICHT verändern! Die ... Hud auch nicht, die müssen immer mustermannHud heissen und im ordner images sein!


-- Register fruits
function RegisterFruits()
	local fruitList = {};

    -- Notes:
    -- "Typ" ist nicht korrekt. Es waren ein Versuch, die Früchte-Gruppe, so können sie leichter ausgewählt bei Silos / Sell-Punkte.
    -- "fruitName" muss die gleiche wie in der FoliageSubLayers werden.
	-- fruit = das wächst ; root = angepasst ; unknown = nicht zugeordnet; ... alles andere ist eigenständig
    table.insert(fruitList, {type="root"    ,fruitName="potato"         ,needsSeeding=true  ,allowsSeeding=true ,hasStraw=false ,minHarvestingGrowthState=1 ,pricePerLiter=0.4  ,literPerQm=3 ,seedUsagePerQm=0.02    ,seedPricePerLiter=0.1} );
    table.insert(fruitList, {type="root"    ,fruitName="sugarbeet"      ,needsSeeding=true  ,allowsSeeding=true ,hasStraw=true  ,minHarvestingGrowthState=3 ,pricePerLiter=0.20 ,literPerQm=4   ,seedUsagePerQm=0.50    ,seedPricePerLiter=0.5} );
    table.insert(fruitList, {type="flower"  ,fruitName="sunflower"      ,needsSeeding=true  ,allowsSeeding=true ,hasStraw=false ,minHarvestingGrowthState=4 ,pricePerLiter=0.42 ,literPerQm=3   ,seedUsagePerQm=0.01    ,seedPricePerLiter=0.1} );
    
    --
    -- Kann nicht Saat oder Ernte! Nur für den Transport!
    -- Stellen Sie sicher, dass 'allowsSeeding' FALSE ist. Wenn nicht, würden sie zeigen sich auch in der Aussaat-Maschine!
	-- Liste einfach weiter führen, aber nichts an den Werten verändern!!!
    table.insert(fruitList, {type="none"    ,fruitName="manure"         ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="liquidManure"   ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="fertilizer"     ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="silo"      ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="milk"           ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="rind"          ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
	table.insert(fruitList, {type="none"    ,fruitName="sand"          ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="diesel"          ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    table.insert(fruitList, {type="none"    ,fruitName="wurst"          ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
	table.insert(fruitList, {type="none"    ,fruitName="fisch"          ,needsSeeding=false ,allowsSeeding=false,hasStraw=false ,minHarvestingGrowthState=99,pricePerLiter=1.00 ,literPerQm=9.9 ,seedUsagePerQm=9.99    ,seedPricePerLiter=9.9} );
    --
    print(string.format("Registering %d extra fruits...", table.getn(fruitList)));
    for i=1, table.getn(fruitList) do
        local filename = "map01/".. fruitList[i].fruitName .."Hud.png";
        local hudFile = Utils.getFilename(filename, g_currentModDirectory);
        FruitUtil.registerFruitType(
             fruitList[i].fruitName                 -- string fruitName
            ,fruitList[i].needsSeeding              -- bool needsSeeding    (ARGH! Ich habe 3-4 Tage, um herauszufinden, warum die neue Ernte autogrows. Dann bemerkte ich ein "s" fehlte, so "needSeeding 'NIL zurück.)
            ,fruitList[i].allowsSeeding             -- bool allowsSeeding
            ,fruitList[i].hasStraw                  -- bool hasStraw
            ,fruitList[i].minHarvestingGrowthState  -- int minHarvestingGrowthState
            ,fruitList[i].pricePerLiter             -- float pricePerLiter
            ,fruitList[i].literPerQm                -- float literPerQm
            ,fruitList[i].seedUsagePerQm            -- float seedUsagePerQm
            ,fruitList[i].seedPricePerLiter         -- float seedPricePerLiter
            ,hudFile                                -- file hudFruitOverlayFilename
        );
    end;
end;
RegisterFruits();

--
--
--
local origSowingMachineLoad = SowingMachine.load;
SowingMachine.load = function(self, xmlFile)
    if origSowingMachineLoad ~= nil then
        origSowingMachineLoad(self, xmlFile);
    end;

    --
    local msg = "Info. Added seeds to '".. Utils.getNoNil(self.name, "SowingMachine") .."': ";
    self.seeds = {};
    for k, fruitType in pairs(FruitUtil.fruitTypes) do
        -- Check if FruitType have a FoliageSubLayer-/TerrainId.
        local terrainId = 0;
        if g_currentMission.fruits[fruitType.index] ~= nil then
            terrainId = g_currentMission.fruits[fruitType.index].id;
        end;
        -- Only add FruitType if its allowed to be seeded, AND have a FoliageSubLayer-/TerrainId.
        if fruitType.allowsSeeding and terrainId > 0 then
            table.insert(self.seeds, fruitType.index);
            msg = msg .. FruitUtil.fruitIndexToDesc[ fruitType.index ].name .." ";
        end;
    end;
    print(msg);
    -- Sort the seedable fruits by generic-name.
    table.sort(self.seeds, function(l,r) return (FruitUtil.fruitIndexToDesc[l].name < FruitUtil.fruitIndexToDesc[r].name); end);
end;
