Beispiel #1
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);
    }
    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();
    }
Beispiel #4
0
    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);
    }