protected override tnStandardAIInputFillerBase OnCreateAI(int i_Index, GameObject i_Character)
    {
        if (m_Roles.Count == 0 || m_AICreated >= m_Roles.Count)
        {
            return(CreateInputFiller(s_DefaultRole, i_Character));
        }

        AIRole role = m_Roles[m_AICreated++];

        return(CreateInputFiller(role, i_Character));
    }
    // tnBaseStandardMatchAIFactory's interface

    protected override void OnConfigure(tnTeamDescription i_TeamDescription)
    {
        if (i_TeamDescription == null)
        {
            return;
        }

        int charactersCount = i_TeamDescription.charactersCount;

        if (charactersCount <= 0 || charactersCount >= s_Roles.Length)
        {
            return;
        }

        AIRole[] roles = s_Roles[charactersCount - 1];

        if (roles == null || roles.Length == 0 || roles.Length != charactersCount)
        {
            return;
        }

        int aiIndex = 0;

        for (int characterIndex = 0; characterIndex < charactersCount; ++characterIndex)
        {
            tnCharacterDescription characterDescription = i_TeamDescription.GetCharacterDescription(characterIndex);

            if (characterDescription == null)
            {
                continue;
            }

            int          playerId   = characterDescription.playerId;
            tnPlayerData playerData = tnGameData.GetPlayerDataMain(playerId);

            if (playerData == null)
            {
                AIRole role = roles[aiIndex++];
                m_Roles.Add(role);
            }
        }

        m_Roles.Sort();
    }
    // INTERNALS

    private tnStandardAIInputFillerBase CreateInputFiller(AIRole i_Role, GameObject i_Character)
    {
        //return new tnStandardAIInputFillerNull(i_Character);
        return(new tnStandardAIInputFiller(i_Character, i_Role));
    }
Ejemplo n.º 4
0
    // CTOR

    public tnStandardAIInputFiller(GameObject i_Self, AIRole i_Role)
        : base(i_Self)
    {
        m_Role = i_Role;

        // Setup parameters.

        tnStandardAIInputFillerParams aiParams = Resources.Load <tnStandardAIInputFillerParams>(s_Params);

        if (aiParams != null)
        {
            // Seek-and-flee behaviour.

            aiParams.GetMinFleeDistanceFactor(out m_MinFleeDistanceFactor);
            aiParams.GetMaxFleeDistanceFactor(out m_MaxFleeDistanceFactor);

            // Separation.

            aiParams.GetSeparationThreshold(out m_SeparationThreshold);

            // Energy thresholds.

            aiParams.GetMinDashEnergy(out m_MinDashEnergy);
            aiParams.GetMinKickEnergy(out m_MinKickEnergy);
            aiParams.GetMinTackleEnergy(out m_MinTackleEnergy);
            aiParams.GetMinAttractEnergy(out m_MinAttractEnergy);

            // Cooldown timers.

            aiParams.GetDashCooldown(out m_DashCooldown);
            aiParams.GetKickCooldown(out m_KickCooldown);
            aiParams.GetTackleCooldown(out m_TackleCooldown);
            aiParams.GetAttractCooldown(out m_AttractCooldown);

            // Dash behaviour.

            aiParams.GetDashDistance(out m_DashDistance);
            aiParams.GetForcedDashDistance(out m_ForcedDashDistance);

            // Kick behaviour.

            aiParams.GetKickPrecision(out m_KickPrecision);

            // Tackle behaviour.

            aiParams.GetTackleRadius(out m_TackleRadius);
            aiParams.GetBallDistanceThreshold(out m_BallDistanceThreshold);

            // Attract behaviour.

            aiParams.GetAttractMinRadius(out m_AttractMinRadius);
            aiParams.GetAttractMaxRadius(out m_AttractMaxRadius);

            aiParams.GetAttractTimeThreshold(out m_AttractTimeThreshold);

            // Extra parameters.

            aiParams.GetRecoverRadius(out m_RecoverRadius);
            aiParams.GetRecoverTimeThreshold(out m_RecoverTimeThreshold);
        }
    }