private IEnumerator Reload(FPSKebabiste kebabiste)
    {
        if (kebabiste.isGoingTohide)
        {
            if (kebabiste.hiding != null)
            {
                StopCoroutine(kebabiste.hiding);
            }

            kebabiste.isGoingTohide = false;
        }
        if (kebabiste.isGoingNearOpponent)
        {
            if (kebabiste.goingNear != null)
            {
                StopCoroutine(kebabiste.goingNear);
            }

            kebabiste.isGoingNearOpponent = false;
        }
        if (!kebabiste.isGoingToReload)
        {
            Debug.Log("going");
            kebabiste.isGoingToReload = true;
            Vector3 reloadZone = FindClosestIn(reloadingZones, kebabiste.kebabistePrefab.transform.position).position;
            kebabiste.exposer.agent.SetDestination(reloadZone);
            while (Vector3.Distance(kebabiste.kebabistePrefab.transform.position, reloadZone) > 0.5f)
            {
                yield return(new WaitForSeconds(0.1f));
            }
            Debug.Log("done");
            kebabiste.isGoingToReload = false;
        }
    }
    private IEnumerator GoNear(FPSKebabiste kebabiste)
    {
        if (kebabiste.isGoingTohide)
        {
            if (kebabiste.hiding != null)
            {
                StopCoroutine(kebabiste.hiding);
            }
            kebabiste.isGoingTohide = false;
        }
        if (kebabiste.isGoingToReload)
        {
            if (kebabiste.goingToreload != null)
            {
                StopCoroutine(kebabiste.goingToreload);
            }
            kebabiste.isGoingToReload = false;
        }
        if (!kebabiste.isGoingNearOpponent)
        {
            Debug.Log("going");
            kebabiste.isGoingNearOpponent = true;
            kebabiste.exposer.agent.SetDestination(kebabiste.opponent.kebabistePrefab.transform.position);
            while (Vector3.Distance(kebabiste.kebabistePrefab.transform.position, kebabiste.opponent.kebabistePrefab.transform.position) > 15.0f)
            {
                yield return(new WaitForSeconds(0.1f));
            }

            Debug.Log("done");
            kebabiste.exposer.agent.SetDestination(kebabiste.kebabistePrefab.transform.position);
            kebabiste.isGoingNearOpponent = false;
        }
    }
 private void Shoot(FPSKebabiste kebabiste)
 {
     if (kebabiste.ammo > 0)
     {
         kebabiste.ammo -= 1;
         GameObject proj = objectPooler.GetPooledObject(0);
         proj.SetActive(true);
         proj.transform.position =
             kebabiste.kebabisteCam.transform.forward + kebabiste.kebabisteCam.transform.position;
         proj.GetComponent <Rigidbody>().AddForce(kebabiste.kebabisteCam.transform.forward * 30, ForceMode.Impulse);
     }
 }
    async void Start()
    {
        kebabiste1 = !keb1isAI ? (FPSKebabiste) new FPSPlayerKebabiste() : new FPSAgentKebabiste();
        kebabiste2 = !keb2isAI ? (FPSKebabiste) new FPSPlayerKebabiste() : new FPSAgentKebabiste();

        kebabiste1.opponent = kebabiste2;
        kebabiste2.opponent = kebabiste1;

        kebabiste1.kebabistePrefab = Instantiate(kebabistePrefab, keb1Spawn.position + Vector3.up, Quaternion.identity);
        kebabiste2.kebabistePrefab = Instantiate(kebabistePrefab, keb2Spawn.position + Vector3.up, Quaternion.identity);

        kebabiste1.SetupPlayer();
        kebabiste1.exposer.kebabiste = kebabiste1;
        kebabiste2.SetupPlayer();
        kebabiste2.exposer.kebabiste = kebabiste2;

        if (keb1isAI)
        {
            if (kebabiste1 is FPSAgentKebabiste agent1)
            {
                agent1.ComputeIntent();
            }
            kebabiste2.kebabistePrefab.GetComponent <FPSKebabisteExposer>().camera.enabled = false;
        }
        else
        {
            if (kebabiste1 is FPSPlayerKebabiste player1)
            {
                player1.playerInputs = playerInputs;
            }

            kebabiste1.exposer.agent.enabled = false;
        }

        if (keb2isAI)
        {
            if (kebabiste2 is FPSAgentKebabiste agent2)
            {
                agent2.ComputeIntent();
            }
            kebabiste2.kebabistePrefab.GetComponent <FPSKebabisteExposer>().camera.enabled = false;
        }
        else
        {
            if (kebabiste2 is FPSPlayerKebabiste player2)
            {
                player2.playerInputs = playerInputs;
            }

            kebabiste2.exposer.agent.enabled = false;
        }
    }
