public void Initialize() { save.nextPlaceTime = GameTime.fixedTime; inventory = machine.inventory; purchaseItem = machine.machineInfo.purchaseItem; placeInterval = machine.machineInfo.placeInterval; Entities.machinePurchasers.Add(this); }
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); }
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); }
/// <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); }