Client.gd 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. func _On_Connection_Succeeded():
  25. $Input.enabled = true
  26. print("Succesfully connected to game server")
  27. if not has_node("players"): return
  28. request_clients()
  29. yield(self, 'client_request')
  30. for x in current_clients:
  31. gen_objs(playerphsyics,x,$players)
  32. gen_objs(playerhud,x, $Hud/HBoxContainer)
  33. func gen_objs(arg,x, node):
  34. var instance = arg.instance()
  35. instance.name = str(x)
  36. node.add_child(instance)
  37. signal client_request
  38. var current_clients = []
  39. func request_clients():
  40. rpc_id(1,'send_clients')
  41. remote func client_data(arg):
  42. current_clients = arg
  43. emit_signal('client_request')
  44. # extra stuff
  45. var ping = 0
  46. func latency_test():
  47. rpc_id(1,'latency',OS.get_system_time_msecs())
  48. remote func returnping(arg):
  49. ping = (OS.get_system_time_msecs() - arg)
  50. func send_input(arg):
  51. rpc_id(1,'input_handler',arg)
  52. remote func player_position(arg):
  53. if not has_node("players"): return
  54. for id in arg.keys():
  55. if $players.has_node(str(id)):
  56. var node = $players.get_node(str(id))
  57. if node.global_position.x != arg[id].x:
  58. node.scale.x = -1 if node.global_position.x > arg[id].x else 1
  59. node.global_position = arg[id]
  60. remote func player_animation(arg):
  61. if not has_node("players"): return
  62. for id in arg.keys():
  63. if $players.has_node(str(id)):
  64. $players.get_node(str(id)).animation = arg[id]
  65. remote func enemies_position(arg):
  66. if not has_node('enemies'): return
  67. for i in $enemies.get_children():
  68. i.hide()
  69. for id in arg.keys().size():
  70. var node = $enemies.get_child(id)
  71. node.global_position = arg[arg.keys()[id]][0]
  72. node.animation = arg[arg.keys()[id]][1]
  73. node.show()
  74. remote func attack_anim(arg, id):
  75. if not has_node("players"): return
  76. # for i in $players.get_children():
  77. # print(i.name)
  78. $players.get_node(str(id)).get_node('weapon/AnimationPlayer').play(arg)
  79. remote func atr_update(arg):
  80. # var arg1 = 'player1'
  81. # player_atributes[arg1] = arg
  82. print(arg)
  83. if has_node('Hud/HBoxContainer/'+arg.keys()[0]):
  84. get_node('Hud/HBoxContainer/'+arg.keys()[0])._update(arg.values()[0])
  85. #onready var player_atributes = {'player1':default_atributes.duplicate()}
  86. #var default_atributes = {
  87. # 'xp':0,
  88. # 'hp':0,
  89. # 'name':'player1',
  90. # 'k':0,
  91. #}