예제 #1
0
    // popravi in pošlje informacijo o spremenjeni mapi vsem tankom
    public void SendMapInfoToTanks()
    {
        // popravi heightArray
        for (int x = 0; x < mapGrid.GetLength(0); x++)
        {
            for (int y = 0; y < mapGrid.GetLength(1); y++)
            {
                if (mapGrid[x, y] == 0)
                {
                    heightArray[x] = y - 1;
                    break;
                }
            }
        }


        // poiščemo vse tanke
        GameObject[] tanks = GameObject.FindGameObjectsWithTag("Player");
        foreach (GameObject tank in tanks)
        {
            TankMoveAndAim tankMoveScript = tank.GetComponent <TankMoveAndAim>();

            // pošljemo vsem tankom novo mapo
            tankMoveScript.mapHightArray = heightArray;
            // rečemo naj pogleda če se rabi tank kaj premakniti
            tankMoveScript.SetCoorectionBool(true);

            if (isNetworkGame)
            {
                tankMoveScript.CorrectTankNetworkPosition();
            }
        }

        // če je network match pošlji info o mapi še drugemu network igralcu
        if (NetworkInfo.isNetworkMatch)
        {
            GameObject[] allNetPlayers = GameObject.FindGameObjectsWithTag("NetworkPlayer");
            foreach (GameObject netPlayer in allNetPlayers)
            {
                netPlayer.GetComponent <NetworkPlayerManager>().SetMissileDestroyedCount(1);

                if (isMainMissile)
                {
                    netPlayer.GetComponent <NetworkPlayerManager>().CheckMap(heightArray);
                }
            }
        }


        //if (!isNetworkGame || isServer)
        if (!isNetworkGame)// || isServer)
        {
            GameObject.Find("GameManager").GetComponent <PlayerManager>().StopWaitingForNextPlayer();
        }

        /*
         * else if (isNetworkGame || !isServer)
         * {
         *  GameObject[] allNetPlayers = GameObject.FindGameObjectsWithTag("NetworkPlayer");
         *  foreach (GameObject netPlayer in allNetPlayers)
         *  {
         *      netPlayer.GetComponent<NetworkPlayerManager>().StopWaitingForNextPlayerRemote();
         *  }
         * }
         */
        // zgenerira edgeCollider za ground
        GenerateGroundEdgeCollider();
    }
예제 #2
0
    public void MapCompatibility(int[] correctHeightArray)
    {
        if (heightArray != correctHeightArray && !isMainMissile)
        {
            for (int x = 0; x < heightArray.Length; x++)
            {
                if (heightArray[x] > correctHeightArray[x])
                {
                    for (int y = heightArray[x]; y > correctHeightArray[x]; y--)
                    {
                        mapGrid[x, y] = 0;
                        Vector3Int tilePosition = new Vector3Int(x, y, 0);
                        groundTileMap.SetTile(tilePosition, null);
                    }
                }
                else if (heightArray[x] < correctHeightArray[x])
                {
                    for (int y = heightArray[x]; y <= correctHeightArray[x]; y++)
                    {
                        mapGrid[x, y] = 5;
                        Vector3Int tilePosition = new Vector3Int(x, y, 0);
                        int        arrayIndex   = Random.Range(0, 2);
                        groundTileMap.SetTile(tilePosition, grassTiles[arrayIndex]);
                    }
                }
            }

            heightArray = correctHeightArray;

            // poiščemo vse tanke
            GameObject[] tanks = GameObject.FindGameObjectsWithTag("Player");
            foreach (GameObject tank in tanks)
            {
                TankMoveAndAim tankMoveScript = tank.GetComponent <TankMoveAndAim>();

                // pošljemo vsem tankom novo mapo
                tankMoveScript.mapHightArray = heightArray;
                // rečemo naj pogleda če se rabi tank kaj premakniti
                tankMoveScript.SetCoorectionBool(true);

                if (isNetworkGame)
                {
                    tankMoveScript.CorrectTankNetworkPosition();
                }
            }
        }

        // zgenerira edgeCollider za ground
        GenerateGroundEdgeCollider();

        /*
         * if (isServer)
         * {
         *  GameObject.Find("GameManager").GetComponent<PlayerManager>().StopWaitingForNextPlayer();
         * }
         *
         * else
         */
        {
            GameObject[] allNetPlayers = GameObject.FindGameObjectsWithTag("NetworkPlayer");
            foreach (GameObject netPlayer in allNetPlayers)
            {
                netPlayer.GetComponent <NetworkPlayerManager>().StopWaitingForNextPlayerRemote();
            }
        }
    }