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); } }
public void SaveMap() { EditorMapData mapData = tileManager.RegenerateMapData(); MapEditorUtility.SaveMap(editedMapName, mapData); creatorManager.UpdateSavedMap(referenceSaveData); mapEditorMenu.ShowMessage(); }
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); }
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); } }
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(); }
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); } }
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); }
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); }