Beispiel #1
0
    private IEnumerator FirstLevelStart()
    {
        yield return(new WaitForSeconds(0.5f));

        FirstLevelPlayer.SetActive(true);

        ThisIsYouArrow.SetActive(true);
        ThisIsYouText.SetActive(true);

        yield return(new WaitForSeconds(1.5f));

        FirstLevelPlayer.GetComponent <PieceController>().Obliviate();

        ThisIsYouArrow.GetComponent <Animator>().SetTrigger("Switch");
        ThisIsYouText.GetComponent <Animator>().SetTrigger("Switch");

        yield return(new WaitForSeconds(0.5f));

        ThisIsYouArrow.SetActive(false);
        ThisIsYouText.SetActive(false);

        yield return(new WaitForSeconds(0.8f));

        YourHomeArrow.SetActive(true);
        YourHomeText.SetActive(true);

        List <PieceController> solutionPieces = new List <PieceController>();

        ActiveGrid = _gridGenerator.GenerateGrid(3, 3);

        solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(2, 2))));
        solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(2, 2))));
        solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(1, 2))));
        solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(2, 1))));

        ActiveGrid.GSolution = new GridGenerator.GridSolution(solutionPieces);

        PlaceCivsOnPiece(ActiveGrid.Pieces[1, 1]);

        yield return(new WaitForSeconds(1f));

        YourHomeArrow.GetComponent <Animator>().SetTrigger("Switch");
        YourHomeText.GetComponent <Animator>().SetTrigger("Switch");

        yield return(new WaitForSeconds(0.5f));

        YourHomeArrow.SetActive(false);
        YourHomeText.SetActive(false);

        _meteor = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.Meteor)).GetComponent <MeteorController>();

        StartCoroutine(MeteorPause());
    }
Beispiel #2
0
    private void Start()
    {
        //_playerPiece.ConvertPlayerPieceType(PlayerPieceController.PlayerPieceType.Destroy);

        List <PieceController> solutionPieces = new List <PieceController>();

        if (GridLevel == 1)
        {
            StartCoroutine(FirstLevelStart());
        }
        else if (GridLevel == 2)
        {
            _firstPlay = false;

            ActiveGrid = _gridGenerator.GenerateGrid(4, 4);

            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(1, 3))));
            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(3, 3))));
            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(2, 3))));
            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(3, 2))));

            ActiveGrid.GSolution = new GridGenerator.GridSolution(solutionPieces);

            PlaceCivsOnPiece(ActiveGrid.Pieces[1, 1]);

            StartCoroutine(MeteorPause());

            _gameStarted = false;
        }
        else if (GridLevel == 3)
        {
            _firstPlay = false;

            ActiveGrid = _gridGenerator.GenerateGrid(5, 5);

            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(1, 3))));
            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(3, 3))));
            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(2, 3))));
            solutionPieces.Add(ActiveGrid.AddPlayingPiece(CreatePieceOnGrid(new Vector2Int(3, 2))));

            ActiveGrid.GSolution = new GridGenerator.GridSolution(solutionPieces);

            PlaceCivsOnPiece(ActiveGrid.Pieces[1, 1]);

            StartCoroutine(MeteorPause());

            _gameStarted = false;
        }
    }
Beispiel #3
0
    private void Update()
    {
        int x = (int)Input.GetAxisRaw("Horizontal");
        int z = (int)Input.GetAxisRaw("Vertical");

        if (Input.GetKeyDown(KeyCode.G))
        {
            if (_meteor == null)
            {
                _meteor = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.Meteor)).GetComponent <MeteorController>();

                StartCoroutine(MeteorPause());

                _gameStarted = false;
            }
            return;
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }


        if (!_gameStarted)
        {
            return;
        }

        if (Input.anyKeyDown)
        {
            if (_playerMoving)
            {
                return;
            }

            if (Mathf.Abs(x) > 0f || Mathf.Abs(z) > 0f)
            {
                if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Mirror)
                {
                    PieceController nextPiece = ActiveGrid.ProcessInput(_playerPiece.GridPosition, new Vector2Int(x, z));

                    if (nextPiece != null)
                    {
                        StartCoroutine(AnimatePlayerMovement(_playerPiece, nextPiece));
                    }

                    nextPiece = ActiveGrid.ProcessInput(_playerMirrorPiece.GridPosition, new Vector2Int(x * -1, z * -1));

                    if (nextPiece != null)
                    {
                        StartCoroutine(AnimatePlayerMovement(_playerMirrorPiece, nextPiece));
                    }
                }
                else
                {
                    PieceController nextPiece = ActiveGrid.ProcessInput(_playerPiece.GridPosition, new Vector2Int(x, z));

                    if (nextPiece != null)
                    {
                        StartCoroutine(AnimatePlayerMovement(_playerPiece, nextPiece));
                    }
                }
            }

            if (Input.GetKeyDown(KeyCode.Space))
            {
                if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Destroy)
                {
                    PieceController destroyedPiece = _playerPiece.DestroyAction();

                    if (destroyedPiece != null)
                    {
                        ActiveGrid.PlayingPieces.Remove(destroyedPiece);
                    }
                }
                else if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Normal)
                {
                    _playerPiece.ConvertPieceType(PieceController.PieceType.Normal);
                    ActiveGrid.AddPlayingPiece(_playerPiece);
                }
                else if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Mirror)
                {
                    _playerPiece.ConvertPieceType(PieceController.PieceType.Normal);
                    ActiveGrid.AddPlayingPiece(_playerPiece);

                    _playerMirrorPiece.ConvertPieceType(PieceController.PieceType.Normal);
                    ActiveGrid.AddPlayingPiece(_playerMirrorPiece);
                }

                _cubesUsed++;

                if (ActiveGrid.CheckComplete())
                {
                    PlaceCivsOnPiece(ActiveGrid.Pieces[1, 1]);

                    StartCoroutine(SceneTransition());

                    _gameStarted = false;
                }
                else
                {
                    _playerPiece = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.PlayerPiece), Vector3.zero, Quaternion.identity)
                                   .GetComponent <PlayerPieceController>();

                    if (GridLevel == 3)
                    {
                        if (_cubesUsed == 1)
                        {
                            _playerPiece.ConvertPlayerPieceType(PlayerPieceController.PlayerPieceType.Destroy);
                        }
                    }

                    _playerPiece.PlaceOnTop(ActiveGrid.Pieces[0, 0]);
                }

                //_playerPiece.ConvertPlayerPieceType(PlayerPieceController.PlayerPieceType.Destroy);
            }
        }
    }