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------------------------"); } } } // } //} }
public static GameOverCheck getInstance() { if (_instance != null) { return(_instance); } _instance = new GameOverCheck(); return(_instance); }
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 = ""; } }
private void OnMouseDown() { if (bIsStatic || !PanelScript.isPlayable) { return; } transform.Rotate(0, 0, 90); rotationStatus += 1; rotationStatus = rotationStatus >= 4 ? 0 : rotationStatus; GameOverCheck.getInstance().checkWin(); }
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; } } }