ConveyorCraft

ConveyorCraft is een factory building game, waar je items moet maken door middel van machines en die items vervoeren naar het midden van de map waar je ze vervolgens kan verkopen. Het project is ontstaan doordat we voor school een game moesten maken doormiddel van een contract (FreeLance), toen hebben wij ConveyorCraft bedacht. Dit heb ik samen gedaan met Bo van den Berg & David van Rijn. Na een kort overleg was ik uiteindelijk degene die de leiding nam, maar ik nam mijn beslissingen natuurlijk pas als iedereen het er mee eens was. Ik heb voornamelijk gewerkt aan SaveSystem, PlaceScript, wat kleinere dingen en ik heb support/bugfixes geleverd bij de andere. Ik maak gebruik van Singletons en voor het saven gebruik ik een combinatie van json (voor locatie van machines/items) en Binaryformater (geld etc.).


Project Info:

Teamleden: David van Rijn & Bo van den Berg
Project tijd: Jaar 2 Periode 3.2 (03-03-2021 t/m 26-03-2021)
Engine: Unity
Code Languages: C#
Design Patterns: Singleton & FlyWeight


Code:


public void SaveAllData() //Saves all the Data
    {
        UIManager.instance.ShowSaveIcon(true);
        List machineSaveData = new List();
        if (transformerGrid.grid.Count > 0)
        {
            foreach (Vector2Int machine in transformerGrid.grid.Keys) //Goes thru the Machine Grid.
            {
                Transformer tempTransformer = transformerGrid.grid[machine];
                if(tempTransformer == null) Debug.Log(machine);

                int tempFilterID;
                if (tempTransformer.filterdItem != null) tempFilterID = tempTransformer.filterdItem.itemInfo.itemID;
                else tempFilterID = -1;

                MachineData tempData = new MachineData //Creates new MachineData
                {
                    position = machine,
                    rotation = tempTransformer.transform.rotation.eulerAngles.z,
                    machineType = (int)tempTransformer.transformerType,
                    craftingID = tempTransformer.recepie.craftID,
                    filterID = tempFilterID
                };
                machineSaveData.Add(tempData);
            }
        }
        List itemSaveData = new List();
        if(itemGrid.grid.Count > 0)
        {
            foreach (Vector2Int item in itemGrid.grid.Keys) //Goes thru the items in the itemgrid
            {
                List itemInfo = new List();
                for (int i = 0; i < itemGrid.grid[item].Count; i++)
                {
                    itemInfo.Add(itemGrid.grid[item][i].itemInfo.itemID);
                }
                ItemData tempItem = new ItemData //Creates New ItemData
                {
                    position = item,
                    itemID = itemInfo,
                };
                itemSaveData.Add(tempItem);
            }
        }

        //Saves to file with SaveSystem
        SaveSystem.Save(fileName, machineSaveData, CurrencyManager.instance, FindObjectOfType(), itemSaveData);
        UIManager.instance.Invoke("ShowSaveIcon", 2);
    }

}

Saved alle machines en items die geplaatst zijn in de wereld.