-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathWorld.gd
93 lines (77 loc) · 2.08 KB
/
World.gd
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
extends Node2D
#
# [Public]
#
signal OnPlayerCreated (plr: Player)
#
# [Private]
#
var _players = []
func _input (event):
if event is InputEventKey:
if event.pressed:
if event.keycode == KEY_H:
var peer = ENetMultiplayerPeer.new()
peer.create_server(9191, 2)
multiplayer.multiplayer_peer = peer
elif event.keycode == KEY_J:
var peer = ENetMultiplayerPeer.new()
peer.create_client("localhost", 9191)
multiplayer.multiplayer_peer = peer
func _ready ():
(func ():
var onClientSend = func (cPacket: Dictionary, cPacketType: String) -> void:
var cPeer = multiplayer.get_unique_id()
var plr = getPlayer(cPeer)
if plr != null:
plr.Net_OnClientSent(cPacket, cPacketType)
var onServerReceive = func (cPeer: int, cPacket: Dictionary, cPacketType: String) -> Dictionary:
var plr = getPlayer(cPeer)
return plr.Net_OnServerReceived(cPacket, cPacketType)
var onClientReceive = func (cPeer: int, sPacket: Dictionary, sPacketType: String) -> void:
var plr = getPlayer(cPeer)
plr.Net_OnClientReceived(sPacket, sPacketType)
var send = SimpleNet.Register(
"player",
onClientSend,
onServerReceive,
onClientReceive
)
OnPlayerCreated.connect(func (plr: Player) -> void:
plr.OnMasterMoved.connect(func (dirs: Array) -> void:
send.call({
"dirs": dirs
})
)
)
).call()
createPlayer(1)
multiplayer.connected_to_server.connect(func ():
var peer = multiplayer.get_unique_id()
deletePlayer(1)
createPlayer(peer)
print("[%d] connected to server" % peer)
)
multiplayer.peer_connected.connect(func (peer: int):
if multiplayer.is_server():
createPlayer(peer)
else:
createPlayer(peer)
print("[%d] %d connected" % [
multiplayer.get_unique_id(),
peer
])
)
func deletePlayer (peer: int) -> void:
var plr = getPlayer(peer)
plr.Destroy()
_players.erase(plr)
func createPlayer (peer: int) -> void:
var plr = Player.new($Players, peer)
_players.append(plr)
OnPlayerCreated.emit(plr)
func getPlayer (peer: int) -> Player:
for plr in _players:
if plr.GetPeer() == peer:
return plr
return null