AddPowerShard() public method

public AddPowerShard ( PowerShard, shard ) : void
shard PowerShard,
return void
Ejemplo n.º 1
0
    public static PlayBoard JSONToBoard(ref GameObject board, String fileName)
    {
        board = new GameObject("Board");
        GameObject assets = new GameObject("Assets");
        assets.transform.parent = board.transform;
        JSONObject js = JSONObject.GetJsonObjectFromFile("JsonFiles/Maps/" + fileName);

        int width = (int)js.GetField("Width").n;
        int height = (int)js.GetField("Height").n;

        PlayBoard playBoard = new PlayBoard(width, height);

        JSONObject array = js.GetField("Hexagons");

        GameObject groundEffect = Resources.Load<GameObject>("VFX/Ground/Ground_Effect");
        GameObject shardEffect = Resources.Load<GameObject>("VFX/Shard_Zone/Shard_Zone_Effect"); 
        GameObject glyph = Resources.Load<GameObject>("prefabs/SM_Glyphe_1");

        JSONObject camera = js.GetField("Camera");
        if (camera != null)
        {
            float xCam = camera.GetField("x").f;
            float yCam = camera.GetField("y").f;
            float zCam = camera.GetField("z").f;

            float rotXCam = camera.GetField("rotX").f;
            float rotYCam = camera.GetField("rotY").f;
            float rotZCam = camera.GetField("rotZ").f;
            float rotWCam = camera.GetField("rotW").f;

            Camera.main.transform.position = new Vector3(xCam, yCam, zCam);
            Camera.main.transform.rotation = new Quaternion(rotXCam, rotYCam, rotZCam, rotWCam);
        }

        foreach (JSONObject hexa in array.list)
        {
            Hexagon hexagon = playBoard.CreateHexagone((int)hexa.GetField("posX").n, (int)hexa.GetField("posY").n);
            GameObject prefab = (GameObject)Resources.Load("Prefabs/" + hexa.GetField("gameObject").str, typeof(GameObject));
            hexagon.DefaultColor = prefab.GetComponent<Renderer>().sharedMaterial.color;
            hexagon.GameObject = GameObject.Instantiate(prefab);
            hexagon.GameObject.name = hexa.GetField("gameObject").str;
            hexagon.GameObject.transform.parent = board.transform;
            hexagon.GameObject.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n, 0.75f * hexagon._posY);

            JSONObject quaternion = hexa.GetField("rotation");
            if (quaternion == null)
            {
                hexagon.GameObject.transform.Rotate(EruleRandom.RangeValue(0, 7) * 180f, EruleRandom.RangeValue(0, 11) * 60f, 0f);
            }
            else
            {
                hexagon.GameObject.transform.rotation = new Quaternion(quaternion.GetField("x").f, quaternion.GetField("y").f, quaternion.GetField("z").f, quaternion.GetField("w").f);
            }
            


            hexagon.Glyph = GameObject.Instantiate(glyph);
            hexagon.Glyph.transform.parent = hexagon.GameObject.transform;
            hexagon.Glyph.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n+0.2f, 0.75f * hexagon._posY);
            hexagon.Glyph.SetActive(false);

            hexagon.GroundEffect = GameObject.Instantiate(groundEffect);
            hexagon.GroundEffect.transform.parent = hexagon.GameObject.transform;
            hexagon.GroundEffect.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n + 0.23f, 0.75f * hexagon._posY);
            hexagon.GroundEffect.SetActive(false);
            hexagon.GroundEffect.transform.rotation = Quaternion.Euler(0, EruleRandom.RangeValue(0.0f,360.0f), 0);

            hexagon.ShardEffect = GameObject.Instantiate(shardEffect);
            hexagon.ShardEffect.transform.parent = hexagon.GameObject.transform;
            hexagon.ShardEffect.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n + 0.23f, 0.75f * hexagon._posY);
            hexagon.ShardEffect.SetActive(false);
            hexagon.ShardEffect.transform.rotation = Quaternion.Euler(0, EruleRandom.RangeValue(0.0f, 360.0f), 0);



            hexagon.CurrentState = Hexagon.State.Default;

            if (hexa.GetField("isSpawn") != null)
            {
                hexagon.CurrentState = Hexagon.State.Spawnable;
                hexagon.IsSpawn = true;
            }
            else
            {
                hexagon.IsSpawn = false;
            }

            /*if (hexa.GetField("underground") != null) {
                string undergroundName = hexa.GetField("underground").str;
                if (undergroundName != null)
                {
                    GameObject prefabObstacle = (GameObject)Resources.Load("Prefabs/" + undergroundName, typeof(GameObject));
                    GameObject underground = GameObject.Instantiate(prefabObstacle);

                    underground.transform.parent = hexagon.GameObject.transform;

                    underground.name = undergroundName;
                    underground.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n - 0.2f, 0.75f * hexagon._posY);

                    underground.transform.Rotate(0f, EruleRandom.RangeValue(0, 5) * 60f, 0f);

                    hexagon.Underground = underground;

                }
            }*/


            if (hexa.GetField("obstacle") != null) {
                string obstacleName = hexa.GetField("obstacle").str;
                if (obstacleName != null)
                {
                    GameObject prefabObstacle = (GameObject)Resources.Load("Prefabs/" + obstacleName, typeof(GameObject));
                    GameObject asset = GameObject.Instantiate(prefabObstacle);
                    asset.transform.parent = assets.transform;
                    asset.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n, 0.75f * hexagon._posY);


                    Obstacle obs = new Obstacle(hexagon);
                    obs.GameObject = new GameObject(prefabObstacle.name);
                    obs.GameObject.transform.parent = hexagon.GameObject.transform;
                    obs.GameObject.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n, 0.75f * hexagon._posY);
                    CapsuleCollider collider = obs.GameObject.AddComponent<CapsuleCollider>();
                    collider.height = 5;
                    collider.radius = 0.5f;
                    obs.GameObject.layer = LayerMask.NameToLayer("Obstacle");
                    obs.GameObject.transform.Rotate(0f, EruleRandom.RangeValue(0, 5) * 60f, 0f);
                }
            }

            if (hexa.GetField("powerShard") != null)
            {
                PowerShard ps = PowerShard.JSONToPowerShard(hexa.GetField("powerShard"), hexagon);

                GameObject prefabShard = (GameObject)Resources.Load("Prefabs/" + hexa.GetField("powerShard").GetField("gameObject").str, typeof(GameObject));
                GameObject asset = GameObject.Instantiate(prefabShard);
                asset.transform.parent = assets.transform;
                asset.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n, 0.75f * hexagon._posY);

                ps.GameObject.transform.parent = hexagon.GameObject.transform;
                ps.GameObject.transform.position = new Vector3(0.866f * hexagon._posX - 0.433f * hexagon._posY, hexa.GetField("posZ").n, 0.75f * hexagon._posY);
                ps.GameObject.layer = LayerMask.NameToLayer("Obstacle");

                playBoard.AddPowerShard(ps);
            }
        }

        JSONObject centerJs = js.GetField("Center");
        if (centerJs != null) { 
            Vector3 center = new Vector3(centerJs.GetField("x").n, centerJs.GetField("y").n, centerJs.GetField("z").n);
            playBoard._center = center;
            Logger.Debug(center);
        }
        
        return playBoard;
    }