예제 #1
0
    public static CameraFollowPlayer GetCameraForPlayer(PlayerTankForceMovement p)
    {
        CameraFollowPlayer[] cams = UnityEngine.Object.FindObjectsOfType <CameraFollowPlayer>() as CameraFollowPlayer[];

        foreach (CameraFollowPlayer cam in cams)   // TIDYME: 2018-07-07: use foreach loop
        // This more/less assumes that followObj has the playerTankForceMovement script...
        {
            if (cam.followObj.GetComponent <PlayerTankForceMovement>() != null &&
                cam.followObj.GetComponent <PlayerTankForceMovement>().Equals(p))
            {
                return(cam);
            }
        }

        Debug.Log("Couldn't find cam for " + p);

        return(null);
    }
    public void CaptureBase (PlayerTankForceMovement buyer) {
        TeamBase teamBase =
            transform.parent.GetComponent<TeamBase>(); // Assume that BuyCaptureBase is a child of the base.

        if (teamBase == null) { // TIDYME: 2018-07-07: Use Assert
            Debug.Log("BuyCaptureBase could not find the base we're capturing!?");
        }

        // Set the team of the base
        if (buyer == null) { Debug.Log("CapBase.. buyer is null"); }
        if (buyer.GetComponent<TeamPlayer>() == null) { Debug.Log("CapBase.. buyer TP is null"); }
        teamBase.team = buyer.GetComponent<TeamPlayer>().team;

        // Now enable all the colliders and renderers in the children...
        // ... for some reason, the polymorphism here was wonky. *sigh*.

        Component[] colliders = teamBase.GetComponentsInChildren<Collider>(true);
        foreach (Component collider in colliders) {
            collider.GetComponent<Collider>().enabled = true;
        }

        MeshRenderer[] renderers = base.transform.GetComponentsInChildren<MeshRenderer>(true);
        foreach (MeshRenderer renderer in renderers) {
            renderer.enabled = true;
        }

        TowerLive[] towers = teamBase.transform.GetComponentsInChildren<TowerLive>(true);
        foreach (TowerLive tower in towers) {
            tower.enabled = true;
            (tower.GetComponent<TeamPlayer>() as TeamPlayer).team = teamBase.team;
            tower.UpdateTextureToTeamColor();
        }

        // And hide the buy base..
        GetComponentInChildren<Renderer>().enabled = false;
        GetComponent<Collider>().enabled = false;
    }