public SwitchPlaceRequestStrategy(ILogger logger, ICharacterActionManager charActionManager, ICharacterInfo charInfo, IGeoDataInfo geoDataInfo, PlayerHandler playerHandler)
 {
     _logger            = logger ?? throw new Exception("SwitchPlaceRequestStrategy - logger cannot be NULL!");
     _charActionManager = charActionManager ?? throw new Exception("SwitchPlaceRequestStrategy - char. action manager cannot be NULL!");
     _charInfo          = charInfo ?? throw new Exception("SwitchPlaceRequestStrategy - char. info cannot be NULL!");
     _playerHandler     = playerHandler ?? throw new Exception("SwitchPlaceRequestStrategy - player handler cannot be NULL!");
     _geoDataInfo       = geoDataInfo ?? throw new Exception("SwitchPlaceRequestStrategy - geo data info cannot be NULL!");
 }
        public GameStateHandler(ILogger logger, IGeoDataInfo geoDataInfo, ICharacterInfo characterInfo, PlayerHandler playerHandler)
        {
            _logger        = logger ?? throw new Exception("Game state handler - logger cannot be NULL!");
            _geoDataInfo   = geoDataInfo ?? throw new Exception("Game state handler - geo data info cannot be NULL!");
            _characterInfo = characterInfo ?? throw new Exception("Game state handler - character info cannot be NULL!");
            _playerHandler = playerHandler ?? throw new Exception("Game state handler - player handler cannot be NULL!");

            StartHandling();
        }
        public void Dispose()
        {
            _movementHandlingInProgress = false;

            _geoDataInfo   = null;
            _characterInfo = null;

            lock (_movementDetailsLock)
            {
                foreach (CharacterMovementDetails movementDetails in _movementDetailsList)
                {
                    movementDetails.Dispose();
                }

                _movementDetailsList.Clear();
            }
        }