예제 #1
0
        public static EditorMapData LoadMap(string saveName)
        {
            string   path = Application.persistentDataPath + "/" + saveName;
            FileInfo f    = new FileInfo(path);

            if (!f.Exists)
            {
                Debug.Log("File not found");
                return(null);
            }

            try
            {
                StreamReader  sr          = f.OpenText();
                string        jsonMessage = sr.ReadToEnd();
                var           rawData     = Json.Deserialize(jsonMessage) as Dictionary <string, object>;
                EditorMapData data        = new EditorMapData(rawData);
                return(data);
            }
            catch (System.Exception e)
            {
                Debug.Log("Fail Load Map " + e.Message);
                return(null);
            }
        }
예제 #2
0
        public void SaveMap()
        {
            EditorMapData mapData = tileManager.RegenerateMapData();

            MapEditorUtility.SaveMap(editedMapName, mapData);
            creatorManager.UpdateSavedMap(referenceSaveData);
            mapEditorMenu.ShowMessage();
        }
예제 #3
0
 public void GenerateMap(EditorMapData mapData)
 {
     ClearTiles();
     referenceData = mapData;
     //Generate grid
     GenerateTile(mapData.listTile);
     //Generate map feature and establish the spawn detection
     GenerateMapFeature(mapData.listFeature);
     featureSpawnDetector.SetMapData(mapData);
     //Generate spawner and establish the spawn detection
     GenerateSpawner(mapData.listSpawner);
     spawnerSpawnDetection.SetMapData(mapData);
 }
예제 #4
0
        public void LoadAndDisplayMap(MapEditorSaveData saveData)
        {
            string saveName = saveData.saveName;

            try
            {
                EditorMapData mapData = MapEditorUtility.LoadMap(saveName);
                tileManager.GenerateMap(mapData);
                mapWidth  = mapData.width;
                mapHeight = mapData.height;
                creatorManager.gameObject.SetActive(false);
                mapEditorMenu.ShowMainMenu(mapData.mapName);
                editedMapName     = saveName;
                referenceSaveData = saveData;
                isMapLoaded       = true;
            }
            catch (System.Exception e)
            {
                Debug.Log("Unable to load map " + e.StackTrace);
            }
        }
예제 #5
0
        public void CreateMap(string name, int width, int height)
        {
            MapEditorSaveData data = new MapEditorSaveData();

            data.mapName = name;
            data.width   = width;
            data.height  = height;
            string currentTime = DateTime.Now.ToString("yyyyMMddHHmmss");

            data.saveName          = name + "_" + currentTime + ".json";
            data.modifiedTimeStamp = currentTime;
            data.createdDate       = DateTime.Now.ToString("yyyy-MM-dd");
            data.modifiedDate      = data.createdDate;
            savedMaps.Add(data);
            SaveMaps();
            //Create default map and save it with the save name
            EditorMapData basicMap = MapEditorUtility.CreateDefaultMap(data);

            MapEditorUtility.SaveMap(data.saveName, basicMap);

            DisplaySavedMaps();
        }
예제 #6
0
        public static bool SaveMap(string saveName, EditorMapData mapData)
        {
            string   path = Application.persistentDataPath + "/" + saveName;
            FileInfo f    = new FileInfo(path);

            if (f.Exists)
            {
                f.Delete();
            }

            try
            {
                StreamWriter sw       = f.CreateText();
                string       jsonText = Json.Serialize(mapData.ToDictionary());
                sw.WriteLine(jsonText);
                sw.Close();
                return(true);
            }
            catch (System.Exception e)
            {
                Debug.Log("Error write file " + e.Message);
                return(false);
            }
        }
예제 #7
0
        public static EditorMapData CreateDefaultMap(MapEditorSaveData data)
        {
            EditorMapData basicMap = new EditorMapData();

            basicMap.mapName = data.mapName;
            basicMap.width   = data.width;
            basicMap.height  = data.height;
            //Create the default width x height tile with 0 angle
            //Also create it with the default asset for empty tile
            for (int x = 0; x < data.width; x++)
            {
                for (int y = 0; y < data.height; y++)
                {
                    EditorTileData tileData = new EditorTileData();
                    tileData.angle     = 0;
                    tileData.assetCode = DEFAULT_TILE;                                  //HARDCODED This is empty tile
                    tileData.mapXPos   = x + TILE_RADIUS;
                    tileData.mapYPos   = y + TILE_RADIUS;
                    basicMap.listTile.Add(tileData);
                }
            }
            //Create the border for maps
            //Create TOP Border
            for (int x = 0; x < data.width; x++)
            {
                EditorTileData tileData = new EditorTileData();
                tileData.angle     = 0;
                tileData.assetCode = DEFAULT_TILE_BORDER;
                tileData.mapXPos   = x + TILE_RADIUS;
                tileData.mapYPos   = data.height + TILE_RADIUS;
                basicMap.listTile.Add(tileData);
            }

            //Create Bottom Border
            for (int x = 0; x < data.width; x++)
            {
                EditorTileData tileData = new EditorTileData();
                tileData.angle     = 180;
                tileData.assetCode = DEFAULT_TILE_BORDER;
                tileData.mapXPos   = x + TILE_RADIUS;
                tileData.mapYPos   = -TILE_RADIUS;
                basicMap.listTile.Add(tileData);
            }

            //Create Left Border
            for (int y = 0; y < data.height; y++)
            {
                EditorTileData tileData = new EditorTileData();
                tileData.angle     = 90;
                tileData.assetCode = DEFAULT_TILE_BORDER;
                tileData.mapXPos   = -TILE_RADIUS;
                tileData.mapYPos   = y + TILE_RADIUS;
                basicMap.listTile.Add(tileData);
            }

            //Create Right Border
            for (int y = 0; y < data.height; y++)
            {
                EditorTileData tileData = new EditorTileData();
                tileData.angle     = 270;
                tileData.assetCode = DEFAULT_TILE_BORDER;
                tileData.mapXPos   = data.width + TILE_RADIUS;
                tileData.mapYPos   = y + TILE_RADIUS;
                basicMap.listTile.Add(tileData);
            }

            //Create corner border for the map
            for (int x = 0; x < 2; x++)
            {
                for (int y = 0; y < 2; y++)
                {
                    EditorTileData tileData = new EditorTileData();
                    tileData.assetCode = DEFAULT_TILE_CORNER;
                    if (x == 0 && y == 0)                               //LEFT BOTTOM CORNER
                    {
                        tileData.angle   = 90;
                        tileData.mapXPos = -TILE_RADIUS;
                        tileData.mapYPos = -TILE_RADIUS;
                    }
                    else if (x == 0 && y == 1)                          //LEFT TOP CORNER
                    {
                        tileData.angle   = 0;
                        tileData.mapXPos = -TILE_RADIUS;
                        tileData.mapYPos = data.height + TILE_RADIUS;
                    }
                    else if (x == 1 && y == 0)                          //RIGHT BOTTOM CORNER
                    {
                        tileData.angle   = 180;
                        tileData.mapXPos = data.width + TILE_RADIUS;
                        tileData.mapYPos = -TILE_RADIUS;
                    }
                    else
                    {
                        tileData.angle   = 270;                         //RIGHT TOP CORNER
                        tileData.mapXPos = data.width + TILE_RADIUS;
                        tileData.mapYPos = data.height + TILE_RADIUS;
                    }

                    basicMap.listTile.Add(tileData);
                }
            }

            //Basic map doesn't have map feature nor spawners
            return(basicMap);
        }
 public void SetMapData(EditorMapData mapData)
 {
     transform.localPosition = new Vector3(mapData.width / 2.0f, mapData.height / 2.0f, 0);
     transform.localScale    = new Vector3(mapData.width, mapData.height, 1);
 }
