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); }
public void Initialize() { if (itemsDict == null) { itemsDict = new Dictionary <string, ItemInfo>(items.Length); } else { itemsDict.Clear(); } for (int i = 0, len = items.Length; i < len; ++i) { ItemInfo itemInfo = items[i]; itemsDict.Add(itemInfo.name, itemInfo); } if (machinesDict == null) { machinesDict = new Dictionary <string, MachineInfo>(machines.Length); } else { machinesDict.Clear(); } for (int i = 0, len = machines.Length; i < len; ++i) { MachineInfo machineInfo = machines[i]; machineInfo.Initialize(); machinesDict.Add(machineInfo.name, machineInfo); } if (machineGroupsDict == null) { machineGroupsDict = new Dictionary <string, MachineGroupInfo>(); } else { machineGroupsDict.Clear(); } for (int i = 0, len = machineGroups.Length; i < len; ++i) { MachineGroupInfo machineGroup = machineGroups[i]; machineGroupsDict.Add(machineGroup.machineGroupName, machineGroup); } }
void OnBind() { Vector3 groupOffset = Vector3.zero; MachineGroupInfo[] machineGroups = ScriptableObjects.instance.machineGroups; children = new UISelectMachineButton[ScriptableObjects.instance.machines.Length + 1]; // The magic number +1 is for conveyor int childrenIndex = 0; groupOffset.y += entryOffset.y; UISelectMachineButton conveyorButton = Instantiate(machineButtonPrefab, transform); conveyorButton.isConveyor = true; conveyorButton.transform.localPosition = groupOffset; conveyorButton.Initialize(); children[childrenIndex] = conveyorButton; childrenIndex++; groupOffset.y += entryOffset.y; for (int i = 0, len = machineGroups.Length; i < len; ++i) { MachineGroupInfo machineGroup = machineGroups[i]; for (int j = 0, lenJ = machineGroup.members.Length; j < lenJ; ++j) { UISelectMachineButton machineButton = Instantiate(machineButtonPrefab, transform); machineButton.machineInfo = machineGroup.members[j]; machineButton.transform.localPosition = groupOffset; machineButton.Initialize(); children[childrenIndex] = machineButton; childrenIndex++; groupOffset.x += entryOffset.x; } groupOffset.x = 0; groupOffset.y += entryOffset.y; } CollapseList(); }
void OnValidate() { if (!sprite) { string[] guids = AssetDatabase.FindAssets("Machine t:Sprite", new[] { "Assets/MaterialTextures" }).ToArray(); guids = guids.Select(guid => AssetDatabase.GUIDToAssetPath(guid)).ToArray(); guids = guids.Where(path2 => path2.EndsWith("/Machine.psd")).ToArray(); string path = guids.FirstOrDefault(); if (path != null) { sprite = AssetDatabase.LoadAssetAtPath <Sprite>(path); } } ScriptableObjectMasterList masterList = ScriptableObjectMasterList.LoadAsset(); if (!masterList) { return; } if (!masterList.machines.Any(machine => machine.machineName == machineName)) { masterList.machines = masterList.machines.Append(this); EditorUtility.SetDirty(masterList); } if (machineGroup) { if (assembler && !machineGroup.assemblers.Contains(this)) { machineGroup.assemblers = machineGroup.assemblers.Append(this).ToArray(); } if (purchaseItem.itemInfo != null && !machineGroup.purchasers.Contains(this)) { machineGroup.purchasers = machineGroup.purchasers.Append(this).ToArray(); } if (sellItem.itemInfo != null && !machineGroup.sellers.Contains(this)) { machineGroup.sellers = machineGroup.sellers.Append(this).ToArray(); } machineGroup.BuildMembersArray(); EditorUtility.SetDirty(machineGroup); } else { for (int i = 0, len = masterList.machineGroups.Length; i < len; i++) { MachineGroupInfo machineGroup = masterList.machineGroups[i]; if (machineGroup.members.Contains(this)) { if (machineGroup.assemblers.Contains(this)) { machineGroup.assemblers = machineGroup.assemblers.Except(this).ToArray(); } if (machineGroup.purchasers.Contains(this)) { machineGroup.purchasers = machineGroup.purchasers.Except(this).ToArray(); } if (machineGroup.sellers.Contains(this)) { machineGroup.sellers = machineGroup.sellers.Except(this).ToArray(); } machineGroup.BuildMembersArray(); EditorUtility.SetDirty(machineGroup); } } } MachineInfo[] machineInfos = masterList.machines; MachineAnalysis.CalculateProfit(machineInfos, new HashSet <MachineInfo>()); machineInfos.SetDirty(); EditorUtility.SetDirty(this); }