コード例 #1
0
        void Scan_Mods(bool includeVanillaIsland = false)
        {
            List <string> islands = new List <string>();

            if (includeVanillaIsland)
            {
                string filePath = Application.streamingAssetsPath + "/OverworldData.worldDat";

                islands.Add(filePath);
            }
            else
            {
                islands = Directory.EnumerateFiles(PATH_ALL_MODS, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".json")).ToList();
            }

            foreach (string path in islands)
            {
                if (File.Exists(path))
                {
                }
                else
                {
                    continue;
                }

                try
                {
                    Overworld_MapData overworldData = JsonUtility.FromJson <Overworld_MapData>(File.ReadAllText(path));
                    foreach (IslandData islandDat in overworldData.GlobalIslands)
                    {
                        if (islandDat == null)
                        {
                            continue;
                        }

                        if (packSetting.packDatas.Find(x => x.modName == islandDat.ModPackName) == null)
                        {
                            ModPack_Data pack_Data = new ModPack_Data();
                            pack_Data.GCECoord = islandDat.GCECoord;
                            pack_Data.modName  = islandDat.ModPackName;

                            Debug.Log(pack_Data.modName + " has been created.");
                            packSetting.packDatas.Add(pack_Data);
                        }
                        else if (packSetting.packDatas.Find(x => x.modName == islandDat.ModPackName) != null)
                        {
                            ModPack_Data pack_Data = packSetting.packDatas.Find(x => x.modName == islandDat.ModPackName);
                            pack_Data.GCECoord = islandDat.GCECoord;
                            pack_Data.modName  = islandDat.ModPackName;

                            Debug.Log(pack_Data.modName + " has been written.");
                        }
                    }
                }
                catch
                {
                    continue;
                }
            }
        }
コード例 #2
0
        public void Load_WorldMap()
        {
            string filePath = EditorUtility.OpenFilePanel("Load World Data", Application.dataPath, "json");

            mapData = JsonUtility.FromJson <Overworld_MapData>(File.ReadAllText(filePath));
            Debug.Log("Overworld Map data has been loaded.");

            Update_WorldMap();
        }
コード例 #3
0
        public void Update_WorldMap()
        {
            string filePath = Application.streamingAssetsPath + "/OverworldData.worldDat";

            vanillaIslandData = JsonUtility.FromJson <Overworld_MapData>(File.ReadAllText(filePath));

            int i = 0;

            pooledMinimapIsland.Clear();
            OverworldEditor_Island[] islands = this.GetComponentsInChildren <OverworldEditor_Island>();

            foreach (OverworldEditor_Island island in islands)
            {
                pooledMinimapIsland.Add(island);
            }

            foreach (IslandData islandData in mapData.GlobalIslands)
            {
                bool valid = false;

                if (pooledMinimapIsland.Count > i)
                {
                    if (pooledMinimapIsland[i] != null)
                    {
                        ReloadIsland(islandData, i);
                        valid = true;
                    }
                    else
                    {
                    }
                }

                if (!valid)
                {
                    if (pooledMinimapIsland.Find(z => z.RegionName == islandData.RegionName) != null)
                    {
                        continue;
                    }

                    OverworldEditor_Island Island = Instantiate(islandPrefab, islandData.GCECoord, Quaternion.identity).GetComponent <OverworldEditor_Island>();
                    Island.RegionName           = islandData.RegionName;
                    Island.transform.localScale = new Vector3(islandData.IslandSize.x, 1, islandData.IslandSize.z);

                    Island.transform.SetParent(this.transform);
                    Island.gameObject.name = islandData.RegionName;

                    pooledMinimapIsland.Add(Island);
                }

                i++;
            }

            if (showVanillaWorld)
            {
                foreach (IslandData islandData in vanillaIslandData.GlobalIslands)
                {
                    bool valid = false;

                    if (pooledMinimapIsland.Count > i)
                    {
                        if (pooledMinimapIsland[i] != null)
                        {
                            ReloadIsland(islandData, i);
                            valid = true;
                        }
                        else
                        {
                        }
                    }

                    if (!valid)
                    {
                        if (pooledMinimapIsland.Find(z => z.RegionName == islandData.RegionName) != null)
                        {
                            continue;
                        }

                        OverworldEditor_Island Island = Instantiate(islandPrefab, islandData.GCECoord, Quaternion.identity).GetComponent <OverworldEditor_Island>();
                        Island.RegionName           = islandData.RegionName;
                        Island.transform.localScale = new Vector3(islandData.IslandSize.x, 1, islandData.IslandSize.z);

                        Island.transform.SetParent(this.transform);
                        Island.gameObject.name = islandData.RegionName;

                        pooledMinimapIsland.Add(Island);
                    }

                    i++;
                }
            }

            pooledMinimapIsland.RemoveAll(item => item == null);

            Debug.Log("Overworld Map data updated.");
        }