Example #1
0
 public void SetPosition(Pos p, Direction dir, float length)
 {
     this.dir        = dir;
     this.p          = p;
     this.length     = length;
     this.t.rotation = Quaternion.AngleAxis(Hexagon.DirectionToDegree(dir), Vector3.back);
 }
    IEnumerator Flip(GameObject tile, Direction dir)
    {
        switch (dir)
        {
        case Direction.North:
        case Direction.NEE:
        case Direction.EES:
        case Direction.South:
        case Direction.SWW:
        case Direction.WWN:
            Direction originalDir = tile.GetComponent <StartSceneTile>().dir;
            tile.GetComponent <StartSceneTile>().dir = Hexagon.DegreeToDirection(Hexagon.DirectionToDegree(dir) * 2 - Hexagon.DirectionToDegree(originalDir) + 180);
            int axisdig = (Hexagon.DirectionToDegree(tile.GetComponent <StartSceneTile>().dir) - Hexagon.DirectionToDegree(originalDir) + 360) / 2 + Hexagon.DirectionToDegree(originalDir);
            //int axisdig = Hexagon.DirectionToDegree(dir) + 90;
            Debug.Log(Hexagon.DirectionToDegree(originalDir) + "->" + Hexagon.DirectionToDegree(tile.GetComponent <StartSceneTile>().dir) + " : " + axisdig);
            float rotatesum = 0;
            while (rotatesum < 180)
            {
                tile.transform.Rotate(new Vector3(Mathf.Sin(Mathf.Deg2Rad * axisdig), Mathf.Cos(Mathf.Deg2Rad * axisdig)) * Time.deltaTime * 180 / flipTime, Space.World);
                rotatesum += Time.deltaTime * 180 / flipTime;
                yield return(null);
            }
            tile.transform.rotation = Quaternion.AngleAxis(Hexagon.DirectionToDegree(tile.GetComponent <StartSceneTile>().dir), Vector3.back);
            yield return(new WaitForSeconds(flipTime));

            break;

        default:
            break;
        }
        isFlipping = false;
    }
Example #3
0
    IEnumerator Flip(Hexagon tile, Direction dir)
    {
        switch (dir)
        {
        case Direction.North:
        case Direction.NEE:
        case Direction.EES:
        case Direction.South:
        case Direction.SWW:
        case Direction.WWN:
            Direction originalDir = tile.dir;
            tile.dir = Hexagon.DegreeToDirection(Hexagon.DirectionToDegree(dir) * 2 - Hexagon.DirectionToDegree(originalDir) + 180);
            //int axisdig = (Hexagon.DirectionToDegree(tile.dir) - Hexagon.DirectionToDegree(originalDir) + 360) / 2 + Hexagon.DirectionToDegree(originalDir);
            int axisdig = Hexagon.DirectionToDegree(dir) + 90;
            Debug.Log(Hexagon.DirectionToDegree(originalDir) + "->" + Hexagon.DirectionToDegree(tile.dir) + " : " + axisdig);
            float rotatesum = 0;
            while (rotatesum < 180)
            {
                allowInput = false;
                tile.obj.transform.Rotate(new Vector3(Mathf.Sin(Mathf.Deg2Rad * axisdig), Mathf.Cos(Mathf.Deg2Rad * axisdig)) * Time.deltaTime * 180 / flipTime, Space.World);
                rotatesum += Time.deltaTime * 180 / flipTime;
                yield return(null);
            }
            tile.obj.transform.rotation = Quaternion.AngleAxis(Hexagon.DirectionToDegree(tile.dir), Vector3.back);
            allowInput = true;
            break;

        default:
            break;
        }
    }
Example #4
0
 public LaserElement(Transform prefab, Pos p, Direction dir, float length)
 {
     _length  = 1.0f;
     this.dir = dir;
     this.p   = p;
     this.t   = (Transform)MonoBehaviour.Instantiate(
         prefab,
         (Transformer.PosToWorld(p) * (2 - length) + Transformer.PosToWorld(Hexagon.NextTile(p, dir)) * length) / 2 + (Vector3.back * 0.1f),
         Quaternion.AngleAxis(Hexagon.DirectionToDegree(dir), Vector3.back));
     this.length = length;
 }
