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)); }
// 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); } }