Пример #1
0
    /// <summary>
    /// Get the amount of alcool in the swarm + stop them to move
    /// </summary>
    void ProceedToCheck(SwarmObject swarmObject) // param current swarm
    {
        SwarmObjectCop cop = swarmObject as SwarmObjectCop;

        cop.EndAlert();
        if (cop.SwarmTarget.ComposedOfAMaya)
        {
            cop.GoesToUniqueTarget = false;
            cop.SwarmTarget.EndChecked();
        }
        else
        {
            CoroutineUtils.ExecuteWhenFinished(this, new WaitForSeconds(timeCheck), () =>
            {
                cop.GoesToUniqueTarget = false;

                float alcoholAmount = cop.SwarmTarget.TotalSwarmPollenAmount;

                if (alcoholAmount >= (FestBeeSwarm.DRUNK_POLLEN_AMOUNT))
                {
                    cop.SwarmTarget.FailedPolitest();
                }
                else
                {
                    cop.SwarmTarget.SuccessPolitest();
                }

                // send back to home if needed
                if (_countPoliTest <= 0 && state != CopState.GoToHive)
                {
                    GoToHive();
                }
            });
        }
    }
Пример #2
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="swarm"></param>
    /// <param name="targetPos"></param>
    void SendCopToPlace(FestBeeSwarm swarm, Vector3 targetPos, Vector3 dir)
    {
        SwarmObjectCop cop = currentSwarm.GetRandomnlyObject();

        if (cop != null)
        {
            swarm.IsChecked();
            cop.Alert();

            cop.AssignNewTarget(targetPos, dir);
            cop.SwarmTarget = swarm;

            cop.OnTargetReached  = null;
            cop.OnTargetReached += ProceedToCheck;
        }
    }
Пример #3
0
    void GenerateCopSwarm()
    {
        Transform swarmExit = HiveMain.m_Instance.gameObject.transform;

        currentSwarm = Instantiate(copSwarmPrefab, swarmExit.position, Quaternion.identity);
        currentSwarm.m_SwarmRadius = startRange;

        for (int i = 0; i < baseCountCops; i++)
        {
            SwarmObjectCop cop = Instantiate(copPrefab, currentSwarm.transform, false);
            cop.transform.position = swarmExit.position;

            currentSwarm.AddSwarmObject(cop);
        }

        currentSwarm.TargetPosition = HiveMain.m_Instance.gameObject.transform.position;
    }