Beispiel #1
0
    public void Swipe(SwipeDirection swipeDirection, PlayerType turn)
    {
        //Debug.Log("Button Down Pressed");

        PlayerSymbol currentPlayerSymbol;
        Vector2Int   currentPosition;

        if (turn == PlayerType.P1)
        {
            currentPlayerSymbol = PlayerSymbol.P1;
            currentPosition     = player1SelectedTile;
        }
        else
        {
            currentPlayerSymbol = PlayerSymbol.P2;
            currentPosition     = player2SelectedTile;
        }
        //Tile[,] previousStateTileArray = new Tile[mapGenerator.mapSize.x, mapGenerator.mapSize.y];
        //for (int x = 0; x < mapGenerator.mapSize.x; x++)
        //{
        //  for (int y = 0; y < mapGenerator.mapSize.y; y++)
        //  {
        //    previousStateTileArray[x, y] = (Tile)tiles[x, y].Shallowcopy();
        //  }
        //}
        //Tile[,] previousStateTileArray = Utils.DeepClone<Tile[,]>(tiles);
        //Tile[,] previousStateTileArray = new Tile[mapGenerator.mapSize.x, mapGenerator.mapSize.y];
        //Array.Copy(tiles, previousStateTileArray, tiles.Length);
        //Tile[,] previousStateTileArray = tiles.Clone() as Tile[,];

        //for (int x = 0; x < mapGenerator.mapSize.x; x++)
        //{
        //  for (int y = 0; y < mapGenerator.mapSize.y; y++)
        //  {
        if (tiles[currentPosition.x, currentPosition.y].tileType == currentPlayerSymbol)
        {
            Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(currentPosition.x, currentPosition.y), swipeDirection, mapSize.x);

            if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
            {
                tiles[currentPosition.x, currentPosition.y].containsP1PipeGenerator = false;
                tiles[currentPosition.x, currentPosition.y].containsP2PipeGenerator = false;
                NextTileOperations(turn, currentPlayerSymbol, currentPosition, NextTilePosition);

                //Check For Game End Condition
                if (GameOverCheck.CheckGameOverConditions(tiles, turn, mapSize.x))
                {
                    Utils.EventAsync(new Events.GameOverEvent(turn));

                    Debug.LogError("--------------------Dude Game Over------------------------");
                    Debug.Log("--------------------Dude Game Over------------------------");
                }
            }
        }

        //  }
        //}
    }
Beispiel #2
0
 public static GameOverCheck getInstance()
 {
     if (_instance != null)
     {
         return(_instance);
     }
     _instance = new GameOverCheck();
     return(_instance);
 }
Beispiel #3
0
 private void Awake()
 {
     goc_Single = this;
     go_VictoryScreen.SetActive(false);
     for (int i = 0; i < victoryScreenSlots.Length; i++)
     {
         victoryScreenSlots[i].text_Name.text  = "";
         victoryScreenSlots[i].text_Score.text = "";
     }
 }
Beispiel #4
0
 private void OnMouseDown()
 {
     if (bIsStatic || !PanelScript.isPlayable)
     {
         return;
     }
     transform.Rotate(0, 0, 90);
     rotationStatus += 1;
     rotationStatus  = rotationStatus >= 4 ? 0 : rotationStatus;
     GameOverCheck.getInstance().checkWin();
 }
