GlobalCompany - Funktionen - ProductionFactory
Mit dem Script ProductionFactory können Produktionen verbaut werden. Diese geht dabei in einem platzierbaren Objekt oder in einem Mapobjekt.
Allgemein

Für ein platzierbares Objekt muss in der dazugehörigen XML, wo auch die ganzen Storedaten usw. stehen, ein neuer Bereich
productionFactories
hinzugefügt werden:

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<placeable>
    <storeData>
        . . .
    </storeData>

    <placeableType>GC_ProductionFactoryPlaceable</placeableType>
    <filename>fermentingSilo.i3d</filename>

    <productionFactories>
        <productionFactory indexName="" saveId="">
            . . .
        </productionFactory>
    </productionFactories>
    
    . . .
    
</placeable>

Der indexName muss angegeben werden, spielt aber im weiteren Verlauf keine Rolle.

Achtet darauf, dass der placeableType auf GC_ProductionFactoryPlaceable eingestellt ist!

Wer die Daten nicht in der XML haben möchte, gibt es auch die Möglichkeit, die Daten in eine weitere XML auszulagern. Dies geht wie folgt:

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<placeable>
    <storeData>
        . . .
    </storeData>

    <placeableType>GC_ProductionFactoryPlaceable</placeableType>
    <filename>fermentingSilo.i3d</filename>

    <productionFactories>
        <productionFactory xmlFilename="" />
    </productionFactories>
    
    . . .
    
</placeable>

In xmlFilename muss dann der Pfad zur externen XML stehen. Der Aufbau dieser XML ist dann identisch wie die für Mapobjekte (siehe Abschnitt drunter).

Es können Fabriken ebenso in Maps eingebaut werden. Dazu wird eine neue XML-Datei benötigt. Der Aufbau sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<globalCompany>

    <productionFactories>
        <productionFactory indexName="FACTORY1" saveId="">
            . . .
        </productionFactory>

        <productionFactory indexName="FACTORY2" saveId="">
            . . .
        </productionFactory>

        . . .

    </productionFactories>
        
</globalCompany>

Der indexName ist jetzt wichtig. Auf diesen wird von der i3d aus referenziert.

In der Map muss dann nun eine Transformgroup erstellt werden, mit folgenden UserAttributes:

Name Typ Beschreibung
indexName String Eindeutiger Name, der auf indexName in der XML verweist.
xmlFilename String Pfad zur XML-Datei des Items
farmlandId Int Farmland-Id des aktuellen Standorts der Anlage. So kann die Produktion nur bedient werden, wenn die Person das Farmland besitzt.
Aufbau

Im productionFactory Tag gibt es folgende Attribute:

Name Beschreibung
index Eindeutiger Name, der die Fabrik definiert.
saveId Unter diesem Namen wird später die Fabrik abgespeichert.

Als nächstes werden die Gui-Informationen definiert:

<productionFactory indexName="SEEDMAKER" saveId="globalCompany_seedmaker">
    <guiInformation title="GlobalCompanyPlaceable_SeedMaker_FactoryName" imageFilename="store.dds" description="GlobalCompanyPlaceable_SeedMaker_FactoryDescription"/>
</productionFactory>
Name Beschreibung
title Titel der Produktion. Der Wert kann ein Verweis auf eine Sprachvariable sein.
imageFilename Pfad zu einem Vorschaubild
description Beschreibung der Produktion. Der Wert kann ein Verweis auf eine Sprachvariable sein.

In operation können weitere Daten deklariert werden:

<productionFactory indexName="SEEDMAKER" saveId="globalCompany_seedmaker">
    <operation updateDelayMinutes="10" showInGlobalGUI="true" />
</productionFactory>
Name Beschreibung
updateDelayMinutes Angabe, wie oft sich die Produktion aktualisieren soll. Kleiner Wert -> benötigt mehr Performance.
showInGlobalGUI Angabe, ob die Fabrik im globalen Gui gelistet werden soll.

In diesem Bereich werden nun alle Abladetrigger definiert:

<productionFactory indexName="SEEDMAKER" saveId="globalCompany_seedmaker">
    <registerUnloadingTriggers>
        <unloadingTrigger name="UnloadingTriggerGrain" exactFillRootNode="exactFillRootNode1" />
        <unloadingTrigger name="UnloadingTriggerLiquid" exactFillRootNode="exactFillRootNode2" palletTriggerNode="palletTrigger" />
    </registerUnloadingTriggers>
</productionFactory>
Name Beschreibung
name Name des Triggers. Wird später benötigt.
exactFillRootNode Verweis auf den Trigger. Verweist auf einen i3d-Mapping-Eintrag.
palletTriggerNode Verweis auf den Palettentrigger. Verweist auf einen i3d-Mapping-Eintrag.

Ein Abladetrigger kann auch für mehrere Inputs benützt werden! Die Filltypes müssen sich aber natürlich dann unterscheiden.

In diesem Bereich werden nun alle Aufladetrigger definiert:

<productionFactory indexName="SEEDMAKER" saveId="globalCompany_seedmaker">
    <registerLoadingTriggers>
        <loadingTrigger name="LoadingTrigger" triggerNode="trigger" fillLitersPerSecond="500" autoStart="false">
            <dischargeInfo dischargeNode="dischargeNode" />
            <sounds fillSoundIdentifier="fillSound01" />
            <effectNode effectNode="grain" materialType="unloading" materialTypeId="3" fadeTime="0.5" />
            <effectNode effectNode="smoke" materialType="smoke"     materialTypeId="1" fadeTime="0.5" />
            </triggerStatus>
        </loadingTrigger>
    </registerLoadingTriggers>
</productionFactory>
Name Beschreibung
name Name des Triggers. Wird später benötigt.
triggerNode Verweis auf den Trigger. Verweist auf einen i3d-Mapping-Eintrag.
fillLitersPerSecond Wie viel Liter pro Sekunde befüllt werden soll.
autoStart Angabe, ob die Befüllung automatisch starten soll.
dischargeNode Verweis auf den dischargeNode. Verweist auf einen i3d-Mapping-Eintrag.
fillSoundIdentifier Verweis auf einen Fillsound.
effectNode Verweis auf den Effekt. Verweist auf einen i3d-Mapping-Eintrag.
materialType Angabe des Materials
materialTypeId Id des Materials