Example #5
0
 public void onUndoClick()
 {
     if (RayCast.isClear)
     {
         return;
     }
     if (gameStack.Count > 0 && allowInput)
     {
         KeyValuePair <ArrayList, Direction> pop = gameStack.Pop();
         ArrayList tiles = pop.Key;
         Direction dir   = pop.Value;
         flipSound.PlayOneShot(flipSoundClip);
         foreach (Hexagon tile in tiles)
         {
             StartCoroutine(Flip(tile, Hexagon.DegreeToDirection(Hexagon.DirectionToDegree(dir) + 180)));
         }
         flip--;
         flipStatus.text = flip + " / " + FindObjectOfType <GameLoader>().map.maxFlip.ToString();
     }
 }
Example #6
0
    IEnumerator StageClear()
    {
        LaserElement clearHilight = new LaserElement(hilightPrefab, laserList[0].p, laserList[0].dir, 1.0f);;

        PlayerPrefs.SetInt(GameLoader.levelData, 1);
        PlayerPrefs.Save();
        playingClearAnimation = true;
        for (int i = 0; i < laserList.Count; i++)
        {
            laserList[i].t.gameObject.SetActive(false);
        }
        for (float clearLaserPos = 0; clearLaserPos < laserLength; clearLaserPos += Time.deltaTime * 6.0f)
        {
            if (!UIButtonHandler.clearAnimation)
            {
                break;
            }
            float drawedLaserPos = 0;
            for (int i = 0; i < laserList.Count; i++)
            {
                if (clearLaserPos - drawedLaserPos <= 0)
                {
                    break;
                }
                else
                {
                    laserList[i].t.gameObject.SetActive(true);
                    if (clearLaserPos - drawedLaserPos <= 1.0f)
                    {
                        laserList[i].length = clearLaserPos - drawedLaserPos;
                        clearHilight.SetPosition(laserList[i].p, laserList[i].dir, laserList[i].length);
                        MeshRenderer render = clearHilight.t.GetComponent <MeshRenderer>();
                        render.material.mainTextureScale  = new Vector2(1.0f, hilightWidth * clearHilight.length);
                        render.material.mainTextureOffset = new Vector2(0.0f, -hilightWidth * clearHilight.length + 0.8f);
                        render.sortingOrder = laserList.Count;
                    }
                    else if (laserList[i].length < 1.0f)
                    {
                        laserList[i].length = 1.0f;
                    }
                }
                drawedLaserPos += laserList[i].length;
            }
            yield return(null);
        }
        for (int i = 0; i < laserList.Count; i++)
        {
            laserList[i].t.gameObject.SetActive(true);
            laserList[i].length = 1.0f;
        }
        Destroy(clearHilight.t.gameObject);
        if (UIButtonHandler.clearAnimation == true)
        {
            Transform t = (Transform)MonoBehaviour.Instantiate(
                hilightPrefab,
                Transformer.PosToWorld(Hexagon.NextTile(laserList[laserList.Count - 1].p, laserList[laserList.Count - 1].dir)) + (Vector3.back * 0.3f),
                Quaternion.AngleAxis(Hexagon.DirectionToDegree(laserList[laserList.Count - 1].dir) + 90, Vector3.back));
            t.localScale = new Vector3(0.4f, 1.30f, 1.0f);
            Material m = t.GetComponent <MeshRenderer>().material;

            /*
             * for (float i = 0.1f; i < 0.7f; i += Time.deltaTime)
             * {
             *  m.mainTextureScale = new Vector2(1, 0.1f / i / i);
             *  m.mainTextureOffset = new Vector2(0, 0.5f - 0.1f / i / i / 2);
             *  yield return null;
             * }
             * for(float i = 0.7f; i > 0.1; i -= Time.deltaTime)
             * {
             *  m.mainTextureScale = new Vector2(1, 0.1f / i / i);
             *  m.mainTextureOffset = new Vector2(0, 0.5f - 0.1f / i / i / 2);
             *  yield return null;
             * }
             */
            m.mainTextureScale = new Vector2(1f, 3f);
            float i = 0.0f;
            for (; i < 0.3f; i += Time.deltaTime)
            {
                m.mainTextureOffset = new Vector2(0, -7 * i + 3f);
                yield return(null);
            }
            clearSound.PlayOneShot(clearSoundClip, 0.3f);
            for (; i < 1f; i += Time.deltaTime)
            {
                m.mainTextureOffset = new Vector2(0, -7 * i + 3f);
                yield return(null);
            }
            Destroy(t.gameObject);
        }
        playingClearAnimation = false;
        FindObjectOfType <UIButtonHandler>().onMenuOpen();
        FindObjectOfType <UIButtonHandler>().menuUI.SetActive(false);
    }