Beispiel #1
0
 protected void Start()
 {
     if (save == null)
     {
         save = new ObjectSaveData();
         save.startPosition = new float[3] {
             transform.position.x, transform.position.y, transform.position.z
         };
     }
 }
    private void LoadObjects(ObjectSaveData saveData)
    {
        RoomManager       roomManager     = GameController.instance.roomOverseer;
        int               numberOfObjects = saveData.positions.Count;
        List <GameObject> cellsObjects    = GameObject.FindGameObjectsWithTag("Cell").ToList();
        List <Cell>       cells           = new List <Cell>();
        Cell              selectedCell    = null;
        GameObject        selectedObject  = null;

        foreach (GameObject cell in cellsObjects)
        {
            cells.Add(cell.GetComponent <Cell>());
        }

        for (int i = 0; i < numberOfObjects; i++)
        {
            foreach (GameObject obj in objects)
            {
                if (obj.CompareTag(saveData.tags[i]))
                {
                    selectedObject = obj;
                    break;
                }
            }

            selectedCell = cells.Where(x => x.position == saveData.worldPositions[i]).ToList().FirstOrDefault();
            GameObject instantiated = Instantiate(selectedObject, saveData.positions[i], saveData.rotations[i], selectedCell.transform);
            instantiated.transform.localScale = saveData.scales[i];
            SceneObject spawned = instantiated.GetComponent <SceneObject>();
            spawned.adjacent.position    = saveData.worldPositions[i];
            spawned.description.buyPrice = saveData.infos[i].buyPrice;
            spawned.isMerged             = saveData.infos[i].isMerged;
            spawned.lvl       = saveData.infos[i].level;
            spawned.id        = saveData.ids[i];
            spawned.isCreated = true;
            selectedCell.AddObject(spawned);


            if (spawned.lvl == 2)
            {
                spawned.GetComponent <IUpgradable>().Upgrade(2, false);
            }
        }

        List <SceneObject> loadedRooms = GameController.instance.roomOverseer.GetAllSceneObjects();

        foreach (SceneObject spawned in loadedRooms)
        {
            if (spawned.lvl == 3 && spawned.isMerged)
            {
                foreach (AdjacentObject adj in spawned.adjacent.list)
                {
                    if (!adj.GetComponent <SceneObject>().isMerged&& adj.GetComponent <SceneObject>().id != spawned.id)
                    {
                        adj.DestroyConnection(spawned.GetComponent <AdjacentObject>());
                    }
                }

                spawned.lvl--;
                //spawned.MergeAdjacentRooms(spawned);
                spawned.GetComponent <IUpgradable>().Upgrade(2, false);
            }

            GameController.instance.buttons.ShowAllButtons();
        }
    }
    IEnumerator LoadObjectsDelay(ObjectSaveData saveData)
    {
        yield return(new WaitForSeconds(.3f));

        LoadObjects(saveData);
    }
Beispiel #4
0
 public void setSaveData(ObjectSaveData oldData)
 {
     save = oldData;
     transform.position = new Vector3(oldData.position [0], oldData.position [1], oldData.position [2]);
     transform.rotation = new Quaternion(oldData.rotation [0], oldData.rotation [1], oldData.rotation [2], oldData.rotation [3]);
 }