summaryrefslogtreecommitdiffstats
path: root/core/io/networked_multiplayer_peer.h
blob: a59d9367d1c5c61c31cda87dc2cfb06799ae7714 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef NETWORKED_MULTIPLAYER_PEER_H
#define NETWORKED_MULTIPLAYER_PEER_H

#include "io/packet_peer.h"

class NetworkedMultiplayerPeer : public PacketPeer {

	GDCLASS(NetworkedMultiplayerPeer,PacketPeer);

protected:
	static void _bind_methods();
public:

	enum {
		TARGET_PEER_BROADCAST=0,
		TARGET_PEER_SERVER=1
	};
	enum TransferMode {
		TRANSFER_MODE_UNRELIABLE,
		TRANSFER_MODE_UNRELIABLE_ORDERED,
		TRANSFER_MODE_RELIABLE,
	};

	enum ConnectionStatus {
		CONNECTION_DISCONNECTED,
		CONNECTION_CONNECTING,
		CONNECTION_CONNECTED,
	};


	virtual void set_transfer_mode(TransferMode p_mode)=0;
	virtual void set_target_peer(int p_peer_id)=0;

	virtual int get_packet_peer() const=0;

	virtual bool is_server() const=0;

	virtual void poll()=0;

	virtual int get_unique_id() const=0;

	virtual void set_refuse_new_connections(bool p_enable)=0;
	virtual bool is_refusing_new_connections() const=0;


	virtual ConnectionStatus get_connection_status() const=0;

	NetworkedMultiplayerPeer();
};

VARIANT_ENUM_CAST( NetworkedMultiplayerPeer::TransferMode )
VARIANT_ENUM_CAST( NetworkedMultiplayerPeer::ConnectionStatus )

#endif // NetworkedMultiplayerPeer_H