Ejemplo n.º 1
0
        protected void UpdateState()
        {
            current = current.Flip(currentMove);
            int first = current.FirstCoinAffectedIndex(currentMove);
            int n     = current.NumCoinsAffected(currentMove);

            Array.Reverse(coins, first, n);
        }
Ejemplo n.º 2
0
        protected void CreateRotatingBase(Move move)
        {
            int first = current.FirstCoinAffectedIndex(move);
            int n     = current.NumCoinsAffected(move);

            GameObject firstCoin   = coins[first];
            GameObject lastCoin    = coins[first + n - 1];
            Vector3    originalPos = (firstCoin.transform.position + lastCoin.transform.position) / 2;

            rotatingBase = GameObject.CreatePrimitive(PrimitiveType.Cube);
            rotatingBase.transform.position = originalPos;
            rotatingBase.GetComponent <Renderer>().enabled = false;

            for (int i = first; i < first + n; i++)
            {
                coins[i].transform.parent = rotatingBase.transform;
            }
        }
Ejemplo n.º 3
0
        public RotationController(PuzzleState puzzleState, Move currentMove, GameObject[] pieceObjects, ref Vector2 rotationScreenCenter)
        {
            this.pieceObjects = pieceObjects;

            int first = puzzleState.FirstCoinAffectedIndex(currentMove);
            int n     = puzzleState.NumCoinsAffected(currentMove);

            GameObject firstCoin   = pieceObjects[first];
            GameObject lastCoin    = pieceObjects[first + n - 1];
            Vector3    originalPos = (firstCoin.transform.position + lastCoin.transform.position) / 2;

            rotatingBase = GameObject.CreatePrimitive(PrimitiveType.Cube);
            rotatingBase.transform.position   = originalPos;
            rotatingBase.transform.localScale = new Vector3((lastCoin.transform.position - firstCoin.transform.position).x + 0.1f, 0.1f, 1f);
            rotatingBase.GetComponent <Renderer>().enabled = false;

            for (int i = first; i < first + n; i++)
            {
                pieceObjects[i].transform.parent = rotatingBase.transform;
                pieceObjects[i].GetComponent <CoinController>().isMoving = true;
            }
            rotationScreenCenter             = Camera.main.WorldToScreenPoint(rotatingBase.GetComponent <Renderer>().bounds.center);
            rotatingBase.transform.position -= Vector3.forward;
        }