Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #6
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);
    }