Client.gd 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. extends Node
  2. var net = NetworkedMultiplayerENet.new()
  3. var api = MultiplayerAPI.new()
  4. var port = 8081
  5. var ip = '127.0.0.1'
  6. # Called when the node enters the scene tree for the first time.
  7. func _ready():
  8. print('connecting to port: ' + str(port))
  9. net.create_client(ip,port)
  10. self.set_custom_multiplayer(api)
  11. custom_multiplayer.set_root_node(self)
  12. custom_multiplayer.set_network_peer(net)
  13. net.connect("connection_failed", self, "_On_Connection_Failed")
  14. net.connect("connection_succeeded", self, "_On_Connection_Succeeded")
  15. pass # Replace with function body.
  16. func _process(_delta):
  17. custom_multiplayer.poll()
  18. remote func ping():
  19. print('messaged received from server')
  20. func _On_Connection_Failed():
  21. print("Failed to connect to game server")
  22. var playerphsyics = preload('res://playersprite.tscn')
  23. var playerhud = preload('res://hud.tscn')
  24. export var dummy = false
  25. func _On_Connection_Succeeded():
  26. $Input.enabled = true
  27. print("Succesfully connected to game server")
  28. if not has_node("players"): return
  29. request_clients()
  30. yield(self, 'client_request')
  31. for x in current_clients:
  32. gen_objs(playerphsyics,x,$players)
  33. gen_objs(playerhud,x, $Hud/HBoxContainer)
  34. if dummy:
  35. rpc_id(1,'makedummmy')
  36. func gen_objs(arg,x, node):
  37. var instance = arg.instance()
  38. instance.name = str(x)
  39. node.add_child(instance)
  40. signal client_request
  41. var current_clients = []
  42. func request_clients():
  43. rpc_id(1,'send_clients')
  44. remote func client_data(arg):
  45. current_clients = arg
  46. emit_signal('client_request')
  47. # extra stuff
  48. var ping = 0
  49. func latency_test():
  50. rpc_id(1,'latency',OS.get_system_time_msecs())
  51. remote func returnping(arg):
  52. ping = (OS.get_system_time_msecs() - arg)
  53. func send_input(arg):
  54. rpc_id(1,'input_handler',arg)
  55. remote func player_position(arg):
  56. if not has_node("players"): return
  57. for id in arg.keys():
  58. if $players.has_node(str(id)):
  59. var node = $players.get_node(str(id))
  60. if node.global_position.x != arg[id].x:
  61. node.scale.x = -1 if node.global_position.x > arg[id].x else 1
  62. node.global_position = arg[id]
  63. remote func player_animation(arg):
  64. if not has_node("players"): return
  65. for id in arg.keys():
  66. if $players.has_node(str(id)):
  67. $players.get_node(str(id)).animation = arg[id]
  68. func reconstruct_int16(bytetest):
  69. return ((bytetest[0] * 255) + bytetest[1])-32768
  70. var argbuffer
  71. var posbuffer
  72. remote func enemies_position_2(arg):
  73. if not has_node('enemies'): return
  74. for i in $enemies.get_children():
  75. i.hide()
  76. argbuffer = posbuffer
  77. posbuffer = []
  78. for i in range(0,arg.size(),4):
  79. var aux = Vector2( reconstruct_int16([ arg[i] , arg[i+1]]), reconstruct_int16([ arg[i+2] , arg[i+3]]) )
  80. posbuffer.append(aux)
  81. for i in posbuffer.size():
  82. $enemies.get_child(i).show()
  83. $enemies.get_child(i).global_position = posbuffer[i]
  84. remote func attack_anim(arg, id):
  85. if not has_node("players"): return
  86. $players.get_node(str(id)).get_node('weapon/AnimationPlayer').play(arg)
  87. remote func atr_update(arg):
  88. if has_node('Hud/HBoxContainer/'+arg.keys()[0]):
  89. get_node('Hud/HBoxContainer/'+arg.keys()[0])._update(arg.values()[0])