Beispiel #5
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W) || didPressedW)
        {
            didPressedW = false;
            if (turn == PlayerType.P1)
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y].containsP1PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y), SwipeDirection.Up, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer2UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P2)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player2ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }
                    lastUsedSwipeDirectionForOnline = SwipeDirection.Up;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Up, PlayerType.P1);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
            else
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y].containsP2PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y), SwipeDirection.Up, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer1UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P1)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player1ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Up;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Up, PlayerType.P2);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
        }
        else if (Input.GetKeyDown(KeyCode.S) || didPressedS)
        {
            didPressedS = false;
            if (turn == PlayerType.P1)
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y].containsP1PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y), SwipeDirection.Down, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer2UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P2)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player2ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Down;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Down, PlayerType.P1);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
            else
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y].containsP2PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y), SwipeDirection.Down, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer1UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P1)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player1ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Down;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Down, PlayerType.P2);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
        }
        else if (Input.GetKeyDown(KeyCode.A) || didPressedA)
        {
            didPressedA = false;
            if (turn == PlayerType.P1)
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y].containsP1PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y), SwipeDirection.Left, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer2UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P2)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player2ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Left;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Left, PlayerType.P1);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
            else
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y].containsP2PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y), SwipeDirection.Left, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer1UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P1)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player1ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Left;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Left, PlayerType.P2);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
        }
        else if (Input.GetKeyDown(KeyCode.D) || didPressedD)
        {
            didPressedD = false;
            if (turn == PlayerType.P1)
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y].containsP1PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player1SelectedTile.x, GameManager.Instance.player1SelectedTile.y), SwipeDirection.Right, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer2UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P2)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player2ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Right;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Right, PlayerType.P1);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
            else
            {
                if (!GameManager.Instance.tiles[GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y].containsP2PipeGenerator)
                {
                    return;
                }
                Vector2Int NextTilePosition = Virus.Utils.GetNextTile(new Vector2Int(GameManager.Instance.player2SelectedTile.x, GameManager.Instance.player2SelectedTile.y), SwipeDirection.Right, mapSize.x);
                if (NextTilePosition.x != -1 || NextTilePosition.y != -1)
                {
                    if (isPlayer1UsingShieldPower && GameManager.Instance.tiles[NextTilePosition.x, NextTilePosition.y].tileType == PlayerSymbol.P1)
                    {
                        foreach (KeyValuePair <GameObject, Vector2Int> b in GameManager.Instance.player1ActiveGenerators)
                        {
                            if (b.Value == NextTilePosition)
                            {
                                return;
                            }
                        }
                    }

                    lastUsedSwipeDirectionForOnline = SwipeDirection.Right;
                    SwapPlayerTurn();
                    GameManager.Instance.Swipe(SwipeDirection.Right, PlayerType.P2);
                }
                else
                {
                    Debug.LogWarning("Invalid Move");
                }
            }
        }
        if (Input.GetButtonDown("Fire1") || AIEntrancePass)
        {
            RaycastHit hit;
            bool       doesHitStartingPipesP1 = false;
            bool       doesHitStartingPipesP2 = false;
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit) || AIEntrancePass)
            {
                if (!AIEntrancePass)
                {
                    if (hit.collider != null)
                    {
                        if (hit.collider.transform.tag == "StartingPipes")
                        {
                            doesHitStartingPipesP1 = true;
                        }
                        else if (hit.collider.transform.tag == "StartingPipesP2")
                        {
                            doesHitStartingPipesP2 = true;
                        }
                        else if (hit.collider.transform.tag == "Walkable")
                        {
                            Tile tile = hit.collider.transform.GetComponent <Tile>();
                            if (tile.containsP1PipeGenerator && turn == PlayerType.P1)
                            {
                                GameManager.Instance.player1SelectedTile = tile.position;
                            }
                            else if (tile.containsP2PipeGenerator && turn == PlayerType.P2)
                            {
                                GameManager.Instance.player2SelectedTile = tile.position;
                            }
                        }
                        //Debug.Log("Selected Tile " + player1SelectedTile.x + " " + player1SelectedTile.y);
                    }
                }
                if (doesHitStartingPipesP1 || doesHitStartingPipesP2 || doesHitSPOfP1Online || doesHitSPOfP2Online)
                {
                    //StartingPipes startingPipes = hit.collider.transform.GetComponent<StartingPipes>();
                    //Vector2Int position = startingPipes.GetFrontTileIndex;
                    if ((turn == PlayerType.P1 && GameManager.Instance.noOfPipeGeneratorsLeftForPlayer1 > 0 && doesHitStartingPipesP1 && userSelectedPowers[PowerType.Spawner]) || doesHitSPOfP1Online)
                    {
                        doesHitSPOfP1Online = false;
                        if (AIEntrancePass)
                        {
                            Utils.EventAsync(new Events.GetStartingPipeGameObject(hittedPipeId, obj =>
                            {
                                GameManager.Instance.AddedNewPipeGenerator(obj.transform, turn);
                            }));
                        }
                        else
                        {
                            hittedPipeId = hit.collider.transform.GetComponent <StartingPipes>().id;
                            GameManager.Instance.AddedNewPipeGenerator(hit.collider.transform, turn);
                        }
                        if (GameOverCheck.CheckGameOverConditions(GameManager.Instance.tiles, turn, mapSize.x))
                        {
                            Utils.EventAsync(new Events.GameOverEvent(turn));

                            Debug.LogError("--------------------Dude Game Over------------------------");
                            Debug.Log("--------------------Dude Game Over------------------------");
                        }
                        SwapPlayerTurn();
                        Utils.EventAsync(new Events.UserUsedSelectedPower(PowerType.Spawner, PlayerType.P1));
                    }
                    else if ((turn == PlayerType.P2 && GameManager.Instance.noOfPipeGeneratorsLeftForPlayer2 > 0 && doesHitStartingPipesP2 && userSelectedPowers[PowerType.Spawner]) || doesHitSPOfP2Online)
                    {
                        doesHitSPOfP2Online = false;
                        if (AIEntrancePass)
                        {
                            Utils.EventAsync(new Events.GetStartingPipeGameObject(hittedPipeId, obj =>
                            {
                                GameManager.Instance.AddedNewPipeGenerator(obj.transform, turn);
                            }));
                        }
                        else
                        {
                            hittedPipeId = hit.collider.transform.GetComponent <StartingPipes>().id;
                            GameManager.Instance.AddedNewPipeGenerator(hit.collider.transform, turn);
                        }
                        if (GameOverCheck.CheckGameOverConditions(GameManager.Instance.tiles, turn, mapSize.x))
                        {
                            Utils.EventAsync(new Events.GameOverEvent(turn));

                            Debug.LogError("--------------------Dude Game Over------------------------");
                            Debug.Log("--------------------Dude Game Over------------------------");
                        }
                        SwapPlayerTurn();
                        Utils.EventAsync(new Events.UserUsedSelectedPower(PowerType.Spawner, PlayerType.P2));
                    }
                }
                AIEntrancePass = false;
            }
        }
    }