예제 #9
0
    IEnumerator GenerateMapTilesAndFeature()
    {
        if (!isTileLoaded)
        {
            //TODO Load map given by data here
            string    mapName   = "simple_map";
            TextAsset textAsset = Resources.Load("Text/" + mapName) as TextAsset;
            string    jsonText  = textAsset.text;
            var       jsonData  = ProjectMiniJSON.Json.Deserialize(jsonText) as Dictionary <string, object>;

            FlooMapEditor.EditorMapData mapData = new FlooMapEditor.EditorMapData(jsonData);

            UIGameController.Instance.ShowNotificationMessage(LanguageManager.Instance.GetMessage("LOA0009"));
            yield return(new WaitForSeconds(0.1f));

            //Load all tiles here
            for (int i = 0; i < mapData.listTile.Count; i++)
            {
                FlooMapEditor.EditorTileData tileData = mapData.listTile[i];
                Object     prefab = AssetManager.Instance.GetPrefabByKeyword(tileData.assetCode);
                GameObject go     = Instantiate(prefab) as GameObject;
                go.transform.SetParent(parentTile);
                go.transform.localPosition    = new Vector3(tileData.mapXPos, tileData.mapYPos, 0);
                go.transform.localEulerAngles = new Vector3(0, 0, tileData.angle);
                go.transform.localScale       = Vector3.one;
            }

            UIGameController.Instance.ShowNotificationMessage(LanguageManager.Instance.GetMessage("LOA0010"));
            yield return(new WaitForSeconds(0.1f));

            //Load all map features here
            for (int i = 0; i < mapData.listFeature.Count; i++)
            {
                FlooMapEditor.EditorMapFeatureData mapFeature = mapData.listFeature[i];
                GameObject go = MapFeatureObjectPooling.Instance.GetGameObject(mapFeature.assetCode);

                if (mapFeature.mapFeatureType == (int)FlooMapEditor.MapFeatureTypeEditor.HidingPlace)
                {
                    LayerController.Instance.SetSeaweedLayer(go);
                }
                else
                {
                    LayerController.Instance.SetObstacleLayer(go);
                }

                go.transform.localPosition    = new Vector3(mapFeature.mapXPos, mapFeature.mapYPos, 0);
                go.transform.localEulerAngles = new Vector3(0, 0, mapFeature.angle);
                go.transform.localScale       = new Vector3(mapFeature.radius * 2, mapFeature.radius * 2, 1.0f);

                HidingPlaceClusterManager hidingCluster = go.GetComponent <HidingPlaceClusterManager>();
                if (hidingCluster != null)
                {
                    //Stabilize the hiding cluster
                    hidingCluster.StabilizeHidingPlaces();
                    hidingCluster.Init(true);
                }
            }

            UIGameController.Instance.ShowNotificationMessage(LanguageManager.Instance.GetMessage("LOA0011"));
            yield return(new WaitForSeconds(0.1f));

            //Place water ripple here
            for (float x = -1.0f; x < mapData.width + 1.0f; x += rippleSize)
            {
                for (float y = -1.0f; y < mapData.height + 1.0f; y += rippleSize)
                {
                    GameObject rippleObj = Instantiate(waterRipplePrefab) as GameObject;
                    rippleObj.transform.SetParent(parentWaterRipple);
                    rippleObj.transform.localPosition = new Vector3(x, y, 0);
                    rippleObj.transform.localScale    = new Vector3(rippleSize, rippleSize, 1.0f);
                }
            }


            OcculsionManager.Instance.DisableAllMapFeature();
            isTileLoaded = true;
        }
        DisplayGameController.Instance.StartObjectPooling();

        yield return(true);
    }