//builds a tower of type 'inName' and level 'inLevel' at the cell (Xcoordinate,Ycoordinate)
    public GameObject buildTower(string inName, int inLevel, int Xcoordinate, int Ycoordinate)
    {
        //Only the master client can build defenses
        if (!PhotonNetwork.isMasterClient)
        {
            return(null);
        }

        //if this spot is available, build a tower there
        if (availableSpots[Xcoordinate, Ycoordinate])
        {
            //use the photon network instantiate so that other players can see the tower
            GameObject newTower = PhotonNetwork.Instantiate(inName + inLevel, gms.GetWorldPosition(new Vector2(Xcoordinate, Ycoordinate)), Quaternion.identity, 0);
            //rotate tower to face the right direction that humans come from
            newTower.transform.Rotate(0, 90, 0);
            //assign its values in tower script
            TowerScript ts = newTower.GetComponent <TowerScript> ();
            ts.towerLevel    = inLevel;
            ts.towerName     = inName;
            ts.gridPositionX = Xcoordinate;
            ts.gridPositionY = Ycoordinate;
            //to prevent other towers from being built at the same cell
            availableSpots[Xcoordinate, Ycoordinate] = false;
            return(newTower);
        }
        return(null);
    }
    //creates a human using Photon Network's Instantiate, so it is visible to all other players
    //takes in the name of the human to be spawned (aka his/her type)
    //and the coordinates of where the human is to be created
    public GameObject spawnHuman(string inName, int Xcoordinate, int Ycoordinate)
    {
        //instantiate a new human on the photon network
        GameObject newHuman = PhotonNetwork.Instantiate(inName, gms.GetWorldPosition(new Vector2(Xcoordinate, Ycoordinate)), Quaternion.identity, 0);

        //to head to the left
        newHuman.transform.Rotate(0, -90, 0);

        return(newHuman);
    }