/// <summary> /// Нажата ли хотя бы одна из кнопок, отвечающая за подтверждение или осуществление игрового действия игроком /// </summary> /// <param name="parPlayerRef">Ссылка на объект информации об игроке</param> /// <returns></returns> public bool IsActionButtonPressed(MPlayer parPlayerRef) { return(IsButtonPressed(parPlayerRef, EGameActionButton.Button_A) || IsButtonPressed(parPlayerRef, EGameActionButton.Button_B) || IsButtonPressed(parPlayerRef, EGameActionButton.Button_X) || IsButtonPressed(parPlayerRef, EGameActionButton.Button_Y)); }
/// <summary> /// Является ли игрок активным в текущий момент /// </summary> /// <param name="parPlayerId">Идентификатор игрока</param> /// <returns>True, если игрок активен</returns> public bool IsPlayerActive(string parPlayerId) { MPlayer foundPlayer = _players.FirstOrDefault(parX => parX.PlayerId == parPlayerId); if (foundPlayer != null) { return(foundPlayer.IsActive); } return(false); }
/// <summary> /// Удалить игрока из игры /// </summary> /// <param name="parPlayerId">Данные об удаляемом игроке</param> public void RemovePlayer(string parPlayerId) { MPlayer foundPlayer = _players.FirstOrDefault(parX => parX.PlayerId == parPlayerId); if (foundPlayer == null) { return; } _players.Remove(foundPlayer); OnPlayerRemoved?.Invoke(foundPlayer); }
/// <summary> /// Получить состояние игровой кнопки для определенного игрока /// </summary> /// <param name="parPlayerId">Идентификатор игрока</param> /// <param name="parActionId">Тип игровой кнопки</param> /// <returns></returns> public MGameActionButton GetGameActionButton(string parPlayerId, EGameActionButton parActionId) { MPlayer foundPlayer = _players.FirstOrDefault(parX => parX.PlayerId == parPlayerId); if (foundPlayer != null) { if (foundPlayer.IsActive) { return(foundPlayer.GetGameActionButton(parActionId)); } } return(new MGameActionButton()); }
/// <summary> /// Получить состояние игровой оси для определенного игрока /// </summary> /// <param name="parPlayerId">Идентификатор игрока</param> /// <param name="parActionId">Тип игровой оси</param> /// <returns></returns> public MGameActionAxis GetGameActionAxis(string parPlayerId, EGameActionAxis parActionId) { MPlayer foundPlayer = _players.FirstOrDefault(parX => parX.PlayerId == parPlayerId); if (foundPlayer != null) { if (foundPlayer.IsActive) { return(foundPlayer.GetGameActionAxis(parActionId)); } } return(new MGameActionAxis(AppInfoConsts.AxisDefaultValue)); }
/// <summary> /// Добавить игрока /// </summary> /// <param name="parNewPlayer">Данные о новом игроке</param> public void AddPlayer(MPlayer parNewPlayer) { _players.Add(parNewPlayer); OnPlayerAdded?.Invoke(parNewPlayer); }
/// <summary> /// Удерживает ли игрок определенную игровую кнопку? /// </summary> /// <param name="parPlayerRef">Ссылка на объект информации об игроке</param> /// <param name="parButtonId">Тип игровой кнопки</param> /// <returns>True, если удерживает</returns> public bool IsButtonHolding(MPlayer parPlayerRef, EGameActionButton parButtonId) { return(parPlayerRef.GetGameActionButton(parButtonId).IsHolding); }
/// <summary> /// Отпущена ли сейчас игровая кнопка игроком? Отпускание кнопки является событие перехода кнопки /// из состояния "зажата" в состояние "не нажата" /// </summary> /// <param name="parPlayerRef">Ссылка на объект информации об игроке</param> /// <param name="parButtonId">Тип игровой кнопки</param> /// <returns></returns> public bool IsButtonReleased(MPlayer parPlayerRef, EGameActionButton parButtonId) { return(parPlayerRef.GetGameActionButton(parButtonId).IsReleasedFrame); }