public void SetupDriverAbilityManager()
    {
        isHost            = PhotonNetwork.IsMasterClient;
        ultimateUiManager = FindObjectOfType <UltimateUiManager>();
        gamestateTracker  = FindObjectOfType <GamestateTracker>();
        driverPhotonView  = GetComponent <PhotonView>();
        NetworkPlayerVehicle npv = GetComponent <NetworkPlayerVehicle>();

        if (npv != null)
        {
            driverId = npv.GetDriverID();
            if (driverId == PhotonNetwork.LocalPlayer.ActorNumber)
            {
                isDriver = true;
            }
            gunnerId = npv.GetGunnerID();
            if (driverId < 0)
            {
                driverBot = true;
            }
            if (gunnerId < 0)
            {
                gunnerBot = true;
            }
            AdjustDriverUltimateProgress(0);
        }
        abilityPrimary.SetupAbility();
        abilitySecondary.SetupAbility();

        gunnerWeaponManager = GetComponentInChildren <GunnerWeaponManager>();

        isSetup = true;
        //  abilitySecondary.SetupAbility();
    }
示例#2
0
    //-----------------------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------------------
    //-----------------------------------------------------------------------------------------------

    public virtual void SetupWeapon()
    {
        // assign photon view to the gunner
        //Player gunnerPlayer = gunnerPhotonView.Owner;

        _networkPlayerVehicle = GetComponentInParent <NetworkPlayerVehicle>();
        myVehicleManager      = GetComponentInParent <VehicleHealthManager>();
        gunnerWeaponManager   = gunnerPhotonView.GetComponent <GunnerWeaponManager>();
        if (_networkPlayerVehicle != null)
        {
            myNickName = _networkPlayerVehicle.GetGunnerNickName();
            myPlayerId = _networkPlayerVehicle.GetGunnerID();
            myTeamId   = _networkPlayerVehicle.teamId;
        }
        else
        {
            Debug.LogError("Weapon does not belong to a valid vehicle!! Assigning owner to null");
        }

        //weaponPhotonView.TransferOwnership(gunnerPlayer);

        weaponUi = FindObjectOfType <WeaponUi>();
        _playerTransformTracker = FindObjectOfType <PlayerTransformTracker>();
        if (fullSalvoOnStart)
        {
            currentSalvo = salvoSize;
        }
        isSetup = true;
    }
示例#3
0
    protected void ChargeDriverAbility(Weapon.WeaponDamageDetails hitDetails)
    {
        int       sourceTeamId    = hitDetails.sourceTeamId;
        Transform sourceTransform = playerTransformTracker.GetVehicleTransformFromTeamId(sourceTeamId);
        // now add damage dealt back to the source transform driver ability manager
        GunnerWeaponManager gunnerWeaponManager = sourceTransform.GetComponentInChildren <GunnerWeaponManager>();

        // adjust damage dealth modifier
        gunnerWeaponManager.UpdateDamageDealt(hitDetails);
    }
示例#4
0
 public void Start()
 {
     gunnerWeaponManager = GetComponent <GunnerWeaponManager>();
     turretController    = GetComponent <TurretController>();
     // Invoke(nameof(GetAllTargets), 1f);
     GetAllTargets();
     if (enemies.Count == 0)
     {
         Debug.Log("Gunner AI for " + transform.root.gameObject.name + " could not find any targets.");
         return;
     }
     rigidbodyVehicleId = transform.root.GetComponentInChildren <PhysXRigidBody>().vehicleId;
     StartCoroutine(GetBestTarget());
     StartCoroutine(YesOrNoFire());
     StartCoroutine(FireCoroutine());
 }
示例#5
0
    public override void Pickup(PhotonView otherpv)
    {
        if (this.SentPickup)
        {
            // skip sending more pickups until the original pickup-RPC got back to this client
            return;
        }
        this.SentPickup = true;


        NetworkPlayerVehicle npv = otherpv.GetComponentInParent <NetworkPlayerVehicle>();
        GunnerWeaponManager  gm  = otherpv.gameObject.GetComponentInChildren <GunnerWeaponManager>();



        if (!gm.usingUltimate)
        {
            gm.AdjustGunnerUltimateProgress(ultIncrease);
            this.GetComponent <PhotonView>().RPC(nameof(PunPickup), RpcTarget.AllViaServer, npv.GetDriverID(),
                                                 npv.GetGunnerID());
        }
    }
示例#6
0
    public void ResetProperties()
    {
        // Debug.Log("reset properties");

        TeamEntry team = gamestateTracker.teams.Get((short)teamId);

        myPhotonView.RPC(nameof(SetGunnerHealth_RPC), RpcTarget.All, maxHealth);
        team.Release();
        GunnerWeaponManager gunnerWeaponManager = GetComponentInChildren <GunnerWeaponManager>();

        gunnerWeaponManager.Reset();

        DriverAbilityManager driverAbilityManager = GetComponent <DriverAbilityManager>();

        driverAbilityManager.Reset();
        hpm.canPickupPotato = true;

        smokeL.Stop();
        smokeM.Stop();
        smokeH.Stop();
        // Debug.Log("Called");

        rb.linearDamping   = defaultDrag;
        rb.angularDamping  = defaultAngularDrag;
        rb.velocity        = Vector3.zero;
        rb.angularVelocity = Vector3.zero;
        icd4.isDead        = false;

        rb.centreOfMass = Vector3.zero;

        TeamEntry teamEntry = gamestateTracker.teams.Get((short)teamId);

        teamEntry.isDead = false;
        teamEntry.Increment();
        myPhotonView.RPC(nameof(ResetMesh_RPC), RpcTarget.AllBuffered);
        myPhotonView.RPC(nameof(SetIsDead_RPC), RpcTarget.All, false);
        GetComponentInChildren <DriverCinematicCam>().ResetCam();
    }