Esempio n. 1
0
 public void Initialize()
 {
     save.nextPlaceTime = GameTime.fixedTime;
     inventory          = machine.inventory;
     purchaseItem       = machine.machineInfo.purchaseItem;
     placeInterval      = machine.machineInfo.placeInterval;
     Entities.machinePurchasers.Add(this);
 }
Esempio n. 2
0
 public void Initialize()
 {
     save.nextAssembleTime = GameTime.fixedTime;
     placeInterval         = machine.machineInfo.placeInterval;
     inputs    = machine.machineInfo.assembleInputs;
     output    = machine.machineInfo.assembleOutput;
     inventory = machine.inventory;
     Entities.machineAssemblers.Add(this);
 }
Esempio n. 3
0
    public void Initialize()
    {
        save.nextAssembleTime = GameTime.fixedTime;
        MachineInfo machineInfo = machine.machineInfo;

        sellItem      = machineInfo.sellItem;
        inventory     = machine.inventory;
        machineGroup  = machineInfo.machineGroup;
        placeInterval = machineInfo.placeInterval;
        Entities.machineSellers.Add(this);
    }
Esempio n. 4
0
    /// <summary>
    /// Calculates the cost to purchase or assembling one item.
    /// </summary>
    public static float CalculateExpenses(MachineInfo machineInfo, MachineInfo[] machineInfos, HashSet <MachineInfo> visitedMachines)
    {
        if (visitedMachines.Contains(machineInfo))
        {
            return(0f);
        }
        visitedMachines.Add(machineInfo);

        if (machineInfo.purchaseItem.itemInfo)
        {
            return(machineInfo.purchaseItem.itemInfo.value / machineInfo.placeInterval);
        }
        else if (machineInfo.sellItem.itemInfo)
        {
            MachineInfo assembleMachine = machineInfos.GetItemAssembler(machineInfo.sellItem.itemInfo);
            if (assembleMachine)
            {
                return(CalculateExpenses(assembleMachine, machineInfos, visitedMachines));
            }
        }
        else if (machineInfo.assembler)
        {
            float expenses = 0;
            for (int i = 0, len = machineInfo.assembleInputs.Length; i < len; ++i)
            {
                AssembleSlot assembleInput = machineInfo.assembleInputs[i];
                MachineInfo  outputMachine = machineInfos.GetItemAssembler(assembleInput.itemInfo);
                if (!outputMachine)
                {
                    outputMachine = machineInfos.GetItemPurchaser(assembleInput.itemInfo);
                }

                if (assembleInput.itemInfo && outputMachine)
                {
                    expenses += CalculateExpenses(outputMachine, machineInfos, visitedMachines) * assembleInput.count;
                }
            }
            return(expenses / machineInfo.assembleOutput.count);
        }

        return(0f);
    }