Example #1
0
 private void LeaveAllForIndex(int index)
 {
     foreach (PadUsedType type in Enum.GetValues(typeof(PadUsedType)))
     {
         var name = PlayerInputUtils.NameByIndexAndPadUsedType(index, type);
         if (_playersByPadIndex.ContainsKey(name))
         {
             Leave(_playersByPadIndex[name], index);
         }
     }
 }
Example #2
0
    private void CreatePlayer(int padIndex, PadUsedType type)
    {
        _activeIndex.Add(padIndex);

        var playerInput = new PlayerInput(padIndex, type);

        _playersByPadIndex.Add(PlayerInputUtils.NameByIndexAndPadUsedType(padIndex, type), playerInput);
        OnNewPlayer.SafeInvoke(playerInput);

        if (_mainPlayerInput == null)
        {
            _mainPlayerInput = playerInput;
        }
    }
Example #3
0
    private void Leave(PlayerInput playerInput, int index)
    {
        _playersByPadIndex.Remove(playerInput.Name);
        if (playerInput.PadUsedType != PadUsedType.SINGLE)
        {
            var otherName = PlayerInputUtils.NameByIndexAndPadUsedType(index, PadUsedTypeUtils.GetOtherSide(playerInput.PadUsedType));
            var other     = _playersByPadIndex[otherName];
            ChangePadUsedTypeForPlayerInput(other, PadUsedType.SINGLE);
        }
        else
        {
            _activeIndex.Remove(index);
        }


        _padIndexInProcedure.Remove(index);

        if (_notification.ContainsKey(index))
        {
            Destroy(_notification[index]);
            _notification.Remove(index);
        }

        if (_mainPlayerInput == playerInput)
        {
            if (_activeIndex.Count > 0)
            {
                _mainPlayerInput = _playersByPadIndex.Values.First();
            }
            else
            {
                _mainPlayerInput = null;
            }
        }

        OnPlayerLeave.SafeInvoke(playerInput);
    }