Advertisement
Guest User

Untitled

a guest
Feb 29th, 2024
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. extends Node
  2.  
  3. var favorite_hats = ["cowboy", "alien"]
  4. var can_read = 1 # Only the server and owner can read
  5. var can_write = 1 # The server and owner can write
  6. # For developers to set from the outside, for example:
  7. # Online.nakama_host = 'nakama.example.com'
  8. # Online.nakama_scheme = 'https'
  9. var nakama_server_key: String = 'defaultkey'
  10. var nakama_host: String = 'localhost'
  11. var nakama_port: int = 7350
  12. var nakama_scheme: String = 'http'
  13. # For other scripts to access:
  14. var nakama_client: NakamaClient : get = get_nakama_client
  15. var nakama_session: NakamaSession : set = set_nakama_session
  16. var nakama_socket: NakamaSocket
  17.  
  18. # Internal variable for initializing the socket.
  19. var _nakama_socket_connecting := false
  20.  
  21. signal session_changed(nakama_session)
  22. signal session_connected(nakama_session)
  23. signal socket_connected(nakama_socket)
  24.  
  25. # Read write permision
  26. enum ReadPermissions {NO_READ , OWNER_READ , PUBLIC_READ}
  27. enum WritePermissions {NO_WRITE , OWNER_WRITE}
  28.  
  29. func _set_readonly_variable(_value) -> void:
  30. pass
  31.  
  32. func _ready() -> void:
  33. # Don't stop processing messages from Nakama when the game is paused.
  34. Nakama.process_mode = PROCESS_MODE_ALWAYS
  35.  
  36. func get_nakama_client():
  37. if !nakama_client:
  38. nakama_client = Nakama.create_client(
  39. nakama_server_key,
  40. nakama_host,
  41. nakama_port,
  42. nakama_scheme,
  43. Nakama.DEFAULT_TIMEOUT,
  44. NakamaLogger.LOG_LEVEL.ERROR
  45. )
  46.  
  47. return nakama_client
  48.  
  49. func set_nakama_session(_nakama_session: NakamaSession) -> void:
  50. # Close out the old socket.
  51. if nakama_socket:
  52. nakama_socket.close()
  53. nakama_socket = null
  54.  
  55. nakama_session = _nakama_session
  56.  
  57. session_changed.emit(nakama_session)
  58.  
  59. if nakama_session and not nakama_session.is_exception() and not nakama_session.is_expired():
  60. session_connected.emit(nakama_session)
  61.  
  62. func connect_nakama_socket() -> void:
  63. if nakama_socket != null: return
  64. if _nakama_socket_connecting: return
  65.  
  66. _nakama_socket_connecting = true
  67.  
  68. var new_socket = Nakama.create_socket_from(nakama_client)
  69. await new_socket.connect_async(nakama_session)
  70. nakama_socket = new_socket
  71. _nakama_socket_connecting = false
  72.  
  73. socket_connected.emit(nakama_socket)
  74.  
  75. func is_nakama_socket_connected() -> bool:
  76. return nakama_socket != null and nakama_socket.is_connected_to_host()
  77.  
  78. func write_data_async(collection , key , data , read_permission , write_permission) -> void:
  79. await nakama_client.write_storage_objects_async(Online.nakama_session, [
  80. NakamaWriteStorageObject.new(collection , key , read_permission , write_permission , data , "*")])
  81. pass
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement