<?xml version="1.0" encoding="UTF-8" ?>
<class name="NetworkedMultiplayerCustom" inherits="NetworkedMultiplayerPeer" version="4.2">
	<brief_description>
		A [NetworkedMultiplayerPeer] implementation that can be controlled from a script.
	</brief_description>
	<description>
		A [NetworkedMultiplayerPeer] implementation that can be used as a [member MultiplayerAPI.network_peer] and controlled from a script.
		Its purpose is to allow adding a new backend for the high-Level multiplayer API without needing to use GDNative.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="deliver_packet">
			<return type="void" />
			<argument index="0" name="buffer" type="PoolByteArray" />
			<argument index="1" name="from_peer_id" type="int" />
			<description>
				Deliver a packet to the local [MultiplayerAPI].
				When your script receives a packet from other peers over the network (originating from the [signal packet_generated] signal on the sending peer), passing it to this method will deliver it locally.
			</description>
		</method>
		<method name="initialize">
			<return type="void" />
			<argument index="0" name="self_peer_id" type="int" />
			<description>
				Initialize the peer with the given [code]self_peer_id[/code] (must be between 1 and 2147483647).
				Can only be called if the connection status is [constant NetworkedMultiplayerPeer.CONNECTION_CONNECTING]. See [method set_connection_status].
			</description>
		</method>
		<method name="set_connection_status">
			<return type="void" />
			<argument index="0" name="connection_status" type="int" enum="NetworkedMultiplayerPeer.ConnectionStatus" />
			<description>
				Set the state of the connection. See [enum NetworkedMultiplayerPeer.ConnectionStatus].
				This will emit the [signal NetworkedMultiplayerPeer.connection_succeeded], [signal NetworkedMultiplayerPeer.connection_failed] or [signal NetworkedMultiplayerPeer.server_disconnected] signals depending on the status and if the peer has the unique network id of [code]1[/code].
				You can only change to [constant NetworkedMultiplayerPeer.CONNECTION_CONNECTING] from [constant NetworkedMultiplayerPeer.CONNECTION_DISCONNECTED] and to [constant NetworkedMultiplayerPeer.CONNECTION_CONNECTED] from [constant NetworkedMultiplayerPeer.CONNECTION_CONNECTING].
			</description>
		</method>
		<method name="set_max_packet_size">
			<return type="void" />
			<argument index="0" name="max_packet_size" type="int" />
			<description>
				Set the max packet size that this peer can handle.
			</description>
		</method>
	</methods>
	<signals>
		<signal name="packet_generated">
			<argument index="0" name="peer_id" type="int" />
			<argument index="1" name="buffer" type="PoolByteArray" />
			<argument index="2" name="transfer_mode" type="int" />
			<description>
				Emitted when the local [MultiplayerAPI] generates a packet (e.g. when calling [method Node.rpc]).
				Your script should take this packet and send it to the requested peer over the network (which should call [method deliver_packet] with the data when it's received).
			</description>
		</signal>
	</signals>
	<constants>
	</constants>
</class>