Esempio n. 5
0
    private IEnumerator ReloadAmmo(FPSKebabiste kebabiste)
    {
        isReloading = true;
        while (isReloading)
        {
            int cpt = 0;
            while (cpt < 5)
            {
                yield return(new WaitForSeconds(1.0f));

                cpt++;
            }

            kebabiste.ammo = 10;
        }
    }
    public void PlayActions(FPSKebabiste kebabiste)
    {
        float speed = 20.0f;

        kebabiste.RotateView();

        FPSKebabiste.Action kebabisteIntent = kebabiste.GetIntent();

        switch (kebabisteIntent)
        {
        case FPSKebabiste.Action.GoUp:
            //kebabiste.kebabistePrefab.transform.position+=Vector3.forward*Time.deltaTime;
            kebabiste.wantToGoDown = false;
            kebabiste.wantToGoUp   = true;
            break;

        case FPSKebabiste.Action.GoDown:
            kebabiste.wantToGoUp   = false;
            kebabiste.wantToGoDown = true;
            break;

        case FPSKebabiste.Action.GoRight:
            kebabiste.wantToGoLeft  = false;
            kebabiste.wantToGoRight = true;
            break;

        case FPSKebabiste.Action.GoLeft:
            kebabiste.wantToGoRight = false;
            kebabiste.wantToGoLeft  = true;
            break;

        case FPSKebabiste.Action.StopUp:
            //kebabiste.kebabistePrefab.transform.position+=Vector3.forward*Time.deltaTime;
            kebabiste.wantToGoUp = false;
            break;

        case FPSKebabiste.Action.StopDown:
            kebabiste.wantToGoDown = false;
            break;

        case FPSKebabiste.Action.StopRight:
            kebabiste.wantToGoRight = false;
            break;

        case FPSKebabiste.Action.StopLeft:
            kebabiste.wantToGoLeft = false;
            break;

        case FPSKebabiste.Action.Shoot:
            Shoot(kebabiste);
            break;

        case FPSKebabiste.Action.Hide:
            kebabiste.hiding = StartCoroutine(Hide(kebabiste));
            break;

        case FPSKebabiste.Action.Reload:
            kebabiste.goingToreload = StartCoroutine(Reload(kebabiste));
            break;

        case FPSKebabiste.Action.GoNear:
            kebabiste.goingNear = StartCoroutine(GoNear(kebabiste));
            break;

        case FPSKebabiste.Action.None:
        default:
            break;
        }

        Vector3 wantedMovement = Vector3.zero;

        if (kebabiste.wantToGoUp)
        {
            wantedMovement += speed * Time.deltaTime * kebabiste.kebabistePrefab.transform.forward;
        }
        if (kebabiste.wantToGoDown)
        {
            wantedMovement -= speed * Time.deltaTime * kebabiste.kebabistePrefab.transform.forward;
        }
        if (kebabiste.wantToGoLeft)
        {
            wantedMovement -= speed * Time.deltaTime * kebabiste.kebabistePrefab.transform.right;
        }
        if (kebabiste.wantToGoRight)
        {
            wantedMovement += speed * Time.deltaTime * kebabiste.kebabistePrefab.transform.right;
        }

        if (wantedMovement != Vector3.zero)
        {
            kebabiste.KebabisteRigidbody.AddForce(wantedMovement, ForceMode.Impulse);
        }
        else
        {
            kebabiste.KebabisteRigidbody.velocity = Vector3.zero;
        }
    }