// UTILS private int GetAICount() { int aiCount = 0; tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule != null) { for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription == null) { continue; } for (int characterIndex = 0; characterIndex < teamDescription.charactersCount; ++characterIndex) { tnCharacterDescription characterDescription = teamDescription.GetCharacterDescription(characterIndex); if (characterDescription == null) { continue; } bool ai = (characterDescription.playerId == Hash.s_NULL); aiCount += (ai) ? 1 : 0; } } } return(aiCount); }
private void SetupGameModeSelector() { if (m_GameModeSelector == null) { return; } tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } int maxTeamSize = 0; for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription != null) { maxTeamSize = Mathf.Max(teamDescription.charactersCount, maxTeamSize); } } SelectorData selectorData = new SelectorData(); List <int> gameModesKeys = tnGameData.GetGameModesKeysMain(); if (gameModesKeys != null) { for (int gameModeIndex = 0; gameModeIndex < gameModesKeys.Count; ++gameModeIndex) { int gameModeId = gameModesKeys[gameModeIndex]; tnGameModeData gameModeData = tnGameData.GetGameModeDataMain(gameModeId); if (gameModeData == null) { continue; } if (!gameModeData.hidden) { IntRange teamsRange = gameModeData.teamsRange; IntRange teamSizeRange = gameModeData.playersPerTeamRange; if (teamsRange.IsValueValid(teamsModule.teamsCount)) { if (teamSizeRange.IsValueValid(maxTeamSize)) { SelectorItem selectorItem = new SelectorItem(gameModeId, gameModeData.name, "", null); selectorData.AddItem(selectorItem); } } } } } m_GameModeSelector.SetData(selectorData); }
// BUSINESS LOGIC public void UpdateModule() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } // Evaluate teams colors. Color[] teamColors = null; { int[] teamIds = new int[s_MaxPlayers]; for (int teamIndex = 0; teamIndex < s_MaxPlayers; ++teamIndex) { teamIds[teamIndex] = GetTeamId(teamIndex); } teamColors = Utils.ComputeTeamColors(teamIds); } // Fill team descriptors. for (int teamIndex = 0; teamIndex < s_MaxPlayers; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription == null) { continue; } // Set team id. int teamId = GetTeamId(teamIndex); teamDescription.SetTeamId(teamId); // Set team color. Color teamColor; if (teamColors != null) { teamColor = teamColors[teamIndex]; } else { teamColor = Color.white; } teamDescription.SetTeamColor(teamColor); LogManager.Log(this, LogContexts.FSM, "Team " + teamIndex + " : " + teamId + " " + "[" + teamColor + "]"); } }
private void CreateCharacters() { // Cache character prefab path. tnMatchSettingsModule matchSettingsModule = GameModulesManager.GetModuleMain <tnMatchSettingsModule>(); if (matchSettingsModule != null) { int gameModeId = matchSettingsModule.gameModeId; m_GameModeId = gameModeId; tnGameModeData gameModeData = tnGameData.GetGameModeDataMain(gameModeId); if (gameModeData != null) { m_CharacterPrefab = gameModeData.LoadAndGetCharacterPrefabPath(); } } // Create teams. tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { List <GameObject> team = new List <GameObject>(); m_Teams.Add(team); } for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { List <tnAIInputFiller> aiList = new List <tnAIInputFiller>(); m_LocalAI.Add(aiList); } for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription == null) { continue; } ProceesTeam(teamIndex, teamDescription); } // Disable Input DisableInput(); }
private void SetupTeamsModule() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } teamsModule.Clear(); tnGameModeData gameModeData = tnGameData.GetGameModeDataMain(gameMode.Value); if (gameModeData == null) { return; } int numTeams = Random.Range(gameModeData.teamsRange.min, gameModeData.teamsRange.max); int minTeamSize = gameModeData.playersPerTeamRange.min; int maxTeamSize = gameModeData.playersPerTeamRange.max; if (forceTeamSize != null && forceTeamSize.Value) { if (forcedMinTeamSize != null && forcedMinTeamSize.Value > 0) { minTeamSize = forcedMinTeamSize.Value; } if (forcedMaxTeamSize != null && forcedMaxTeamSize.Value > 0) { maxTeamSize = forcedMaxTeamSize.Value; } } int[] teamIds = SelectTeams(numTeams); if (teamIds != null) { int teamSize = Random.Range(minTeamSize, maxTeamSize); Color[] teamColors = Utils.ComputeTeamColors(teamIds); for (int teamIndex = 0; teamIndex < teamIds.Length; ++teamIndex) { int teamId = teamIds[teamIndex]; Color teamColor = teamColors[teamIndex]; tnTeamDescription teamDescription = CreateTeam(teamId, teamSize, teamColor); teamsModule.AddTeamDescription(teamDescription); } } }
public override void OnEnter() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule != null) { teamsModule.Clear(); } Finish(); }
// LOGIC public void UpdateModule() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } teamsModule.Clear(); SetupTeamA(teamsModule); SetupTeamB(teamsModule); }
// tnMatchController's interface protected override void OnPreInit() { base.OnPreInit(); tnTeamsModule teamsModule = GameModulesManager.GetModuleMain<tnTeamsModule>(); if (teamsModule == null || teamsModule.teamsCount == 0) return; if (m_AIFactoryComponent != null) { m_AIFactoryComponent.Setup(teamsModule.teamsCount); } }
public override void OnEnter() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { teamsModule = GameModulesManager.AddModuleMain <tnTeamsModule>(); teamsModule.Clear(); } tnTeamDescription team = new tnTeamDescription(); team.SetTeamId(id.Value); team.SetTeamColor(color.Value); int charactersCount = characters.Length; for (int characterIndex = 0; characterIndex < charactersCount; ++characterIndex) { tnCharacterEntry entry = characters[characterIndex]; if (entry != null) { FsmString characterId = entry.characterId; FsmInt onlinePlayerIndex = entry.onlinePlayerIndex; FsmString playerId = entry.playerId; FsmInt spawnOrder = entry.spawnOrder; if (characterId != null && !characterId.IsNone && onlinePlayerIndex != null && !onlinePlayerIndex.IsNone && playerId != null && !playerId.IsNone && spawnOrder != null && !spawnOrder.IsNone) { tnCharacterDescription character = new tnCharacterDescription(); character.SetCharacterId(characterId.Value); character.SetOnlinePlayerIndex(onlinePlayerIndex.Value); character.SetPlayerId(playerId.Value); character.SetSpawnOrder(spawnOrder.Value); team.AddCharacterDescription(character); } } } teamsModule.AddTeamDescription(team); Finish(); }
private void Internal_FillTeamsModule() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule != null) { int minPlayers = GetMinPlayers(); int maxPlayers = GetMaxPlayers(); int total = m_PlayersPerTeam * 2; int clampedTotal = Mathf.Clamp(total, minPlayers, maxPlayers); int characterCount = clampedTotal / 2; Internal_AddTeamA(teamsModule, characterCount); Internal_AddTeamB(teamsModule, characterCount); } }
// INTERNALS private void SelectPlayer(int i_TeamIndex) { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } tnTeamDescription teamDescription = teamsModule.GetTeamDescription(i_TeamIndex); if (teamDescription != null) { int playerId = teamDescription.captainPlayerId; m_Ids[i_TeamIndex] = playerId; // Cache PlayerInput. tnPlayerData playerData = tnGameData.GetPlayerDataMain(playerId); if (playerData != null) { if (!StringUtils.IsNullOrEmpty(playerData.playerInputName)) { m_Players[i_TeamIndex] = InputSystem.GetPlayerByNameMain(playerData.playerInputName); PushControllingMap(i_TeamIndex, i_TeamIndex); } else { if (!StringUtils.IsNullOrEmpty(playerData.wifiPlayerInputName)) { m_WifiPlayers[i_TeamIndex] = WiFiInputSystem.GetPlayerByNameMain(playerData.wifiPlayerInputName); PushControllingMap(i_TeamIndex, i_TeamIndex); } } } } // Update image and label. UpdateImageColor(i_TeamIndex); UpdateLabel(i_TeamIndex); }
private void Internal_AddTeamB(tnTeamsModule i_TeamsModule, int i_CharacterCount) { if (i_TeamsModule == null) { return; } tnTeamDescription teamDescription = new tnTeamDescription(); string teamId = GetTeamB(); teamDescription.SetTeamId(teamId); Color teamColor = GetTeamBColor(); teamDescription.SetTeamColor(teamColor); if (i_CharacterCount >= 0) { tnTeamData teamData = tnGameData.GetTeamDataMain(teamId); if (teamData != null) { int characterCount = Mathf.Min(i_CharacterCount, teamData.charactersCount); for (int index = 0; index < characterCount; ++index) { tnCharacterDescription characterDescription = new tnCharacterDescription(); characterDescription.SetCharacterId(teamData.GetCharacterKey(index)); characterDescription.SetSpawnOrder(index); if (m_AllHumans) { characterDescription.SetPlayerId(GetPlayerIdByIndex(index + characterCount)); } teamDescription.AddCharacterDescription(characterDescription); } } } i_TeamsModule.AddTeamDescription(teamDescription); }
public override void OnEnter() { // Clear input module. ClearInputModule(); // Process teams. tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule != null) { for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); ProcessTeam(teamDescription); } } Finish(); }
// tnMatchController's interface protected override void OnPreInit() { base.OnPreInit(); tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null || teamsModule.teamsCount == 0) { return; } m_AIFactories = new tnStandardMatchAIFactory[teamsModule.teamsCount]; for (int index = 0; index < m_AIFactories.Length; ++index) { m_AIFactories[index] = null; } m_TeamSize = new int[teamsModule.teamsCount]; for (int index = 0; index < m_TeamSize.Length; ++index) { m_TeamSize[index] = 0; } }
private void GetTeamSize(out int o_MinSize, out int o_MaxSize) { int minSize = int.MaxValue; int maxSize = int.MinValue; tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule != null) { for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription != null) { minSize = Mathf.Min(minSize, teamDescription.charactersCount); maxSize = Mathf.Max(maxSize, teamDescription.charactersCount); } } } o_MinSize = minSize; o_MaxSize = maxSize; }
private void SpawnCharacter(int i_TeamIndex, int i_TeamSize, int i_SpawnIndex, int i_PhotonPlayerId, tnCharacterDescription i_CharacterDescription) { if (m_CharacterPrefab == null || i_CharacterDescription == null) { return; } int descriptorCharacterId = i_CharacterDescription.characterId; int descriptorOnlinePlayerIndex = i_CharacterDescription.onlinePlayerIndex; int descriptorPlayerId = i_CharacterDescription.playerId; string[] spawnPointsNames = SpawnPoints.GetSpawnPoints(i_TeamIndex, i_TeamSize); if (spawnPointsNames == null) { return; } if (i_SpawnIndex < 0 || i_SpawnIndex >= spawnPointsNames.Length) { return; } string spawnPointName = spawnPointsNames[i_SpawnIndex]; GameObject spawnPointGo = GameObject.Find(spawnPointName); if (spawnPointGo == null) { return; } TSTransform2D spawnPoint = spawnPointGo.GetComponent <TSTransform2D>(); if (spawnPoint == null) { return; } tnCharacterData characterData = tnGameData.GetCharacterDataMain(descriptorCharacterId); if (characterData == null) { return; } tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } tnTeamDescription teamDescription = teamsModule.GetTeamDescription(i_TeamIndex); if (teamDescription == null) { return; } int teamId = teamDescription.teamId; Color teamColor = teamDescription.teamColor; tnTeamData teamData = tnGameData.GetTeamDataMain(teamId); if (teamData == null) { return; } bool isLocal = (PhotonNetwork.offlineMode) ? true : tnGameModulesUtils.IsLocalPlayer(descriptorOnlinePlayerIndex); bool isHuman = (PhotonNetwork.offlineMode) ? (descriptorPlayerId != Hash.s_NULL) : (descriptorOnlinePlayerIndex >= 0); Vector3 spawnPosition = spawnPoint.position.ToVector(); Quaternion spawnRotation = Quaternion.Euler(0f, 0f, spawnPoint.rotation.AsFloat()); // Spawn character. GameObject characterInstance = Instantiate <GameObject>(m_CharacterPrefab); characterInstance.name = characterData.displayName; characterInstance.transform.position = spawnPosition; characterInstance.transform.rotation = spawnRotation; // Configure TSTransform TSTransform2D tsTransform = characterInstance.GetComponent <TSTransform2D>(); if (tsTransform != null) { tsTransform.position = spawnPoint.position; tsTransform.rotation = spawnPoint.rotation; } // Configure depth2d. tnDepth2d depth2d = characterInstance.GetComponent <tnDepth2d>(); if (depth2d != null) { depth2d.SetOffset(spawnPointGo.transform.position.z); } // Configure character stats database. tnStatsDatabase teamStats = teamData.teamStats; tnStatsContainer statsContainer = characterInstance.GetComponent <tnStatsContainer>(); if (statsContainer != null) { statsContainer.SetStatsDatabase(teamStats); } // Configure character view. tnCharacterViewController characterViewController = characterInstance.GetComponent <tnCharacterViewController>(); if (characterViewController != null) { // Base color. characterViewController.SetBaseColor(teamColor); // Charging force bar. characterViewController.SetChargingForceBarColor(teamColor); // Energy bar. characterViewController.SetEnergyBarColor(teamColor); // Flag. characterViewController.SetFlagSprite(teamData.baseSprite); // Animator characterViewController.SetAnimatorController(characterData.animatorController); // Set facing right. characterViewController.SetFacingRight((spawnPoint.position.x < 0f)); // Player color. characterViewController.TurnOffColor(); characterViewController.SetArrowVisible(false); characterViewController.SetArrowColor(Color.white); if (isLocal) { if (PhotonNetwork.offlineMode) { if (isHuman) { tnPlayerData playerData = tnGameData.GetPlayerDataMain(descriptorPlayerId); if (playerData != null) { Color playerColor = playerData.color; characterViewController.SetPlayerColor(playerColor); characterViewController.SetArrowVisible(true); characterViewController.SetArrowColor(playerColor); } } } else { List <int> onlinePlayersKeys = tnGameData.GetOnlinePlayersKeysMain(); if (onlinePlayersKeys != null) { if (descriptorOnlinePlayerIndex >= 0 && descriptorOnlinePlayerIndex < onlinePlayersKeys.Count) { int onlinePlayerKey = onlinePlayersKeys[descriptorOnlinePlayerIndex]; tnOnlinePlayerData onlinePlayerData = tnGameData.GetOnlinePlayerDataMain(onlinePlayerKey); if (onlinePlayerData != null) { Color playerColor = onlinePlayerData.color; characterViewController.SetPlayerColor(playerColor); characterViewController.SetArrowVisible(true); characterViewController.SetArrowColor(playerColor); } } } } } } // Input: NOTE that current aiFacotry assumes that all AI are handled by the same client. // If you want to support AI in multiplayer you should change the ai factory implementation. // Now multiplayer isn't implemented, so now, if you're using AI, you are playing offline --> All AIs are yours. if (isLocal) { tnInputFiller inputFiller = null; tnRumbleController rumbleController = null; int localPlayerIndex; bool localPlayerIndexFound = tnGameModulesUtils.OnlineToLocalPlayerIndex(descriptorOnlinePlayerIndex, out localPlayerIndex); if (localPlayerIndexFound || PhotonNetwork.offlineMode) { tnLocalPartyModule localPartyModule = GameModulesManager.GetModuleMain <tnLocalPartyModule>(); int playerId = (PhotonNetwork.offlineMode) ? descriptorPlayerId : ((localPartyModule != null) ? localPartyModule.GetPlayerId(localPlayerIndex) : Hash.s_NULL); tnPlayerData playerData = tnGameData.GetPlayerDataMain(playerId); if (playerData != null) { string playerInputName = playerData.playerInputName; string wifiPlayerInputName = playerData.wifiPlayerInputName; PlayerInput playerInput = InputSystem.GetPlayerByNameMain(playerInputName); WiFiPlayerInput wifiPlayerInput = WiFiInputSystem.GetPlayerByNameMain(wifiPlayerInputName); if (playerInput != null) { inputFiller = new tnPlayerInputFiller(playerInput); rumbleController = new tnRumbleController(playerInput); m_LocalPlayersInput.Add(playerInput); } else { if (wifiPlayerInput != null) { inputFiller = new tnWiFiPlayerInputFiller(wifiPlayerInput); m_LocalWifiPlayersInput.Add(wifiPlayerInput); } } } else { tnAIInputFiller aiInputFiller = CreateAIInputFiller(i_TeamIndex, i_SpawnIndex, characterInstance); inputFiller = aiInputFiller; List <tnAIInputFiller> aiList = m_LocalAI[i_TeamIndex]; aiList.Add(aiInputFiller); } } // Bind input filler to character instance. if (inputFiller != null) { tnInputController inputController = new tnInputController(inputFiller); inputController.SetRumbleController(rumbleController); AddInputController(inputController); tnCharacterInput characterInput = characterInstance.GetComponent <tnCharacterInput>(); if (characterInput != null) { characterInput.Bind(inputController); } } // Add rumble component. if (isHuman) { tnRumbleParams rumbleParams = Resources.Load <tnRumbleParams>(s_RumbleParams_ResourcePath); if (rumbleParams != null) { tnRumble rumbleComponent = characterInstance.GetComponent <tnRumble>(); if (rumbleComponent == null) { rumbleComponent = characterInstance.AddComponent <tnRumble>(); } rumbleComponent.SetParams(rumbleParams); } } // Input Delay. int delay = (TrueSyncManager.isOfflineMain) ? m_OfflinePlayerInputDelay : 0; if (!isHuman) { tnMatchSettingsModule matchSettingsModule = GameModulesManager.GetModuleMain <tnMatchSettingsModule>(); int aiLevelIndex = (matchSettingsModule != null) ? matchSettingsModule.aiLevelIndex : (tnGameData.aiLevelCountMain / 2); tnAILevel aiLevel = tnGameData.GetAILevelMain(aiLevelIndex); if (aiLevel != null) { delay = aiLevel.inputDelay; } } // Register on player input collector. RegisterObjectOnInputCollector(characterInstance, delay); } // Configure character info. tnCharacterInfo characterInfo = characterInstance.GetComponent <tnCharacterInfo>(); if (characterInfo == null) { characterInfo = characterInstance.AddComponent <tnCharacterInfo>(); } int characterIndex = m_Characters.Count; characterInfo.SetCharacterIndex(characterIndex); characterInfo.SetCharacterId(descriptorCharacterId); characterInfo.SetTeamIndex(i_TeamIndex); characterInfo.SetTeamId(teamId); characterInfo.SetTeamColor(teamColor); // Callback. OnCharacterSpawned(i_TeamIndex, characterIndex, characterInstance); // Add characters to lists. m_Characters.Add(characterInstance); if (isLocal) { m_LocalCharacters.Add(characterInstance); } List <GameObject> team = m_Teams[i_TeamIndex]; team.Add(characterInstance); // Create character result. tnCharacterResults characterResults = CreateCharacterResults(descriptorCharacterId); characterResults.isHuman = isHuman; tnTeamResults teamResults = GetTeamResultsByIndex(i_TeamIndex); if (teamResults != null) { teamResults.AddCharacterResults(characterResults); } m_CharactersResults.Add(characterResults); // Track character result. StateTracker.AddTracking(characterResults); // Configure TrueSyncObject. TrueSyncObject trueSyncObject = characterInstance.GetComponent <TrueSyncObject>(); if (trueSyncObject != null) { trueSyncObject.SetOwnerId(i_PhotonPlayerId); TrueSyncManager.RegisterTrueSyncObjectMain(trueSyncObject); } }
private void CreateSupporters() { if (!m_CreateSupporters) { return; } tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } System.Random random = new System.Random(m_Seed); string[] animatedResourceNames = new string[] { "Characters/Common/p_Supporter01_Animated", "Characters/Common/p_Supporter02_Animated", "Characters/Common/p_Supporter03_Animated", }; string[] staticResourceNames = new string[] { "Characters/Common/p_Supporter01", "Characters/Common/p_Supporter02", "Characters/Common/p_Supporter03", }; // Load animated resources. List <GameObject> animatedResources = new List <GameObject>(); for (int resourceIndex = 0; resourceIndex < animatedResourceNames.Length; ++resourceIndex) { GameObject resourcePrefab = (GameObject)Resources.Load <GameObject>(animatedResourceNames[resourceIndex]); if (resourcePrefab == null) { continue; } animatedResources.Add(resourcePrefab); } // Load static resources. List <GameObject> staticResources = new List <GameObject>(); for (int resourceIndex = 0; resourceIndex < staticResourceNames.Length; ++resourceIndex) { GameObject resourcePrefab = (GameObject)Resources.Load <GameObject>(staticResourceNames[resourceIndex]); if (resourcePrefab == null) { continue; } staticResources.Add(resourcePrefab); } // Iterate each supporter area. tnSupporterArea[] supportersAreas = FindObjectsOfType <tnSupporterArea>(); for (int supporterAreaIndex = 0; supporterAreaIndex < supportersAreas.Length; ++supporterAreaIndex) { tnSupporterArea supporterArea = supportersAreas[supporterAreaIndex]; if (supporterArea == null) { continue; } // Compute team colors for this area. List <Color> teamColors = new List <Color>(); Vector3 boundsMin = supporterArea.boundsMin; Vector3 boundsMax = supporterArea.boundsMax; if (boundsMin.x < 0f || boundsMax.x < 0f) { // Assign to Team 0. tnTeamDescription teamDescription = teamsModule.GetTeamDescription(0); if (teamDescription != null) { Color[] colorsToAdd = GetTeamColors(teamDescription.teamId); teamColors.AddRange(colorsToAdd); } } if (boundsMin.x > 0f || boundsMax.x > 0f) { // Assign to Team 1. tnTeamDescription teamDescription = teamsModule.GetTeamDescription(1); if (teamDescription != null) { Color[] colorsToAdd = GetTeamColors(teamDescription.teamId); teamColors.AddRange(colorsToAdd); } } Color[] spawnColors = teamColors.ToArray(); if (spawnColors.Length == 0) { continue; } // Spawn supporters. for (int supporterIndex = 0; supporterIndex < supporterArea.numPoints; ++supporterIndex) { GameObject supporterPrefab = null; if (supporterIndex < supporterArea.maxAnimators) { // Select an animated resource. int resourceIndex = random.Next(0, animatedResources.Count); supporterPrefab = animatedResources[resourceIndex]; } else { // Select a static resource. int resourceIndex = random.Next(0, staticResources.Count); supporterPrefab = staticResources[resourceIndex]; } if (supporterPrefab == null) { continue; } Vector2 spawnPoint = supporterArea.GetPoint(supporterIndex); Vector3 spawnPosition = new Vector3(spawnPoint.x, spawnPoint.y, 0f); GameObject supporterInstance = (GameObject)Instantiate(supporterPrefab, spawnPosition, Quaternion.identity); if (supporterInstance.transform.position.x > 0f) { Vector3 flipScale = supporterInstance.transform.localScale; flipScale.x *= -1f; supporterInstance.transform.localScale = flipScale; } supporterInstance.transform.SetParent(supporterArea.transform, true); tnSupporter supporterComponent = supporterInstance.GetComponent <tnSupporter>(); if (supporterComponent != null) { int randomIndex = random.Next(0, teamColors.Count); Color randomColor = teamColors[randomIndex]; supporterComponent.SetColor(randomColor); } tnDepth2d depth2d = supporterInstance.GetComponent <tnDepth2d>(); if (depth2d != null) { float scale = 0.5f; depth2d.SetScale(scale); float depthLevel = supporterArea.transform.position.z; depth2d.SetOffset(depthLevel); } } } }
private void SetupInputModule() { InputModule inputModule = UIEventSystem.inputModuleMain; if (inputModule == null) { return; } inputModule.Clear(); tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule != null) { for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription == null) { continue; } for (int characterIndex = 0; characterIndex < teamDescription.charactersCount; ++characterIndex) { tnCharacterDescription characterDescription = teamDescription.GetCharacterDescription(characterIndex); if (characterDescription == null) { continue; } int playerId = characterDescription.playerId; if (Hash.IsNullOrEmpty(playerId)) { continue; } tnPlayerData playerData = tnGameData.GetPlayerDataMain(playerId); if (playerData == null) { continue; } string playerInputName = playerData.playerInputName; string wifiPlayerInputName = playerData.wifiPlayerInputName; PlayerInput playerInput = InputSystem.GetPlayerByNameMain(playerInputName); WiFiPlayerInput wifiPlyerInput = WiFiInputSystem.GetPlayerByNameMain(wifiPlayerInputName); if (playerInput != null) { inputModule.AddPlayer(playerInput); } else { if (wifiPlyerInput != null) { inputModule.AddWifiPlayer(wifiPlyerInput); } } } } } }
public void Setup() { tnTeamsModule teamsModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamsModule == null) { return; } for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription == null) { continue; } Color teamColor = teamDescription.teamColor; if (viewInstance != null) { viewInstance.SetTeamColor(teamIndex, teamColor); } int captainPlayerIndex = teamDescription.captainOnlinePlayerIndex; for (int characterIndex = 0; characterIndex < teamDescription.charactersCount; ++characterIndex) { tnCharacterDescription characterDescription = teamDescription.GetCharacterDescription(characterIndex); if (characterDescription == null) { continue; } List <int> onlinePlayersKeys = tnGameData.GetOnlinePlayersKeysMain(); if (onlinePlayersKeys == null) { continue; } int onlinePlayerIndex = characterDescription.onlinePlayerIndex; if (onlinePlayerIndex < 0 || onlinePlayerIndex >= onlinePlayersKeys.Count) { continue; } int onlinePlayerKey = onlinePlayersKeys[onlinePlayerIndex]; if (Hash.IsNullOrEmpty(onlinePlayerKey)) { continue; } tnOnlinePlayerData onlinePlayerData = tnGameData.GetOnlinePlayerDataMain(onlinePlayerKey); if (onlinePlayerData == null) { continue; } Color playerColor = onlinePlayerData.color; if (viewInstance != null) { viewInstance.SetPlayerIsHuman(teamIndex, characterIndex, true); // For now AI isnt' present online. viewInstance.SetPlayerColor(teamIndex, characterIndex, playerColor); if (onlinePlayerIndex == captainPlayerIndex) { viewInstance.SetCaptainColor(teamIndex, playerColor); } } } } for (int teamIndex = 0; teamIndex < teamsModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamsModule.GetTeamDescription(teamIndex); if (teamDescription == null) { continue; } if (viewInstance != null) { viewInstance.SetupTeam(teamIndex, teamDescription); } } }
private void SetupTeamB(tnTeamsModule i_Module) { if (m_TeamB == null) { return; } tnTeamDescription teamDescription = new tnTeamDescription(); // Add real players. for (int index = 0; index < m_TeamB.entriesCount; ++index) { GridEntry gridEntry = m_TeamB.GetEntryByIndex(index); if (gridEntry == null) { continue; } bool present = (gridEntry.device != null); if (present) { int playerId = gridEntry.device.playerId; tnCharacterDescription characterDescription = new tnCharacterDescription(); characterDescription.SetPlayerId(playerId); teamDescription.AddCharacterDescription(characterDescription); LogManager.Log(this, LogContexts.FSM, "Added character to Team A [Real player]"); } } // Add bots. for (int index = 0; index < m_TeamB.entriesCount; ++index) { GridEntry gridEntry = m_TeamB.GetEntryByIndex(index); if (gridEntry == null) { continue; } bool present = (gridEntry.isBot); if (present) { tnCharacterDescription characterDescription = new tnCharacterDescription(); characterDescription.SetPlayerId(Hash.s_NULL); teamDescription.AddCharacterDescription(characterDescription); LogManager.Log(this, LogContexts.FSM, "Added character to Team A [BOT]"); } } // Add team description. i_Module.AddTeamDescription(teamDescription); }
private void SetupStadiumSelector(int i_GameModeId) { if (m_StadiumSelector == null) { return; } tnTeamsModule teamModule = GameModulesManager.GetModuleMain <tnTeamsModule>(); if (teamModule == null) { return; } int maxTeamSize = 0; for (int teamIndex = 0; teamIndex < teamModule.teamsCount; ++teamIndex) { tnTeamDescription teamDescription = teamModule.GetTeamDescription(teamIndex); if (teamDescription != null) { maxTeamSize = Mathf.Max(teamDescription.charactersCount, maxTeamSize); } } SelectorData selectorData = new SelectorData(); List <int> stadiumKeys = tnGameData.GetStadiumsKeysMain(); if (stadiumKeys != null) { tnGameModeData gameModeData = tnGameData.GetGameModeDataMain(i_GameModeId); for (int stadiumIndex = 0; stadiumIndex < stadiumKeys.Count; ++stadiumIndex) { int stadiumId = stadiumKeys[stadiumIndex]; tnStadiumData stadiumData = tnGameData.GetStadiumDataMain(stadiumId); if (stadiumData == null) { continue; } bool excludedByTag = false; if (gameModeData != null) { for (int excluderTagIndex = 0; excluderTagIndex < gameModeData.fieldsExcludersTagsCount; ++excluderTagIndex) { int excluderTag = gameModeData.GetFieldExcluderTag(excluderTagIndex); if (excluderTag != Hash.s_EMPTY && excluderTag != Hash.s_NULL) { if (stadiumData.HasTag(excluderTag)) { excludedByTag = true; } } } } IntRange teamSizeRange = stadiumData.teamSize; bool locked = excludedByTag || !(teamSizeRange.IsValueValid(maxTeamSize)); string lockedString = ""; if (locked) { if (excludedByTag) { lockedString = "Not available in this game mode."; } else { lockedString = "From " + teamSizeRange.min + " to " + teamSizeRange.max + " players"; } } SelectorItem selectorItem = new SelectorItem(stadiumId, stadiumData.name, stadiumData.description, stadiumData.icon, locked, lockedString); selectorData.AddItem(selectorItem); } } m_StadiumSelector.SetData(selectorData); }