Beispiel #1
0
        /// <summary>
        /// Saves all tilemaps to disk. The filename used is the name of the scene.
        /// </summary>
        public void SaveAll()
        {
            List <MapSaveObject> saveObjectList = new List <MapSaveObject>();

            foreach (TileMap map in mapList)
            {
                MapSaveObject saveObject = map.Save();
                saveObjectList.Add(saveObject);
            }

            ManagerSaveObject saveMapObject = new ManagerSaveObject
            {
                saveObjectList = saveObjectList.ToArray()
            };

            SaveSystem.SaveObject(saveFileName, saveMapObject, true);
            Debug.Log("Tilemaps saved");
        }
Beispiel #2
0
        /// <summary>
        /// Loads all TileMaps into the manager. The softload parameter determines if saved objects should be
        /// new created, or only reinitalized.
        /// </summary>
        /// <param name="softLoad"></param>
        public void LoadAll(bool softLoad)
        {
            if (tileObjectSOs == null)
            {
                tileObjectSOs = Resources.FindObjectsOfTypeAll <TileObjectSo>();
            }

            if (softLoad)
            {
                mapList.Clear();
            }
            else
            {
                DestroyMaps();
            }

            ManagerSaveObject saveMapObject = SaveSystem.LoadObject <ManagerSaveObject>(saveFileName);

            if (saveMapObject == null)
            {
                Debug.Log("No saved maps found. Creating default one.");
                CreateEmptyMap();
                mapList[mapList.Count - 1].IsMain = true;
                SaveAll();
                return;
            }

            foreach (MapSaveObject s in saveMapObject.saveObjectList)
            {
                TileMap map = null;
                if (softLoad)
                {
                    bool found = false;
                    for (int i = 0; i < transform.childCount; i++)
                    {
                        var child = transform.GetChild(i);
                        if (child.name == s.mapName)
                        {
                            map   = child.GetComponent <TileMap>();
                            found = true;
                        }
                    }
                    if (!found)
                    {
                        Debug.LogWarning("Map was not found when reinitializing: " + s.mapName);
                        continue;
                    }

                    map.Setup(s.mapName);
                    map.Load(s, true);
                    Debug.Log("Tilemaps soft loaded");
                }
                else
                {
                    map = AddTileMap(s.mapName);
                    map.Load(s, false);
                    Debug.Log("Tilemaps loaded from save");
                }
                mapList.Add(map);
            }
        }