public IEnumerable <long> GetAssets(int playerIndex) { IMatchPlayerControllerCli playerController = m_playerControllers[playerIndex]; return(playerController.Assets.OfType <IMatchUnitAssetView>().Select(uav => uav.Id)); }
public long GetAssetIndex(VoxelData data) { IMatchPlayerControllerCli playerController = m_playerControllers[data.Owner]; return(playerController.GetAssetIndex(data)); }
private void OnEngineCommands(Error error, long clientTick, CommandsBundle commandBundle) { if (m_engine.HasError(error)) { if (error.Code != StatusCode.Outdated) { m_notification.ShowError(error); return; } } long serverTick = commandBundle.Tick; CommandsArray[] playersCommands = commandBundle.Commands; //List<TaskStateInfo> taskStateInfo = commandBundle.TasksStateInfo; bool isGameCompleted = commandBundle.IsGameCompleted; m_minimap.BeginUpdate(); List <IMatchPlayerControllerCli> defeatedPlayers = null; for (int p = 0; p < playersCommands.Length; ++p) { CommandsArray commands = playersCommands[p]; if (commands.Commands == null) { continue; } if (error.Code == StatusCode.Outdated) { Debug.LogWarning("Executing outdated command a little bit faster " + serverTick); } IMatchPlayerControllerCli playerController = m_playerControllers[p]; long lagTicks = clientTick - serverTick; Debug.Assert(lagTicks >= 0); playerController.Execute(commands.Commands, clientTick, lagTicks); PlayerStats stats = m_playerStats[p]; if (stats.IsInRoom && !playerController.IsInRoom) { stats.IsInRoom = false; //Raise player deactivated event; Debug.Log("Player " + m_players[p].Name + " has left the game"); if (defeatedPlayers == null) { defeatedPlayers = new List <IMatchPlayerControllerCli>(); } defeatedPlayers.Add(playerController); } else if (playerController.ControllableUnitsCount == 0) { if (defeatedPlayers == null) { defeatedPlayers = new List <IMatchPlayerControllerCli>(); } defeatedPlayers.Add(playerController); } stats.ControllableUnitsCount = playerController.ControllableUnitsCount; } if (defeatedPlayers != null) { for (int i = 0; i < defeatedPlayers.Count; ++i) { IMatchPlayerControllerCli defeatedPlayer = defeatedPlayers[i]; //#warning Temporary disabled due to strange bugs defeatedPlayer.DestroyAllUnitsAndAssets(); if (PlayerDefeated != null) { PlayerDefeated(defeatedPlayer.Index); } } } if (!m_gSettings.DisableFogOfWar) { m_minimap.EndUpdate(); } IsCompleted = isGameCompleted; }
public MatchAssetCli GetAsset(int playerIndex, long unitIndex) { IMatchPlayerControllerCli playerController = m_playerControllers[playerIndex]; return(playerController.GetAsset(unitIndex)); }
public static void DestroyPlayerController(IMatchPlayerControllerCli controller) { MatchPlayerControllerCli component = (MatchPlayerControllerCli)controller; Object.Destroy(component.gameObject); }