public EditorMapFeatureData GenerateData() { EditorMapFeatureData data = new EditorMapFeatureData(); data.mapXPos = transform.localPosition.x; data.mapYPos = transform.localPosition.y; data.assetCode = assetCode; data.angle = transform.localEulerAngles.z; data.radius = transform.localScale.x / 2; data.mapFeatureType = (int)mapType; return(data); }
void GenerateMapFeature(List <EditorMapFeatureData> features) { for (int i = 0; i < features.Count; i++) { EditorMapFeatureData referenceData = features[i]; Object prefab = AssetManager.Instance.GetPrefabByKeyword(referenceData.assetCode); GameObject go = Instantiate(prefab) as GameObject; go.transform.SetParent(mapFeatureParent); MapEditorFeatureController mfController = go.AddComponent <MapEditorFeatureController>(); mfController.Init(referenceData); } }
public void Init(EditorMapFeatureData data) { assetCode = data.assetCode; mapType = (MapFeatureType)data.mapFeatureType; SetPosition(data.mapXPos, data.mapYPos); SetRotation(data.angle); SetRadius(data.radius); HidingPlaceClusterManager cluster = gameObject.GetComponent <HidingPlaceClusterManager>(); if (cluster != null) { cluster.Init(false); } }
public EditorMapData(Dictionary <string, object> rawData) { mapName = JsonUtility.GetString(rawData, TAG_NAME); width = JsonUtility.GetInt(rawData, TAG_WIDTH); height = JsonUtility.GetInt(rawData, TAG_HEIGHT); //Load tiles from given dictionary listTile = new List <EditorTileData>(); if (rawData.ContainsKey(TAG_TILES)) { var tiles = rawData[TAG_TILES] as List <object>; for (int i = 0; i < tiles.Count; i++) { var rawTile = tiles[i] as Dictionary <string, object>; EditorTileData tileData = new EditorTileData(rawTile); listTile.Add(tileData); } } //Load map features from given dictionary listFeature = new List <EditorMapFeatureData>(); if (rawData.ContainsKey(TAG_FEATURE)) { var features = rawData[TAG_FEATURE] as List <object>; for (int i = 0; i < features.Count; i++) { var rawFeature = features[i] as Dictionary <string, object>; EditorMapFeatureData featureData = new EditorMapFeatureData(rawFeature); listFeature.Add(featureData); } } //Load saved spawner data listSpawner = new List <EditorSpawnerData>(); if (rawData.ContainsKey(TAG_SPAWNER)) { var spawners = rawData[TAG_SPAWNER] as List <object>; for (int i = 0; i < spawners.Count; i++) { var rawSpanwer = spawners[i] as Dictionary <string, object>; EditorSpawnerData spawnerData = new EditorSpawnerData(rawSpanwer); listSpawner.Add(spawnerData); } } }
public void OnPointerClick(PointerEventData eventData) { if (ToolboxManager.Instance.selectedTileType == ToolBoxTileType.MapFeature) { Vector3 pressPosition = eventData.pointerPressRaycast.worldPosition; ToolboxMapFeatureTemplate template = (ToolboxMapFeatureTemplate)ToolboxManager.Instance.tileTemplate; Object prefab = AssetManager.Instance.GetPrefabByKeyword(template.assetCode); GameObject go = Instantiate(prefab) as GameObject; go.transform.SetParent(EditorTileManager.Instance.mapFeatureParent); MapEditorFeatureController featureController = go.AddComponent <MapEditorFeatureController>(); EditorMapFeatureData data = new EditorMapFeatureData(); data.assetCode = template.assetCode; data.tileOptionType = (int)TileOptionType.MapFeature; data.mapFeatureType = (int)template.mapFeatureType; data.mapXPos = pressPosition.x; data.mapYPos = pressPosition.y; data.radius = template.radius; featureController.Init(data); Debug.Log("Spawn A Map Feature " + data.assetCode); } }
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); }