Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- var favorite_hats = ["cowboy", "alien"]
- var can_read = 1 # Only the server and owner can read
- var can_write = 1 # The server and owner can write
- # For developers to set from the outside, for example:
- # Online.nakama_host = 'nakama.example.com'
- # Online.nakama_scheme = 'https'
- var nakama_server_key: String = 'defaultkey'
- var nakama_host: String = 'localhost'
- var nakama_port: int = 7350
- var nakama_scheme: String = 'http'
- # For other scripts to access:
- var nakama_client: NakamaClient : get = get_nakama_client
- var nakama_session: NakamaSession : set = set_nakama_session
- var nakama_socket: NakamaSocket
- # Internal variable for initializing the socket.
- var _nakama_socket_connecting := false
- signal session_changed(nakama_session)
- signal session_connected(nakama_session)
- signal socket_connected(nakama_socket)
- # Read write permision
- enum ReadPermissions {NO_READ , OWNER_READ , PUBLIC_READ}
- enum WritePermissions {NO_WRITE , OWNER_WRITE}
- func _set_readonly_variable(_value) -> void:
- pass
- func _ready() -> void:
- # Don't stop processing messages from Nakama when the game is paused.
- Nakama.process_mode = PROCESS_MODE_ALWAYS
- func get_nakama_client():
- if !nakama_client:
- nakama_client = Nakama.create_client(
- nakama_server_key,
- nakama_host,
- nakama_port,
- nakama_scheme,
- Nakama.DEFAULT_TIMEOUT,
- NakamaLogger.LOG_LEVEL.ERROR
- )
- return nakama_client
- func set_nakama_session(_nakama_session: NakamaSession) -> void:
- # Close out the old socket.
- if nakama_socket:
- nakama_socket.close()
- nakama_socket = null
- nakama_session = _nakama_session
- session_changed.emit(nakama_session)
- if nakama_session and not nakama_session.is_exception() and not nakama_session.is_expired():
- session_connected.emit(nakama_session)
- func connect_nakama_socket() -> void:
- if nakama_socket != null: return
- if _nakama_socket_connecting: return
- _nakama_socket_connecting = true
- var new_socket = Nakama.create_socket_from(nakama_client)
- await new_socket.connect_async(nakama_session)
- nakama_socket = new_socket
- _nakama_socket_connecting = false
- socket_connected.emit(nakama_socket)
- func is_nakama_socket_connected() -> bool:
- return nakama_socket != null and nakama_socket.is_connected_to_host()
- func write_data_async(collection , key , data , read_permission , write_permission) -> void:
- await nakama_client.write_storage_objects_async(Online.nakama_session, [
- NakamaWriteStorageObject.new(collection , key , read_permission , write_permission , data , "*")])
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement