Client.gd 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. extends Node
  2. var net = NetworkedMultiplayerENet.new()
  3. var api = MultiplayerAPI.new()
  4. var port = 2020
  5. var ip = '104.156.250.247'
  6. # Called when the node enters the scene tree for the first time.
  7. func _ready():
  8. print('connecting to port: ' + str(port))
  9. print('at ip: '+ip)
  10. net.create_client(ip,port)
  11. self.set_custom_multiplayer(api)
  12. custom_multiplayer.set_root_node(self)
  13. custom_multiplayer.set_network_peer(net)
  14. net.connect("connection_failed", self, "_On_Connection_Failed")
  15. net.connect("connection_succeeded", self, "_On_Connection_Succeeded")
  16. pass # Replace with function body.
  17. func _process(_delta):
  18. custom_multiplayer.poll()
  19. remote func ping():
  20. print('messaged received from server')
  21. remote func tokerequest():
  22. var tk = get_parent().get_node('Loginetcode').token
  23. var username = get_parent().get_node('Loginetcode').username_server
  24. rpc_id(1,'tokenreply', tk, username)
  25. func _On_Connection_Failed():
  26. print("Failed to connect to game server")
  27. var playerphsyics = preload('res://playersprite.tscn')
  28. var playerhud = preload('res://hud.tscn')
  29. export var dummy = false
  30. func _On_Connection_Succeeded():
  31. rpc_id(1,'connected_peer')
  32. remote func _On_Peer_Connected():
  33. $Input.enabled = true
  34. print("Succesfully connected to game server")
  35. if not has_node("players"): return
  36. request_clients()
  37. yield(self, 'client_request')
  38. for x in current_clients:
  39. gen_objs(playerphsyics,x,$players)
  40. gen_objs(playerhud,x, $Hud/HBoxContainer)
  41. if dummy:
  42. rpc_id(1,'makedummmy')
  43. func gen_objs(arg,x, node):
  44. if not node.has_node(str(x)):
  45. var instance = arg.instance()
  46. instance.name = str(x)
  47. node.add_child(instance)
  48. remote func _On_Player_Disconnect(arg):
  49. print(str(arg) + ' had left the server')
  50. var arr = [$players, $Hud/HBoxContainer]
  51. for x in arr:
  52. if x.has_node(str(arg)):
  53. x.get_node(str(arg)).queue_free()
  54. signal client_request
  55. var current_clients = []
  56. func request_clients():
  57. rpc_id(1,'send_clients')
  58. remote func client_data(arg):
  59. current_clients = arg
  60. emit_signal('client_request')
  61. # extra stuff
  62. var ping = 0
  63. func latency_test():
  64. rpc_id(1,'latency',OS.get_system_time_msecs())
  65. remote func returnping(arg):
  66. ping = (OS.get_system_time_msecs() - arg)
  67. func send_input(arg):
  68. rpc_id(1,'input_handler',arg)
  69. remote func player_position(arg):
  70. if not has_node("players"): return
  71. for id in arg.keys():
  72. if $players.has_node(str(id)):
  73. var node = $players.get_node(str(id))
  74. if node.global_position.x != arg[id].x:
  75. node.scale.x = -1 if node.global_position.x > arg[id].x else 1
  76. node.get_node('Label').scale.x = -1 if node.global_position.x > arg[id].x else 1
  77. node.global_position = arg[id]
  78. remote func player_animation(arg):
  79. if not has_node("players"): return
  80. for id in arg.keys():
  81. if $players.has_node(str(id)):
  82. $players.get_node(str(id)).animation = arg[id]
  83. func reconstruct_int16(bytetest):
  84. return ((bytetest[0] * 255) + bytetest[1])-32768
  85. var argbuffer
  86. var posbuffer
  87. remote func enemies_position_2(arg):
  88. if not has_node('enemies'): return
  89. for i in $enemies.get_children():
  90. i.hide()
  91. argbuffer = posbuffer
  92. posbuffer = []
  93. var sprite = []
  94. for i in range(0,arg.size(),5):
  95. var aux = Vector2( reconstruct_int16([ arg[i] , arg[i+1]]), reconstruct_int16([ arg[i+2] , arg[i+3]]) )
  96. posbuffer.append(aux)
  97. sprite.append(arg[i+4])
  98. for i in posbuffer.size():
  99. $enemies.get_child(i).show()
  100. $enemies.get_child(i).global_position = posbuffer[i]
  101. for i in sprite.size():
  102. $enemies.get_child(i).texture = get_node('../Textures').dict[sprite[i]]
  103. remote func attack_anim(arg, id):
  104. if not has_node("players"): return
  105. if not $players.has_node(str(id)): return
  106. $players.get_node(str(id)).get_node('weapon/AnimationPlayer').play(arg)
  107. remote func atr_update(arg):
  108. if has_node('Hud/HBoxContainer/'+arg.keys()[0]):
  109. get_node('Hud/HBoxContainer/'+arg.keys()[0])._update(arg.values()[0])
  110. remote func level_up(arg, id):
  111. if not has_node("players"): return
  112. $players.get_node(str(id)).level_up_anim()
  113. #powerpick
  114. remote func powerpick(arg , id):
  115. if has_node('PowerMenu'):
  116. $PowerMenu/CenterContainer.show()
  117. print(arg)
  118. $PowerMenu.showmenu(arg, id)
  119. func players_choice_is(choice, idbuffer):
  120. # print(choice)
  121. rpc_id(1,'optionpick',idbuffer, choice)