Example #1
0
        private void RotateMinoQueue()
        {
            MinoSide oldSide = _minoSides.Dequeue();

            _currentRotateDirection = _minoSides.Peek();
            _minoSides.Enqueue(oldSide);
        }
        private void CreateMino()
        {
            Mino mino = ScriptableObject.CreateInstance <Mino>();

            List <Vector2Int> localCoordinates = CalculateLocalCoordinates();
            //BlocksLocalCoordinates
            Vector2IntList vectorList = new Vector2IntList();

            vectorList.List.AddRange(localCoordinates);
            mino.AddPairInCreating(MinoSide.Bottom, vectorList);
            List <Vector2Int> rotateCoordinates = new List <Vector2Int>(localCoordinates);

            ShowCollectiction(rotateCoordinates);
            Debug.Log(Enum.GetNames(typeof(MinoSide)).Length);

            for (int index = 1; index < Enum.GetNames(typeof(MinoSide)).Length; index++)
            {
                Debug.Log("rotate");
                MinoSide key = (MinoSide)index;
                rotateCoordinates = CalculateRotateDirectionCoordinates(rotateCoordinates);
                vectorList        = new Vector2IntList();
                vectorList.List.AddRange(rotateCoordinates);
                mino.AddPairInCreating(key, vectorList);
                ShowCollectiction(rotateCoordinates);
            }


            SaveMinoAsset(mino);
        }
Example #3
0
        private void InitializeRotateVariables()
        {
            foreach (MinoSide side in (MinoSide[])Enum.GetValues(typeof(MinoSide)))
            {
                _minoSides.Enqueue(side);
            }

            _currentRotateDirection = _minoSides.Peek();
        }
Example #4
0
        public List <Vector2Int> GetCheckBlockCoordinates()
        {
            Queue <MinoSide> checkSides = new Queue <MinoSide>(_minoSides);

            checkSides.Dequeue();
            MinoSide newRotateDirection = checkSides.Peek();

            return(_mino.BlocksLocalCoordinates[newRotateDirection]);
        }
Example #5
0
        private void Update()
        {
            if (!Pause.IsPause)
            {
                if (TARGET_TIME_AMOUNT < _currentTimeAmount)
                {
                    Vector2Int direction = new Vector2Int(0, 1);
                    MinoSide   side      = MinoSide.Bottom;
                    MoveMinoWithChecking(side, direction);
                    _currentTimeAmount = 0f;
                }
                else
                {
                    _currentTimeAmount += Time.deltaTime * _minoFallSpeed;
                }

                ActionData actionData = _minoInput.DetectAction();
                if (actionData.isActionHappened)
                {
                    if (actionData.action == MoveAction.Rotate)
                    {
                        List <Vector2Int> checkBlockCoordinates = _minoModel.GetCheckBlockCoordinates();
                        if (_fieldModel.IsRotateInField(_minoModel.BlocksCoordinates[0], checkBlockCoordinates))
                        {
                            if (_fieldModel.IsRotatePossible(_minoModel.BlocksCoordinates[0], checkBlockCoordinates))
                            {
                                _minoModel.Rotate();
                            }
                        }
                    }
                    else if (actionData.action == MoveAction.ToBottomEnd)
                    {
                        Vector2Int distance = _fieldModel.CalculateDistanceToBottom(_minoModel.BlocksCoordinates);
                        _minoModel.Move(distance);
                        UpdateGameState();
                    }
                    else if (actionData.action == MoveAction.Right)
                    {
                        Vector2Int direction = new Vector2Int(1, 0);
                        MinoSide   side      = MinoSide.Right;
                        MoveMinoWithChecking(side, direction);
                    }
                    else if (actionData.action == MoveAction.Left)
                    {
                        Vector2Int direction = new Vector2Int(-1, 0);
                        MinoSide   side      = MinoSide.Left;
                        MoveMinoWithChecking(side, direction);
                    }
                }
            }
        }
Example #6
0
        private void MoveMinoWithChecking(MinoSide side, Vector2Int direction)
        {
            bool isInField        = _fieldModel.IsMoveInField(direction, _minoModel.BlocksCoordinates);
            bool isMovingPossible = true;

            if (isInField)
            {
                isMovingPossible = _fieldModel.IsMovePossible(direction, _minoModel.BlocksCoordinates);
                if (isMovingPossible)
                {
                    _minoModel.Move(direction);
                }
            }
            else if (!isInField && (side == MinoSide.Left || side == MinoSide.Right))
            {
            }


            if (!(isInField && isMovingPossible) && side == MinoSide.Bottom)
            {
                UpdateGameState();
            }
        }
Example #7
0
 public void AddPairInCreating(MinoSide key, Vector2IntList value)
 {
     _blocksLocalCoordinates.Add(key, value);
 }