// MonoBehaviour's interface void Awake() { // Cache components. { m_CharacterController = GetComponent <tnCharacterController>(); m_CharacterInput = GetComponent <tnCharacterInput>(); m_StatsContainer = GetComponent <tnStatsContainer>(); m_Energy = GetComponent <tnEnergy>(); m_Respawn = GetComponent <tnRespawn>(); } // Force values refresh. { ComputeRadius(FP.Zero); ComputeEnergyCost(FP.Zero); ComputeCooldown(FP.Zero); ComputeKickForce(FP.Zero); ComputeTackleForce(FP.Zero); } // Compute charging layer. m_ChargingLayer = LayerMask.NameToLayer("Charging"); // Set sort order. sortOrder = BehaviourSortOrder.s_SortOrder_Kick; }
// MonoBehaviour's interface void Awake() { m_CharacterInput = GetComponent <tnCharacterInput>(); // Set sort order. sortOrder = BehaviourSortOrder.s_SortOrder_Taunt; }
// MonoBehaviour's INTERFACE void Awake() { m_CharacterInput = GetComponent <tnCharacterInput>(); m_Respawn = GetComponent <tnRespawn>(); m_Kick = GetComponent <tnKick>(); m_Kickable = GetComponent <tnKickable>(); }
private void ForcedAddTocuh(GameObject i_Source, FP i_Timestamp) { if (i_Source == null) { return; } tnCharacterInfo characterInfo = i_Source.GetComponent <tnCharacterInfo>(); if (characterInfo == null) { return; } if (m_Touches.Count > 0) { tnTouch lastTouch = m_Touches[0]; if (lastTouch.characterId == characterInfo.characterId) { return; } } // If queue is full, remove the oldest touch. while (m_Touches.Count >= s_MaxTouches) { m_Touches.RemoveBack(); } // Add new ball touch. tnTouch touch = new tnTouch(); touch.SetCharacterId(characterInfo.characterId); touch.SetTeamId(characterInfo.teamId); tnCharacterInput characterInput = i_Source.GetComponent <tnCharacterInput>(); if (characterInput != null) { touch.SetIsHuman(characterInput.isHumanPlayer); touch.SetIsLocal(characterInput.isLocalPlayer); } else { touch.SetIsHuman(false); touch.SetIsLocal(false); } touch.SetTimestamp(i_Timestamp); m_Touches.AddFront(touch); }
// MonoBehaviour's INTERFACE void Awake() { // Cache components. { m_Rigidbody2D = GetComponentInChildren <TSRigidBody2D>(); m_CharacterInput = GetComponentInChildren <tnCharacterInput>(); m_Respawn = GetComponentInChildren <tnRespawn>(); m_Animator = GetComponentInChildren <Animator>(); } // Set sort order. sortOrder = BehaviourSortOrder.s_SortOrder_SubbuteoController; }
// MonoBehaviour's INTERFACE void Awake() { // Cache components. { m_Rigidbody2D = GetComponent <TSRigidBody2D>(); m_Collider2D = GetComponent <TSCollider2D>(); m_CharacterInput = GetComponent <tnCharacterInput>(); m_StatsContainer = GetComponent <tnStatsContainer>(); m_Energy = GetComponent <tnEnergy>(); m_Respawn = GetComponent <tnRespawn>(); } // Init data. { m_OriginalLayer = gameObject.layer; m_DashLayer = LayerMask.NameToLayer("Charging"); } // Force values refresh. { ComputeAppliedForce(FP.Zero); ComputeMass(FP.Zero); ComputeDrag(FP.Zero); ComputeMaxSpeed(FP.Zero); ComputeDashMass(FP.Zero); ComputeDashDrag(FP.Zero); ComputeDashAppliedForce(FP.Zero); ComputeDashCooldown(FP.Zero); ComputeDashDuration(FP.Zero); ComputeDashEnergyCost(FP.Zero); } // Set sort order. sortOrder = BehaviourSortOrder.s_SortOrder_CharacterController; }
// MonoBehaviour's interface void Awake() { // Cache components. { m_CharacterInput = GetComponent <tnCharacterInput>(); m_StatsContainer = GetComponent <tnStatsContainer>(); m_Energy = GetComponent <tnEnergy>(); m_Respawn = GetComponent <tnRespawn>(); } // Force values refresh. { ComputeEnergyCostRate(FP.Zero); ComputeForceMagnitude(FP.Zero); ComputeRadius(FP.Zero); } // Set sort order. sortOrder = BehaviourSortOrder.s_SortOrder_Attract; }
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 SpawnReferee() { tnMatchSettingsModule matchSettingsModule = GameModulesManager.GetModuleMain <tnMatchSettingsModule>(); if (matchSettingsModule == null) { return; } int refereeOptionId = matchSettingsModule.refereeOption; m_HasReferee = false; string refereeOption; if (tnGameData.TryGetRefereeValueMain(refereeOptionId, out refereeOption)) { m_HasReferee = (refereeOption == "ON"); if (m_HasReferee) { GameObject refereeSpawnPointGo = GameObject.Find(s_RefereeSpawnPoint); if (refereeSpawnPointGo == null) { return; } TSTransform2D refereeSpawnPointTransform = refereeSpawnPointGo.GetComponent <TSTransform2D>(); if (refereeSpawnPointTransform == null) { return; } GameObject refereePrefab = Resources.Load <GameObject>(s_ResourcePath_Referee); if (refereePrefab != null) { Vector3 spawnPosition = refereeSpawnPointTransform.position.ToVector(); Quaternion spawnRotation = Quaternion.Euler(0f, 0f, refereeSpawnPointTransform.rotation.AsFloat()); GameObject refereeInstance = Instantiate <GameObject>(refereePrefab); refereeInstance.gameObject.name = "Referee"; refereeInstance.transform.position = spawnPosition; refereeInstance.transform.rotation = spawnRotation; // Configure TSTransform TSTransform2D tsTransform = refereeInstance.GetComponent <TSTransform2D>(); if (tsTransform != null) { tsTransform.position = refereeSpawnPointTransform.position; tsTransform.rotation = refereeSpawnPointTransform.rotation; } // Configure input filler and tnCharacterInput. if (PhotonNetwork.isMasterClient) { tnRefereeInputFiller inputFiller = new tnRefereeInputFiller(refereeInstance); inputFiller.SetBall(m_Ball); tnInputController inputController = new tnInputController(inputFiller); AddInputController(inputController); tnCharacterInput characterInput = refereeInstance.GetComponent <tnCharacterInput>(); if (characterInput != null) { characterInput.Bind(inputController); } RegisterObjectOnInputCollector(refereeInstance, 0); } // Configure depth2d. tnDepth2d depth2d = refereeInstance.GetComponent <tnDepth2d>(); if (depth2d != null) { depth2d.SetOffset(refereeSpawnPointGo.transform.position.z); } // Setup true sync object. TrueSyncObject trueSyncObject = refereeInstance.GetComponent <TrueSyncObject>(); if (trueSyncObject != null) { int ownerId = 0; if (!PhotonNetwork.offlineMode && (PhotonNetwork.masterClient != null)) { ownerId = PhotonNetwork.masterClient.ID; } trueSyncObject.SetOwnerId(ownerId); TrueSyncManager.RegisterTrueSyncObjectMain(trueSyncObject); } m_RefereeInstance = refereeInstance; } } } }