public void OnEvent(byte code, Dictionary <byte, object> parameters)
        {
            if (code == 2)
            {
                return;
            }
            if (!parameters.TryGetValue(252, out var value))
            {
                return;
            }

            var eventCode = (EventCodes)value;

            switch (eventCode)
            {
            case EventCodes.Leave:
                _handler.OnLeave(_deserializer.FromDictionary <Leave>(_registry, parameters));
                break;

            case EventCodes.HealthUpdate:
                _handler.OnHealthUpdate(_deserializer.FromDictionary <HealthUpdate>(_registry, parameters));
                break;

            case EventCodes.NewCharacter:
                _handler.OnNewCharacter(_deserializer.FromDictionary <NewCharacter>(_registry, parameters));
                break;

            case EventCodes.TakeSilver:
                _handler.OnTakeSilver(_deserializer.FromDictionary <TakeSilver>(_registry, parameters));
                break;

            case EventCodes.UpdateFame:
                _handler.OnUpdateFame(_deserializer.FromDictionary <UpdateFame>(_registry, parameters));
                break;

            case EventCodes.NewMob:
                _handler.OnNewMob(_deserializer.FromDictionary <NewMob>(_registry, parameters));
                break;

            case EventCodes.PartySilverGained:
                _handler.OnPartySilverGained(_deserializer.FromDictionary <PartySilverGained>(_registry, parameters));
                break;

            case EventCodes.InCombatStateUpdate:
                _handler.OnInCombatStateUpdate(_deserializer.FromDictionary <InCombatStateUpdate>(_registry, parameters));
                break;
            }
        }