Protocol/PacketDispatcher.cs

A simple dispatcher that raises events when specific APPacket subclasses are passed to Dispatch. It matches RoomInfoPacket, ConnectedPacket, ConnectionRefusedPacket, and ReceivedItemsPacket and invokes corresponding event handlers.

using System;
using APLib.Protocol.Packets;

namespace APLib.Protocol;

public sealed class PacketDispatcher
{
	public event Action<RoomInfoPacket> RoomInfoReceived;
	
	public event Action<ConnectedPacket> ConnectedReceived;
	
	public event Action<ConnectionRefusedPacket> ConnectionRefused;
	
	public event Action<ReceivedItemsPacket> ReceivedItems;
	
	public void Dispatch( APPacket packet )
	{
		switch ( packet )
		{
			case RoomInfoPacket room:
				RoomInfoReceived?.Invoke( room );
				
				break;
			case ConnectedPacket connected:
				ConnectedReceived?.Invoke( connected );
				
				break;
			case ConnectionRefusedPacket refused:
				ConnectionRefused?.Invoke( refused );
				
				break;
			case ReceivedItemsPacket receivedItems:
				ReceivedItems?.Invoke( receivedItems );
				
				break;
		}
	}
}