예제 #1
0
    public static Dictionary <string, string> ReadDatabasePathByName(DatabasePreset preset)
    {
        Dictionary <string, string> dic = new Dictionary <string, string>();

        DatabaseElementList list = JsonUtility.FromJson <DatabaseElementList>(ReadDatabase(preset).text);

        foreach (DatabaseElement element in list.List)
        {
            dic.Add(element.Name, element.Path);
        }

        return(dic);
    }
예제 #2
0
    void Awake()
    {
        if (!created)
        {
            BattlegroundSaveFile = BattlegroundSaveFile.Insert(0, Application.persistentDataPath);
            WorldMapSaveFile     = WorldMapSaveFile.Insert(0, Application.persistentDataPath);

            skillsDatabasePreset    = Resources.Load <ScriptableObject>("Databases/SkillsPreset") as DatabasePreset;
            itemsDatabasePreset     = Resources.Load <ScriptableObject>("Databases/ItemsPreset") as DatabasePreset;
            materialsDatabasePreset = Resources.Load <ScriptableObject>("Databases/MaterialsPreset") as DatabasePreset;

            DontDestroyOnLoad(transform.gameObject);
            created = true;
        }
        else
        {
            Debug.Log("SaveManager awake");
        }
    }
예제 #3
0
    public static MapInfos Deserialize(MapInfosSerializable serializedData, DatabasePreset materialsPreset, List <Player> player, List <Enemy> enemies)
    {
        MapInfos mapInfos = new MapInfos();

        string path = "MapData/" + serializedData.MapDataType.ToString();

        mapInfos.MapData = Resources.Load <ScriptableObject>(path) as MapData;

        mapInfos.Size   = new Vector2(serializedData.SizeX, serializedData.SizeY);
        mapInfos.Layout = serializedData.Layout;

        if (serializedData.Map != null)
        {
            Dictionary <string, Material> materials         = new Dictionary <string, Material>();
            Dictionary <string, string>   materialsDatabase = DataSerialization.ReadDatabasePathByName(materialsPreset);

            foreach (string name in serializedData.Materials)
            {
                if (materialsDatabase.ContainsKey(name))
                {
                    materials.Add(name, Resources.Load <Material>(materialsDatabase[name]));
                }
                else
                {
                    Debug.Log("Material " + name + " not found in DB");
                }
            }

            Cell[,] newMap = new Cell[serializedData.SizeX, serializedData.SizeY];
            for (int x = 0; x < serializedData.SizeX; x++)
            {
                for (int y = 0; y < serializedData.SizeY; y++)
                {
                    newMap[x, y] = new Cell();

                    if (serializedData.Map[x, y].UnitId != -1)
                    {
                        newMap[x, y].IsTaken = GetUnitById(serializedData.Map[x, y].UnitId, player, enemies);
                    }

                    newMap[x, y].IsWalkable = serializedData.Map[x, y].IsWalkable;
                    newMap[x, y].X          = serializedData.Map[x, y].X;
                    newMap[x, y].Y          = serializedData.Map[x, y].Y;
                    newMap[x, y].Z          = serializedData.Map[x, y].Z;
                    newMap[x, y].RealY      = serializedData.Map[x, y].RealY;

                    if (serializedData.Map[x, y].MaterialName != null &&
                        serializedData.Map[x, y].MaterialName != "")
                    {
                        if (materials.ContainsKey(serializedData.Map[x, y].MaterialName))
                        {
                            newMap[x, y].Material = materials[serializedData.Map[x, y].MaterialName];
                        }
                        else
                        {
                            Debug.Log("Deserialization error, material " + serializedData.Map[x, y].MaterialName + " not found");
                        }
                    }

                    if (serializedData.Map[x, y].FillerName != null &&
                        serializedData.Map[x, y].FillerName != "")
                    {
                        if (materials.ContainsKey(serializedData.Map[x, y].FillerName))
                        {
                            newMap[x, y].Filler = materials[serializedData.Map[x, y].FillerName];
                        }
                        else
                        {
                            Debug.Log("Deserialization error, material " + serializedData.Map[x, y].FillerName + " not found");
                        }
                    }
                }
            }
            mapInfos.Map = newMap;
        }
        else
        {
            mapInfos.Map = null;
        }

        return(mapInfos);
    }
예제 #4
0
    public static TextAsset ReadDatabase(DatabasePreset preset)
    {
        TextAsset text = Resources.Load <TextAsset>("Databases/" + preset.Name);

        return(text);
    }